156780 Commits

Author SHA1 Message Date
Jakub Jelinek
2f3914287d re PR tree-optimization/82434 (-fstore-merging does not work reliably.)
PR tree-optimization/82434
	* fold-const.h (can_native_encode_type_p,
	can_native_encode_string_p): Remove.
	* fold-const.c (native_encode_int): Formatting fixes.  If ptr is NULL,
	don't encode anything, just return what would be otherwise returned.
	(native_encode_fixed, native_encode_complex, native_encode_vector):
	Likewise.
	(native_encode_string): Likewise.  Inline by hand
	can_native_encode_string_p.
	(can_native_encode_type_p): Remove.
	(can_native_encode_string_p): Remove.
	* tree-vect-stmts.c (vectorizable_store): Instead of testing just
	STRING_CSTs using can_native_encode_string_p, test all
	CONSTANT_CLASS_P values using native_encode_expr with NULL ptr.
	* gimple-ssa-store-merging.c (encode_tree_to_bitpos): Remove last
	argument from native_encode_expr.
	(rhs_valid_for_store_merging_p): Use native_encode_expr with NULL ptr.
	(pass_store_merging::execute): Don't unnecessarily look for 3 stmts,
	but just 2.

	* gcc.dg/store_merging_9.c: New test.

From-SVN: r253483
2017-10-06 11:39:07 +02:00
Richard Biener
d20eac1b41 re PR tree-optimization/82397 (qsort comparator non-negative on sorted output: 1 in vect_analyze_data_ref_accesses)
2017-10-06  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/82397
	* tree-vect-data-refs.c (dr_group_sort_cmp): Do not use
	operand_equal_p but rely on data_ref_compare_tree for detecting
	equalities.
	(vect_analyze_data_ref_accesses): Use data_ref_compare_tree
	to match up with dr_group_sort_cmp.

	* gfortran.dg/pr82397.f: New testcase.

From-SVN: r253482
2017-10-06 09:27:09 +00:00
Andreas Krebbel
ac95a65da1 PR82322: S/390: Fix vec_ceil and friends
vec_ceil and friends are expanded by vecintrin.h to __builtin_s390_vfi
which is an overloaded builtin being replaced by either
__builtin_s390_vfisb or __builtin_s390_vfidb depending on its argument
types.

The problem in this PR was that the overloaded builtin definition of
__builtin_s390_vfi was missing in s390-builtins.def.

gcc/ChangeLog:

2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/82322
	* config/s390/s390-builtins.def (s390_vfi): Define new overloaded
	builtin.
	* config/s390/s390-builtin-types.def: Regenerate.

gcc/testsuite/ChangeLog:

2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/82322
	* gcc.target/s390/zvector/pr82322.c: New test.

From-SVN: r253481
2017-10-06 09:19:46 +00:00
Andreas Krebbel
6fcb90c624 PR82317: S/390: Fix vec_min/vec_max builtins for IBM z13.
With IBM z14 a hardware instruction for floating point min and max has
been added while for IBM z13 we emulated min/max for vector double with
compare and select.  This testcase makes sure that we fall back to the
emulated variant when compiling for z13.

gcc/ChangeLog:

2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/82317
	* config/s390/s390-builtin-types.def: Regenerate.
	* config/s390/s390-builtins.def (s390_vfmaxdb_4, s390_vfmindb_4):
	Change flag from B_VXE to B_VX.
	(s390_vec_min_dbl): Remove B_VXE flag.

gcc/testsuite/ChangeLog:

2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/82317
	* gcc.target/s390/zvector/pr82317.c: New test.

From-SVN: r253480
2017-10-06 09:18:37 +00:00
Richard Biener
3d28cdc2cd re PR tree-optimization/82422 ([graphite] ICE in set_codegen_error, at graphite-isl-ast-to-gimple.c:248)
2017-10-06  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/82422
	* gcc.dg/graphite/pr82422.c: New testcase.

From-SVN: r253479
2017-10-06 08:23:56 +00:00
Richard Biener
6c7e0f7a60 re PR tree-optimization/82421 ([graphite] ICE: tree check: expected ssa_name, have integer_cst in get_rename, at graphite-isl-ast-to-gimple.c:1127)
2017-10-06  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/82421
	* gcc.dg/graphite/pr82421.c: New testcase.

From-SVN: r253478
2017-10-06 08:20:58 +00:00
Jakub Jelinek
4e34b338f7 re PR c/82437 (false-positive -Wtautological-compare warning with -std=gnu89)
PR c/82437
	* c-warn.c (warn_tautological_bitwise_comparison): Instead of
	using to_widest use wide_int with the larger of the two precisions.

	* c-c++-common/Wtautological-compare-6.c: New test.

From-SVN: r253476
2017-10-06 09:11:25 +02:00
Richard Biener
bd8d431f44 graphite-isl-ast-to-gimple.c: Include ssa.h and tree-ssa.h.
2017-10-06  Richard Biener  <rguenther@suse.de>

	* graphite-isl-ast-to-gimple.c: Include ssa.h and tree-ssa.h.
	(translate_isl_ast_to_gimple::translate_pending_phi_nodes,
	translate_isl_ast_to_gimple::is_valid_rename,
	translate_isl_ast_to_gimple::get_rename,
	translate_isl_ast_to_gimple::get_def_bb_for_const,
	translate_isl_ast_to_gimple::get_new_name,
	translate_isl_ast_to_gimple::collect_all_ssa_names,
	translate_isl_ast_to_gimple::copy_loop_phi_args,
	translate_isl_ast_to_gimple::collect_all_ssa_names,
	translate_isl_ast_to_gimple::copy_loop_phi_args,
	translate_isl_ast_to_gimple::copy_loop_phi_nodes,
	translate_isl_ast_to_gimple::add_close_phis_to_merge_points,
	translate_isl_ast_to_gimple::add_close_phis_to_outer_loops,
	translate_isl_ast_to_gimple::copy_loop_close_phi_args,
	translate_isl_ast_to_gimple::copy_loop_close_phi_nodes,
	translate_isl_ast_to_gimple::copy_cond_phi_args,
	translate_isl_ast_to_gimple::copy_cond_phi_nodes,
	translate_isl_ast_to_gimple::edge_for_new_close_phis,
	translate_isl_ast_to_gimple::add_phi_arg_for_new_expr,
	translate_isl_ast_to_gimple::rename_uses,
	translate_isl_ast_to_gimple::rename_all_uses): Remove.
	(translate_isl_ast_to_gimple::get_rename_from_scev): Simplify.
	(set_rename_for_each_def): Likewise.
	(graphite_copy_stmts_from_block): Handle debug stmt resetting
	here.  Handle rewriting SCEV analyzable uses here.
	(copy_bb_and_scalar_dependences): Generate code for PHI
	copy-in/outs.
	(graphite_regenerate_ast_isl): Adjust.
	* graphite-scop-detection.c (trivially_empty_bb_p): Move to sese.[ch].
	(add_write, add_read): New functions.
	(build_cross_bb_scalars_def): Use it and simplify.
	(build_cross_bb_scalars_use): Likewise.
	(graphite_find_cross_bb_scalar_vars): Inline into...
	(try_generate_gimple_bb): ...here.  Add dependences for PHIs,
	simulating out-of-SSA.  Compute liveout and add dependencies.
	(build_scops): Force an empty entry block.
	* sese.h (sese_info_t::liveout, sese_info_t::debug_liveout): New
	members.
	(sese_build_liveouts): Declare.
	(sese_trivially_empty_bb_p): Likewise.
	* sese.c (sese_build_liveouts_bb): Properly handle PHIs,
	compute liveout and debug_liveout.
	(sese_bad_liveouts_use): Remove.
	(sese_reset_debug_liveouts_bb): Likewise.
	(sese_reset_debug_liveouts): Rewrite in terms of debug_liveout.
	(sese_build_liveouts): Build liveout and debug_liveout and store
	it in region.
	(new_sese_info): Adjust.
	(free_sese_info): Likewise.
	(sese_insert_phis_for_liveouts): Reset debug stmts from here,
	do not build liveout here.
	(move_sese_in_condition): Adjust region entry.
	(scev_analyzable_p): Match up with chrec_apply requirements.
	(sese_trivially_empty_bb_p): New.
	* tree-into-ssa.c (get_reaching_def): Properly support generating
	default-defs for incremental rewrite of anonymous names.

	* gcc.dg/graphite/id-15.c: No longer expect a code generation error.
	* gcc.dg/graphite/id-16.c: Likewise.
	* gcc.dg/graphite/pr46168.c: Likewise.
	* gcc.dg/graphite/pr68756.c: Likewise.
	* gcc.dg/graphite/pr69728.c: Likewise.
	* gcc.dg/graphite/pr71575-2.c: Likewise.
	* gcc.dg/graphite/pr77362.c: Likewise.
	* gcc.dg/graphite/pr81373.c: Likewise.
	* gcc.dg/graphite/run-id-pr67700-1.c: Likewise.
	* gfortran.dg/graphite/interchange-1.f: Likewise.
	* gfortran.dg/graphite/pr42334-1.f: Likewise.
	* gfortran.dg/graphite/pr42393-1.f90: Likewise.
	* gfortran.dg/graphite/pr42393.f90: Likewise.
	* gfortran.dg/graphite/pr47019.f: Likewise.
	* gfortran.dg/graphite/id-17.f: Likewise.
	* gfortran.dg/graphite/id-19.f: Likewise.
	* gfortran.dg/graphite/run-id-2.f90: Likewise.
	* gfortran.dg/graphite/pr42326-1.f90: Likewise.
	* gfortran.dg/graphite/pr42326.f90: Likewise.
	* gfortran.dg/graphite/pr68550-2.f90: Likewise.
	* gfortran.dg/graphite/pr29581.f90: Likewise.  No longer expect
	a code generation error.
	* gfortran.dg/graphite/run-id-3.f90: Likewise.
	* gfortran.dg/graphite/pr29832.f90: Likewise.

From-SVN: r253475
2017-10-06 07:06:17 +00:00
Richard Biener
57cfa17228 graphite-sese-to-poly.c (extract_affine): For casts increasing precision do not perform modulo reduction.
2017-10-06  Richard Biener  <rguenther@suse.de>

	* graphite-sese-to-poly.c (extract_affine): For casts increasing
	precision do not perform modulo reduction.

From-SVN: r253474
2017-10-06 07:03:51 +00:00
Richard Biener
31bee96479 re PR tree-optimization/82436 (465.tonto ICE in vect_get_slp_vect_defs, at tree-vect-slp.c:3410)
2017-10-06  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/82436
	* tree-vect-slp.c (vect_supported_load_permutation_p): More
	conservatively choose the vectorization factor when checking
	whether we can perform the required load permutation.
	(vect_transform_slp_perm_load): Assert when we may not fail.

	* gcc.dg/vect/pr82436.c: New testcase.

From-SVN: r253473
2017-10-06 07:03:23 +00:00
GCC Administrator
604d1669d6 Daily bump.
From-SVN: r253472
2017-10-06 00:16:24 +00:00
Ian Lance Taylor
098d773ec7 compiler: drop special handling of unexported func/var assembler names
For example, for the package math/big, we used to generate unexported
    names as `big.trim` and exported names as `math_big.NewInt`.  After
    this change we will use `math_big` consistently.
    
    Reviewed-on: https://go-review.googlesource.com/68651

From-SVN: r253468
2017-10-05 23:25:51 +00:00
Segher Boessenkool
b8888a0fe4 rs6000: Fix an error message in sysv4.h
While looking at PR82411, I got the error message

	error: '-msdata=-mcall' and 'eabi-linux' are incompatible

which caused some head-scratching.


	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Correct error
	message for incompatible -msdata=* and -mcall-* options.

From-SVN: r253467
2017-10-05 23:55:50 +02:00
Jason Merrill
b9760b03aa * call.c (convert_arg_to_ellipsis): Use the result of force_rvalue.
From-SVN: r253465
2017-10-05 17:26:50 -04:00
Jonathan Wakely
e58683fb9f Fix new testsuite failure on newlib targets
* testsuite/20_util/to_chars/1.cc: Add dg-require-string-conversions.

From-SVN: r253463
2017-10-05 21:26:08 +01:00
Bernd Edlinger
4bc4b2b482 c-pretty-print.c (pp_c_parameter_type_list): Print ...
2017-10-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* c-pretty-print.c (pp_c_parameter_type_list): Print ... for variadic
	functions.

testsuite:
2017-10-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* gcc.dg/Wincompatible-pointer-types-1.c: New test.

From-SVN: r253460
2017-10-05 20:08:27 +00:00
Ian Lance Taylor
9add86be80 compiler: centralize all symbol name handling
Consolidate all symbol name handling into the new file names.cc.  This
    is intended to define all the names that will appear in the generated
    assembly code.  Names that will not appear in the assembly code, such
    as local variable names or label names, remain where they are.
    
    This consolidation is not intended to change any of the existing
    symbol names.  Tested by building without and without this patch and
    comparing the libgo symbol table.
    
    Reviewed-on: https://go-review.googlesource.com/68310

	* Make-lang.in (GO_OBJS): Add go/names.o.

From-SVN: r253458
2017-10-05 17:20:30 +00:00
Ian Lance Taylor
a978e26b83 elf.c (elf_zlib_fetch): Change pval argument to uint64_t *.
* elf.c (elf_zlib_fetch): Change pval argument to uint64_t *.
	Read a four byte integer.
	(elf_zlib_inflate): Change val to uint64_t.  Align pin to a 32-bit
	boundary before ever calling elf_zlib_fetch.
	* ztest.c (test_large): Simplify print statements a bit.

From-SVN: r253456
2017-10-05 16:39:38 +00:00
Eric Botcazou
8e473f4f44 re PR ada/82393 (Compilation error on cygwin64)
PR ada/82393
	* mingw32.h (_O_U8TEXT, _O_U16TEXT, _O_WTEXT): Delete.
	* sysdep.c (__gnat_set_mode ): Use DJGPP version for Cygwin.

From-SVN: r253454
2017-10-05 16:32:21 +00:00
Jan Hubicka
10c98117e8 i386.c (ia32_multipass_dfa_lookahead): Default to issue rate for post-reload scheduling.
* i386.c (ia32_multipass_dfa_lookahead): Default to issue rate
	for post-reload scheduling.

From-SVN: r253453
2017-10-05 16:29:42 +00:00
Tamar Christina
592fbfb5fb slp-perm-9.c: Use vect_sizes_16B_8B.
gcc/testsuite/
2017-10-05  Tamar Christina  <tamar.christina@arm.com>

	* gcc.dg/vect/slp-perm-9.c: Use vect_sizes_16B_8B.
	* lib/target-supports.exp (vect_sizes_16B_8B): New.

gcc/
2017-10-05  Tamar Christina  <tamar.christina@arm.com>

	* doc/sourcebuild.texi (vect_sizes_16B_8B, vect_sizes_32B_16B): New.

From-SVN: r253452
2017-10-05 15:17:39 +00:00
Tamar Christina
0322303e26 vect-align-1.c: Fix vect_hw_misalign condition.
2017-09-28  Tamar Christina  <tamar.christina@arm.com>

	* gcc.dg/vect/vect-align-1.c: Fix vect_hw_misalign condition.
	* gcc.dg/vect/vect-align-2.c: Likewise.
	* gcc.dg/vect/vect-multitypes-1.c: Likewise

From-SVN: r253451
2017-10-05 15:13:31 +00:00
Jan Hubicka
0086058964 i386.c (znver1_cost): Set branch_cost to 3 (instead of 2) to improve monte carlo in scimark.
* i386.c (znver1_cost): Set branch_cost to 3 (instead of 2)
	to improve monte carlo in scimark.

From-SVN: r253449
2017-10-05 15:00:25 +00:00
Jan Hubicka
a813c28053 i386.c (ix86_size_cost, [...]): Set reassociation width to 1.
* i386.c (ix86_size_cost, i386_cost, i486_cost, pentium_cost,
	lakemont_cost, pentiumpro_cost, geode_cost, k6_cost,
	athlon_cost, k8_cost, amdfam10_cost, btver1_cost, btver2_cost,
	pentium4_cost, nocona_cost): Set reassociation width to 1.
	(bdver1_cost, bdver2_cost, bdver3_cost, bdver4_cost): Set reassociation
	width to 2 for fp operations and 1 otherwise.
	(znver1_cost): Set scalar reassoc width to 4 and vector to 3 and 6
	for int and fp.
	(atom_cost): Set reassociation width to 2.
	(slm_cost, generic_cost): Set fp reassociation width to 2 and 1 otherwise.
	(intel_cost): Set fp reassociation width to 4 and 1 otherwise.
	(core_cost): Set fp reassociation width to 4 and vector to 2.
	(ix86_reassociation_width): Rewrite using cost table; special case
	plus/minus on Zen; honor X86_TUNE_SSE_SPLIT_REGS
	and TARGET_AVX128_OPTIMAL.
	* i386.h (processor_costs): Add
	reassoc_int, reassoc_fp, reassoc_vec_int, reassoc_vec_fp.
	(TARGET_VECTOR_PARALLEL_EXECUTION, TARGET_REASSOC_INT_TO_PARALLEL,
	TARGET_REASSOC_FP_TO_PARALLEL): Remove.
	* x86-tune.def (X86_TUNE_REASSOC_INT_TO_PARALLEL): Remove.
	(X86_TUNE_REASSOC_FP_TO_PARALLEL): Remove.
	(X86_TUNE_VECTOR_PARALLEL_EXECUTION):  Remove.

From-SVN: r253448
2017-10-05 14:56:32 +00:00
Nathan Sidwell
807e3be2b8 Re: [PATCH] C++ warning on vexing parse
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00249.html
	gcc/cp/
	Warn on MVP declarations
	* cp-tree.h (struct cp_declarator): Add parenthesized field.
	* decl.c (grokdeclarator): Warn about unnecessary parens.
	* parser.c (make_declarator): Init parenthesized field.
	(cp_parser_direct_declarator): Set parenthesized field.

	gcc/
	* doc/invoke.texi (Wparentheses): Document C++ MVP behaviour.

	gcc/testsuite/
	* g++.dg/warn/mvp.C: New.

From-SVN: r253446
2017-10-05 13:27:37 +00:00
Nathan Sidwell
87e3d7cfb5 [C++ PATCH] Kill IDENTIFIER_GLOBAL_VALUE
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00239.html
	Kill IDENTIFIER_GLOBAL_VALUE, SET_IDENTIFIER_GLOBAL_VALUE
	* cp-tree.h (IDENTIFIER_GLOBAL_VALUE,
	SET_IDENTIFIER_GLOBAL_VALUE): Delete.
	* name-lookup.h (set_global_binding): Remove NAME parm.
	(get_global_binding): New inline fn.
	* name-lookup.c (set_global_binding): Remove NAME parm. Adjust.
	(identifier_global_value): Move to ...
	* cp-objcp-common.c (identifier_global_value): ... here.
	* class.c (build_ctor_vtbl_group, build_vtbl_initializer): Adjust.
	* decl.c (record_builtin_type, expand_static_init,
	grokdeclarator): Adjust.
	* decl2.c (get_guard, get_local_tls_init_fn, get_tls_init_fn,
	get_tls_wrapper_fn, maybe_warn_sized_delete): Adjust.
	* except.c (declare_library_fn, build_throw): Adjust.
	* init.c (throw_bad_array_length): Adjust.
	* rtti.c (throw_bad_cast, throw_bad_typeid, get_tinfo_decl): Adjust.

From-SVN: r253444
2017-10-05 12:10:55 +00:00
Tamar Christina
9eabdc5e16 arm.c (arm_test_fpu_data): New.
2017-10-05  Tamar Christina  <tamar.christina@arm.com>

	* config/arm/arm.c (arm_test_fpu_data): New.
	(arm_run_selftests): Call arm_test_fpu_data.

From-SVN: r253443
2017-10-05 11:38:06 +00:00
H.J. Lu
bf4df9e6b4 Add sanitizer_linux_x86_64.lo if __x86_64__ is defined by $CC
Since size of "void *" is 4 bytes for x32, check if __x86_64__ is defined
by $CC, instead of

if test x$ac_cv_sizeof_void_p = x8; then

to decide wether sanitizer_linux_x86_64.lo should be used.

	PR sanitizer/82379
	* configure.tgt (SANITIZER_COMMON_TARGET_DEPENDENT_OBJECTS): Set
	to sanitizer_linux_x86_64.lo if __x86_64__ is defined by $CC.

From-SVN: r253441
2017-10-05 03:39:32 -07:00
Nathan Sidwell
7a852b59df Re: [C++ PATCH] Move mangling alias out of ::
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00230.html
	* decl2.c (record_mangling): Fix spello and formatting from
	previous patch.

From-SVN: r253440
2017-10-05 10:16:38 +00:00
Tom de Vries
8fe3ed4c10 Fix libgomp.oacc-c-c++-common/{loop-red-g-1,routine-g-1}.c for non-nvidia devices
2017-10-05  Tom de Vries  <tom@codesourcery.com>

	* testsuite/libgomp.oacc-c-c++-common/loop-red-g-1.c (main): Remove
	vector_length(32) clause from acc parallel directive.
	* testsuite/libgomp.oacc-c-c++-common/routine-g-1.c (main): Same.

From-SVN: r253439
2017-10-05 08:31:46 +00:00
Jakub Jelinek
05e1eaeb1b pr82374.c (SIZE): Change from 1G to 1M to make it ilp32 friendly.
* gcc.dg/gomp/pr82374.c (SIZE): Change from 1G to 1M to make it ilp32
	friendly.

From-SVN: r253438
2017-10-05 10:09:34 +02:00
Richard Biener
bb61e6e3d3 id-17.f: Fix typo.
2017-10-05  Richard Biener  <rguenther@suse.de>

	* gfortran.dg/graphite/id-17.f: Fix typo.
	* gfortran.dg/graphite/id-19.f: Likewise.
	* gfortran.dg/graphite/pr29832.f90: Likewise.
	* gfortran.dg/graphite/pr42326-1.f90: Likewise.
	* gfortran.dg/graphite/pr42326.f90: Likewise.
	* gfortran.dg/graphite/pr68550-2.f90: Likewise.
	* gfortran.dg/graphite/run-id-2.f90: Likewise.
	* gfortran.dg/graphite/run-id-3.f90: Likewise.

From-SVN: r253437
2017-10-05 07:45:42 +00:00
GCC Administrator
5f8c28a6ce Daily bump.
From-SVN: r253436
2017-10-05 00:16:18 +00:00
Paolo Carlini
5b93c0eede re PR c++/80471 ((gcc extension) Forwarding-reference auto function parameters do not follow the same rules as template functions or generic lambdas)
2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80471
	* g++.dg/cpp1y/pr80471.C: New.

From-SVN: r253432
2017-10-04 21:25:20 +00:00
Paolo Carlini
25139006e5 re PR c++/78131 (Inconsistent evaluation for constexpr lambdas in templates between static_assert, if constexpr(…) and constexpr variables)
2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/78131
	* g++.dg/cpp1z/constexpr-lambda17.C: New.

From-SVN: r253431
2017-10-04 20:58:52 +00:00
Paolo Carlini
968e56bf7f re PR c++/78018 ([C++14] "internal compiler error: Segmentation fault" with templates and lambdas)
2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/78018
	* g++.dg/cpp1y/lambda-generic-78018.C: New.

From-SVN: r253430
2017-10-04 20:34:03 +00:00
Nathan Sidwell
a1440fa8fa [PATCH] remove some unneeded parens
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00200.html
	* toplev.c (toplev::main): Remove excess parens on pretty_printer
	decl.
	* caller-save.c (insert_save): Remove excess parens on TO_SAVE parm.

From-SVN: r253427
2017-10-04 17:58:28 +00:00
Nathan Sidwell
e07b83663e [C++ PATCH] give builtin types consistent name
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00201.html
	Give builtin types the correct name.
	* name-lookup.c (set_global_binding): Assert name is DECL_NAME.
	* decl.c (record_builtin_type): Reimplement, use new TYPE_DECL for
	rname.

From-SVN: r253426
2017-10-04 17:54:59 +00:00
Jason Merrill
d21f2166b0 PR c++/82406 - C++17 error with noexcept function type
* g++.dg/ext/attrib54.C: New.

From-SVN: r253425
2017-10-04 13:47:51 -04:00
Paolo Carlini
fb4ccfed86 re PR c++/71946 (asm in toplevel lambda function rejected)
/cp
2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>
	    Andrew Pinski  <apinski@cavium.com>

	PR c++/71946
	* parser.c (cp_parser_lambda_body): Set parser->in_function_body.

/testsuite
2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>
	    Andrew Pinski  <apinski@cavium.com>

	PR c++/71946
	* g++.dg/cpp0x/lambda/lambda-asm1.C: New.
	* g++.dg/cpp0x/lambda/lambda-stmtexpr1.C: Likewise.

Co-Authored-By: Andrew Pinski <apinski@cavium.com>

From-SVN: r253423
2017-10-04 17:21:21 +00:00
Sudakshina Das
ab6501d713 [PATCH][AArch64] Add BIC-imm and ORR-imm SIMD pattern
This patch adds the support for BIC (vector, immediate) and
ORR (vector, immediate) SIMD patterns to the AArch64 backend.

Committed on behalf of Sudi Das.

Reviewed-by: Richard Earnshaw <Richard.Earnshaw@arm.com>
Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>

gcc/

	* config/aarch64/aarch64-protos.h (enum simd_immediate_check): New
	check type for aarch64_simd_valid_immediate.
	(aarch64_output_simd_mov_immediate): Update prototype.
	(aarch64_simd_valid_immediate): Update prototype.
	* config/aarch64/aarch64-simd.md (orr<mode>3): modified pattern to add
	support for ORR-immediate.
	(and<mode>3): modified pattern to add support for BIC-immediate.
	* config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Function
	now checks for valid immediate for BIC and ORR based on new enum
	argument.
	(aarch64_output_simd_mov_immediate): Function now used to output
	BIC/ORR imm as well based on new enum argument.
	* config/aarch64/constraints.md (Do): New vector immediate constraint.
	(Db) : Likewise.
	* config/aarch64/predicates.md (aarch64_reg_or_orr_imm): New predicate.
	(aarch64_reg_or_bic_imm): Likewise.

gcc/testsuite/

	* gcc.target/aarch64/bic_imm_1.c: New test.
	* gcc.target/aarch64/orr_imm_1.c: Likewise.

From-SVN: r253422
2017-10-04 16:59:40 +00:00
Nathan Sidwell
b419102c12 [C++ PATCH] Move mangling alias out of ::
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00199.html
	gcc/cp/
	Move mangling aliases out of global namespace.
	* cp-tree.h (record_mangling): New.
	(maybe_remove_implicit_alias): Delete.
	* decl2.c (mangled_decls): New hash map.
	(generate_mangling_alias): Reimplement using mangled_decls.
	(record_mangling): New.
	* mangle.c (decl_implicit_alias_p,
	maybe_remove_implicit_alias): Delete.
	(mangle_decl): Use record_mangling.
	* name-lookup.c (supplement_binding_1): Remove
	maybe_remove_implicit_alias check.

	* call.c (convert_arg_to_ellipsis): Correct comment about passing
	by reference.

	gcc/testsuite/
	* g++.dg/abi/mangle41.C: Adjust diagnostics.

	libcc1/
	* libcp1plugin.cc (supplement_binding): Don't use
	maybe_remove_implicit_alias.

From-SVN: r253421
2017-10-04 16:55:54 +00:00
Andreas Krebbel
baf20d8df2 S/390: Fix mode in vector merge pattern.
vec_unpacks_hi_v4sf/vec_unpacks_lo_v4sf expand vec_mergeh and vec_mergel
patterns also for z13 with V4SF modes so the patterns should better
accept this.  Fixed by changing the mode iterator to V_128_NOSINGLE
which accepts V4SF unconditionally.

gcc/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/vx-builtins.md ("vec_mergeh<mode>")
	("vec_mergel<mode>"): Change mode iterator to V_128_NOSINGLE.

From-SVN: r253420
2017-10-04 16:43:09 +00:00
Wilco Dijkstra
748d9390b9 Revert r253399:
PR rtl-optimization/82396
	* haifa-sched.c (autopref_multipass_init): Simplify
	initialization.
	(autopref_rank_data): Simplify sort order.
	* sched-int.h (autopref_multipass_data_): Remove
	multi_mem_insn_p, min_offset and max_offset.

From-SVN: r253419
2017-10-04 16:40:44 +00:00
Jakub Jelinek
420db57431 re PR c++/82373 (syntax error in error message)
PR c++/82373
	* error.c (dump_function_decl): If show_return, call dump_type_suffix
	on the same return type dump_type_prefix has been called on.

	* g++.dg/cpp1y/pr82373.C: New test.

From-SVN: r253418
2017-10-04 18:15:36 +02:00
Petr Ovtchenkov
4e91452412 2017-10-04 Petr Ovtchenkov <ptr@void-ptr.info>
François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/streambuf_iterator.h
	(istreambuf_iterator<>::operator*()): Do not capture iterator state
	in Debug assertion.
	(istreambuf_iterator<>::operator++()): Likewise and remove _M_sbuf check.
	(istreambuf_iterator<>::operator++(int)): Likewise.
	(istreambuf_iterator<>::_M_get()): Remove _M_c assignment.
	(istreambuf_iterator<>::_S_is_eof()): New.
	(istreambuf_iterator<>::_M_at_eof()): Adapt, use latter.
	(find(istreambuf_iterator<>, istreambuf_iterator<>, _CharT)):
	Return an iterator with _M_c set to eof to capture streambuf state
	on evaluation.
	(testsuite/24_iterators/istreambuf_iterator/2.cc): Add checks.

Co-Authored-By: François Dumont <fdumont@gcc.gnu.org>

From-SVN: r253417
2017-10-04 16:15:18 +00:00
Jason Merrill
6411847fcf PR c++/81525 - broken handling of auto in generic lambda.
* pt.c (tsubst_decl) [VAR_DECL]: Use strip_innermost_template_args.

From-SVN: r253414
2017-10-04 11:37:09 -04:00
David Malcolm
8139a48e67 C: underline parameters in mismatching function calls
In r253096
  ("C++: underline parameters in mismatching function calls"
  aka 5d78d423a5f7a1d135c7bb678e82007678d1313c
    https://gcc.gnu.org/ml/gcc-patches/2017-09/msg01546.html )
I updated the C++ FE's handling of mismatched types in function calls
so that it underlines the pertinent param of the callee, rather than
just the function name.

The following patch does the same for the C frontend.

Given e.g. this type mismatch:

  extern int callee (int one, const char *two, float three);

  int caller (int first, int second, float third)
  {
    return callee (first, second, third);
  }

the C FE currently emits (trunk):

  test.c: In function 'caller':
  test.c:5:25: warning: passing argument 2 of 'callee' makes pointer from
  integer without a cast [-Wint-conversion]
     return callee (first, second, third);
                           ^~~~~~
  test.c:1:12: note: expected 'const char *' but argument is of type 'int'
   extern int callee (int one, const char *two, float three);
              ^~~~~~

whereas with this patch the note underlines the pertinent param of
the callee:

  test.c: In function 'caller':
  test.c:5:25: warning: passing argument 2 of 'callee' makes pointer from
  integer without a cast [-Wint-conversion]
     return callee (first, second, third);
                           ^~~~~~
  test.c:1:41: note: expected 'const char *' but argument is of type 'int'
   extern int callee (int one, const char *two, float three);
                               ~~~~~~~~~~~~^~~

making the problem more obvious to the user.

As with the C++ patch, the patch:

(a) updates the locations of the params to cover the range of all
of their tokens, putting the caret on the first character of the
param name (if present), otherwise at the start of the first token
(doing so requires adding a last_token_location to the c_parser, so
we can determine the location of the last consumed token).

(b) updates the "note" to use the param location, rather than the
fndecl location

gcc/c/ChangeLog:
	* c-decl.c (push_parm_decl): Store c_parm's location into the
	PARAM_DECL.
	(build_c_parm): Add "loc" param and store it within the c_parm.
	* c-parser.c (struct c_parser): Add "last_token_location" field.
	(c_parser_consume_token): Store location of the token into the
	new field.
	(c_parser_declaration_or_fndef): Store params into DECL_ARGUMENTS
	when handling a FUNCTION_DECL, if it doesn't already have them.
	(c_parser_parameter_declaration): Generate a location for the
	parameter, and pass it to the call to build_c_parm.
	* c-tree.h (struct c_parm): Add field "loc".
	(build_c_parm): Add location_t param.
	* c-typeck.c (get_fndecl_argument_location): New function.
	(inform_for_arg): New function.
	(convert_for_assignment): Use inform_for_arg when dealing with
	ic_argpass.

gcc/testsuite/ChangeLog:
	* gcc.dg/diagnostic-range-bad-called-object.c: Update expected
	underlining for param.
	* gcc.dg/param-type-mismatch.c: Update expected results to reflect
	highlighting of parameters; add test coverage for trivial
	parameter decls, and for callback parameters.
	* gcc.dg/pr68533.c: Update location of two errors to reflect
	location of params.

From-SVN: r253411
2017-10-04 14:10:59 +00:00
Nathan Sidwell
bed8a1e4d6 call.c (convert_arg_to_ellipsis): Correct comment about passing by reference.
* call.c (convert_arg_to_ellipsis): Correct comment about passing
	by reference.

From-SVN: r253410
2017-10-04 14:06:41 +00:00
David Malcolm
6069fe7287 jit: implement gcc_jit_context_new_rvalue_from_vector
This patch implements a new API entrypoint:

/* Build a vector rvalue from an array of elements.

   "vec_type" should be a vector type, created using gcc_jit_type_get_vector.

   This API entrypoint was added in LIBGCCJIT_ABI_10; you can test for its
   presence using
     #ifdef LIBGCCJIT_HAVE_gcc_jit_context_new_rvalue_from_vector
*/
extern gcc_jit_rvalue *
gcc_jit_context_new_rvalue_from_vector (gcc_jit_context *ctxt,
                                        gcc_jit_location *loc,
                                        gcc_jit_type *vec_type,
                                        size_t num_elements,
                                        gcc_jit_rvalue **elements);


gcc/jit/ChangeLog:
	* docs/cp/topics/expressions.rst (Vector expressions): New
	section.
	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_10): New ABI tag.
	* docs/topics/expressions.rst (Vector expressions): New section.
	* docs/topics/types.rst (gcc_jit_type_get_vector): Add link to
	gcc_jit_context_new_rvalue_from_vector.
	* jit-common.h (gcc::jit:recording::vector_type): New forward
	decl.
	* jit-playback.c
	(gcc::jit::playback::context::new_rvalue_from_vector): New method.
	* jit-playback.h
	(gcc::jit::playback::context::new_rvalue_from_vector): New method.
	* jit-recording.c: In namespace gcc::jit::
	(class comma_separated_string): New class.
	(comma_separated_string::comma_separated_string): New ctor,
	adapted from recording::call::make_debug_string.
	(comma_separated_string::~comma_separated_string): New dtor.
	In namespace gcc::jit::recording::
	(context::new_rvalue_from_vector): New method.
	(type::get_vector): Update for renaming of memento_of_get_vector.
	(class memento_of_get_vector): Rename to...
	(class vector_type): ..this.
	(memento_of_new_rvalue_from_vector::memento_of_new_rvalue_from_vector):
	New ctor.
	(memento_of_new_rvalue_from_vector::replay_into): New method.
	(memento_of_new_rvalue_from_vector::visit_children): New method.
	(memento_of_new_rvalue_from_vector::make_debug_string): New
	method.
	(memento_of_new_rvalue_from_vector::write_reproducer): New method.
	(call::make_debug_string): Split out arg-printing code into ctor
	for comma_separated_string.
	* jit-recording.h: In namespace gcc::jit::recording::
	(context::new_rvalue_from_vector): New method.
	(type::dyn_cast_vector_type): New virtual function.
	(class memento_of_get_vector): Rename to...
	(class vector_type): ...this.
	(vector_type::unqualified): Remove this vfunc override in favor
	of...
	(vector_type::get_element_type): ...this new method.
	(vector_type::get_num_units): New method.
	(vector_type::dyn_cast_vector_type): New vfunc override.
	(class memento_of_new_rvalue_from_vector): New class.
	* libgccjit++.h (gccjit::context::new_rvalue): Add overload for
	vector of rvalue.
	* libgccjit.c (gcc_jit_context_new_binary_op): Strip off type
	qualifications when checking that both operands have same type.
	(gcc_jit_context_new_rvalue_from_vector): New API entrypoint.
	* libgccjit.h
	(LIBGCCJIT_HAVE_gcc_jit_context_new_rvalue_from_vector): New
	macro.
	(gcc_jit_context_new_rvalue_from_vector): New API entrypoint.
	* libgccjit.map (LIBGCCJIT_ABI_10): New ABI tag.

gcc/testsuite/ChangeLog:
	* jit.dg/test-expressions.c (make_test_of_vectors): New function.
	(create_code): Call it.
	* jit.dg/test-vector-rvalues.cc: New test case.

From-SVN: r253409
2017-10-04 13:41:01 +00:00