1. 24 Sep, 2019 5 commits
    • [PR 91831] Copy PARM_DECLs of artificial thunks · 231f7546
      Hi,
      
      I am quite surprised I did not catch this before but the new
      ipa-param-manipulation does not copy PARM_DECLs when creating
      artificial thinks (I think it originally did but then I somehow
      removed during one cleanups).  Fixed by adding the capability at the
      natural place.  It is triggered whenever context of the PARM_DECL that
      is just taken from the original function does not match the target
      fndecl rather than by some constructor parameter because in such
      situation it is always the correct thing to do.
      
      Bootstrapped and tested on x86_64-linux.  OK for trunk?
      
      Thanks,
      
      Martin
      
      2019-09-24  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/91831
      	* ipa-param-manipulation.c (carry_over_param): Make a method of
      	ipa_param_body_adjustments, remove now unnecessary argument.  Also copy
      	in case of a context mismatch.
      	(ipa_param_body_adjustments::common_initialization): Adjust call to
      	carry_over_param.
      	* ipa-param-manipulation.h (class ipa_param_body_adjustments): Add
      	private method carry_over_param.
      
      	testsuite/
      	* g++.dg/ipa/pr91831.C: New test.
      
      From-SVN: r276094
      Martin Jambor committed
    • [PR 91832] Do not ICE on negative offsets in ipa-sra · 5a4d0da4
      Hi,
      
      IPA-SRA asserts that an offset obtained from get_ref_base_and_extent
      is non-negative (after it verifies it is based on a parameter).  That
      assumption is invalid as the testcase shows.  One could probably also write a
      testcase with defined behavior, but unless I see a reasonable one
      where the transformation is really desirable, I'd like to just punt on
      those cases.
      
      Bootstrapped and tested on x86_64-linux.  OK for trunk?
      
      Thanks,
      
      Martin
      
      2019-09-24  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/91832
      	* ipa-sra.c (scan_expr_access): Check that offset is non-negative.
      
      	testsuite/
      	* gcc.dg/ipa/pr91832.c: New test.
      
      From-SVN: r276093
      Martin Jambor committed
    • tree-ssa-sccvn.c (vn_reference_lookup_3): Valueize MEM_REF base. · 3f9e08f5
      2019-09-24  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-sccvn.c (vn_reference_lookup_3): Valueize MEM_REF
      	base.
      
      	* gcc.dg/torture/20190924-1.c: New testcase.
      
      From-SVN: r276092
      Richard Biener committed
    • PR libstdc++/91871 fix Clang warnings in testsuite · 47d17f70
      	PR libstdc++/91871
      	* testsuite/util/testsuite_hooks.h
      	(conversion::iterator_to_const_iterator()): Do not return an invalid
      	iterator. Test direct-initialization and direct-list-initialization
      	as well as implicit conversion.
      
      From-SVN: r276091
      Jonathan Wakely committed
    • Daily bump. · 18b86eda
      From-SVN: r276089
      GCC Administrator committed
  2. 23 Sep, 2019 22 commits
    • GNAT/testsuite: Pass the `ada' option to target compilation · 0ca2b1f3
      Pass the `ada' option to DejaGNU's `target_compile' procedure, which by
      default calls `default_target_compile', so that it arranges for an Ada
      compilation rather the default of C.  We set the compiler to `gnatmake'
      manually here, so that part of the logic in `default_target_compile' is
      not used, but it affects other settings, such as the use of `adaflags'.
      
      	gcc/testsuite/
      	* lib/gnat.exp (gnat_target_compile): Pass the `ada' option to
      	`target_compile'.
      
      From-SVN: r276085
      Maciej W. Rozycki committed
    • RS6000, add xxswapd support · a8cea25c
      gcc/ChangeLog:
      
      2019-09-23  Carl Love  <cel@us.ibm.com>
      
      	* config/rs6000/vsx.md (xxswapd_v4si, xxswapd_v8hi, xxswapd_v16qi):
      	New define_insn.
      	(vsx_xxpermdi4_le_<mode> for VSX_W, vsx_xxpermdi8_le_V8HI,
      	vsx_xxpermdi16_le_V16QI): Removed define_insn.
      
      From-SVN: r276065
      Carl Love committed
    • pt.c (check_explicit_specialization): Use cp_expr_loc_or_input_loc. · 0788210f
      /cp
      2019-09-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* pt.c (check_explicit_specialization): Use cp_expr_loc_or_input_loc.
      	(process_partial_specialization): Likewise.
      	(convert_nontype_argument_function): Likewise.
      	(invalid_tparm_referent_p): Likewise.
      	(convert_template_argument): Likewise.
      	(check_valid_ptrmem_cst_expr): Tidy.
      
      /testsuite
      2019-09-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/cpp0x/pr68724.C: Check location(s) too.
      	* g++.dg/cpp0x/variadic38.C: Likewise.
      	* g++.dg/cpp1z/nontype2.C: Likewise.
      	* g++.dg/parse/explicit1.C: Likewise.
      	* g++.dg/template/crash11.C: Likewise.
      	* g++.dg/template/non-dependent8.C: Likewise.
      	* g++.dg/template/nontype-array1.C: Likewise.
      	* g++.dg/template/nontype3.C: Likewise.
      	* g++.dg/template/nontype8.C: Likewise.
      	* g++.dg/template/partial5.C: Likewise.
      	* g++.dg/template/spec33.C: Likewise.
      	* g++.old-deja/g++.pt/memtemp64.C: Likewise.
      	* g++.old-deja/g++.pt/spec20.C: Likewise.
      	* g++.old-deja/g++.pt/spec21.C: Likewise.
      	* g++.old-deja/g++.robertl/eb103.C: Likewise.
      
      From-SVN: r276064
      Paolo Carlini committed
    • 2019-09-23 Sandra Loosemore <sandra@codesourcery.com> · 7926a220
      	gcc/testsuite/
      	* lib/target-supports.exp
      	(check_effective_target_arm_vfp_ok_nocache): New.
      	(check_effective_target_arm_vfp_ok): Rewrite.
      	(add_options_for_arm_vfp): New.
      	(add_options_for_sqrt_insn): Add options for arm.
      	* gcc.target/arm/attr-neon-builtin-fail2.c: Use dg-add-options.
      	* gcc.target/arm/short-vfp-1.c: Likewise.
      
      From-SVN: r276063
      Sandra Loosemore committed
    • PR c++/91809 - bit-field and ellipsis. · 33ba6ac3
      decay_conversion converts a bit-field access to its declared type, which
      isn't what we want here; it even has a comment that the caller is expected
      to have already used default_conversion to perform integral promotion.  This
      function handles arithmetic promotion differently, but we still don't want
      to call decay_conversion before that happens.
      
      	* call.c (convert_arg_to_ellipsis): Don't call decay_conversion for
      	arithmetic arguments.
      
      From-SVN: r276059
      Jason Merrill committed
    • PR c++/91844 - Implement CWG 2352, Similar types and reference binding. · 1a09197c
      	* call.c (reference_related_p): Use similar_type_p instead of
      	same_type_p.
      	(reference_compatible_p): Update implementation to match CWG 2352.
      	* cp-tree.h (similar_type_p): Declare.
      	* typeck.c (similar_type_p): New.
      
      	* g++.dg/cpp0x/pr33930.C: Add dg-error.
      	* g++.dg/cpp0x/ref-bind1.C: New test.
      	* g++.dg/cpp0x/ref-bind2.C: New test.
      	* g++.dg/cpp0x/ref-bind3.C: New test.
      	* g++.old-deja/g++.pt/spec35.C: Remove dg-error.
      
      From-SVN: r276058
      Marek Polacek committed
    • [arm] Add missing Makefile dependency on arm_acle_builtins.def · ba2b30dc
      arm-builtins.o is missing a Makefile dependency on arm_acle_builtins.def
      which can cause inconsistent rebuilds
      when adding builtins in there.
      
      This patch adds the right Makefile-foo to fix that.
      
      	* config/arm/t-arm (arm-builtins.o): Add dependency on
      	arm_acle_builtins.def.
      
      From-SVN: r276057
      Kyrylo Tkachov committed
    • PR libstdc++/91788 improve codegen for std::variant<T...>::index() · 1e8822d3
      If __index_type is a smaller type than size_t, then the result of
      size_t(__index_type(-1)) is not equal to size_t(-1), but to an incorrect
      value such as size_t(255) or size_t(65535). The old implementation of
      variant<T...>::index() uses (size_t(__index_type(_M_index + 1)) - 1)
      which is always correct, but generates suboptimal code for many common
      cases.
      
      When the __index_type is size_t or valueless variants are not possible
      we can just return the value directly.
      
      When the number of alternatives is sufficiently small the result of
      converting the _M_index value to the corresponding signed type will be
      either non-negative or -1. In those cases converting to the signed type
      and then to size_t will either produce the correct positive value or
      will sign extend -1 to (size_t)-1 as desired.
      
      For the remaining case we keep the existing arithmetic operations to
      ensure the correct result.
      
      	PR libstdc++/91788 (partial)
      	* include/std/variant (variant::index()): Improve codegen for cases
      	where conversion to size_t already works correctly.
      
      From-SVN: r276056
      Jonathan Wakely committed
    • Fix non-canonical CONST_INTs in altivec_copysign_v4sf3 (PR91823) · fa87544c
      The pattern was generating zero-extended rather than sign-extended
      CONST_INTs.
      
      2019-09-23  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR target/91823
      	* config/rs6000/altivec.md (altivec_copysign_v4sf3): Generate
      	canonical CONST_INTs.  Use gen_rtvec.
      
      From-SVN: r276055
      Richard Sandiford committed
    • tree-vect-loop.c (get_initial_def_for_reduction): Simplify, avoid adjusting by + 0 or * 1. · d469a71e
      2019-09-23  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-loop.c (get_initial_def_for_reduction): Simplify,
      	avoid adjusting by + 0 or * 1.
      	(vect_create_epilog_for_reduction): Get reduction code only
      	when necessary.  Deal with adjustment_def only when necessary.
      
      From-SVN: r276054
      Richard Biener committed
    • Skip gcc.dg/ucnid-5-utf8.c unless ucn is supported · 4d411f1f
      	* gcc.dg/ucnid-5-utf8.c: Skip unless ucn is supported.
      
      From-SVN: r276053
      Rainer Orth committed
    • [AArch64] Fix memmodel index in aarch64_store_exclusive_pair · 3a30d255
      Found via an rtx checking failure.
      
      2019-09-23  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/atomics.md (aarch64_store_exclusive_pair): Fix
      	memmodel index.
      
      From-SVN: r276052
      Richard Sandiford committed
    • re PR fortran/91729 (ICE in gfc_match_select_rank, at fortran/match.c:6586) · 158ab204
      2019-09-23  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/91729
      	* match.c (gfc_match_select_rank): Initialise 'as' to NULL.
      	Check for a symtree in the selector expression before trying to
      	assign a value to 'as'. Revert to gfc_error and go to cleanup
      	after setting a MATCH_ERROR.
      
      2019-09-23  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/91729
      	* gfortran.dg/select_rank_2.f90 : Add two more errors in foo2.
      	* gfortran.dg/select_rank_3.f90 : New test.
      
      From-SVN: r276051
      Paul Thomas committed
    • Use underscore in IPA-SRA LTO section name (PR ipa/91835) · b7bb3d35
      	PR ipa/91835
      	* lto-section-in.c (lto_section_name): Use "ipa_sra" instead of
      	"ipa-sra".
      
      From-SVN: r276050
      Rainer Orth committed
    • Provide Task_Info.Number_Of_Processors on Solaris · e2542772
      	gcc/ada:
      	* libgnarl/s-osinte__solaris.ads (sysconf): Declare.
      	(SC_NPROCESSORS_ONLN): Define.
      	* libgnarl/s-tasinf__solaris.ads (Number_Of_Processors): Declare.
      	* libgnarl/s-tasinf__solaris.adb (N_CPU): New variable.
      	(Number_Of_Processors): New function.
      
      	gcc/testsuite:
      	* gnat.dg/system_info1.adb: Sort dg-do target list.
      	Add *-*-solaris2.*.
      
      From-SVN: r276049
      Rainer Orth committed
    • trans.c (Regular_Loop_to_gnu): Do not rotate the loop if -Og is enabled. · 09248547
      	* gcc-interface/trans.c (Regular_Loop_to_gnu): Do not rotate the loop
      	if -Og is enabled.
      	(build_return_expr): Do not perform NRV if -Og is enabled.
      	(Subprogram_Body_to_gnu): Likewise.
      	(gnat_to_gnu) <N_Simple_Return_Statement>: Likewise.
      	(Handled_Sequence_Of_Statements_to_gnu): Do not inline finalizers if
      	-Og is enabled.
      	* gcc-interface/utils.c (convert_to_index_type): Return early if -Og
      	is enabled.
      
      From-SVN: r276047
      Eric Botcazou committed
    • Fix typo · 8082999e
      From-SVN: r276046
      Eric Botcazou committed
    • trans.c (gnat_compile_time_expr_list): New variable. · ec4a0d83
      	* gcc-interface/trans.c (gnat_compile_time_expr_list): New variable.
      	(Pragma_to_gnu): Rename local variable.  Save the (first) expression
      	of pragma Compile_Time_{Error|Warning} for later processing.
      	(Compilation_Unit_to_gnu): Process the expressions saved above.
      
      From-SVN: r276045
      Eric Botcazou committed
    • trans.c (Attribute_to_gnu): Test Can_Use_Internal_Rep on the underlying type of the node. · ef5a9557
      	* gcc-interface/trans.c (Attribute_to_gnu): Test Can_Use_Internal_Rep
      	on the underlying type of the node.
      	(Call_to_gnu): Likewise with the type of the prefix.
      
      From-SVN: r276041
      Eric Botcazou committed
    • decl.c (components_to_record): Do not reorder fields in packed record types if... · fdfa0e44
      	* gcc-interface/decl.c (components_to_record): Do not reorder fields
      	in packed record types if they contain fixed-size fields that cannot
      	be laid out in a packed manner.
      
      From-SVN: r276036
      Eric Botcazou committed
    • Daily bump. · 2d814ac2
      From-SVN: r276035
      GCC Administrator committed
  3. 22 Sep, 2019 3 commits
  4. 21 Sep, 2019 7 commits
    • PR middle-end/91830 - Bogus -Warray-bounds on strcpy into a member · 81011859
      PR middle-end/91830 - Bogus -Warray-bounds on strcpy into a member
      of a subobject compiling binutils
      
      gcc/ChangeLog:
      	* gcc/gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
      	Simplify computation of the offset of the referenced subobject.
      
      gcc/testsuite/ChangeLog:
      	* gcc/testsuite/gcc.dg/Warray-bounds-47.c: New test.
      
      From-SVN: r276022
      Martin Sebor committed
    • re PR c++/30277 (bit-field: wrong overload resolution) · e4df9be4
      	PR c++/30277
      	* g++.dg/expr/bitfield14.C (struct S): Use signed long long instead
      	of signed long.
      	(foo): Use long long instead of long.
      
      From-SVN: r276021
      Jakub Jelinek committed
    • [Darwin] Update machopic_legitimize_pic_address. · 6bd2a4f3
      Some changes were missed here in the transition to LRA.  The Darwin
      archs are all using LRA now.
      
      gcc/ChangeLog:
      
      2019-09-21  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/darwin.c (machopic_legitimize_pic_address): Check
      	for lra not reload.
      
      From-SVN: r276020
      Iain Sandoe committed
    • DR 2345 - Jumping across initializers in init-statements and conditions. · 296580b6
      	* g++.dg/cpp1z/init-statement10.C: New test.
      
      From-SVN: r276019
      Marek Polacek committed
    • Avoid adding impossible copies in ira-conflicts.c:process_reg_shuffles · 9f635bd1
      If an insn requires two operands to be tied, and the input operand dies
      in the insn, IRA acts as though there were a copy from the input to the
      output with the same execution frequency as the insn.  Allocating the
      same register to the input and the output then saves the cost of a move.
      
      If there is no such tie, but an input operand nevertheless dies
      in the insn, IRA creates a similar move, but with an eighth of the
      frequency.  This helps to ensure that chains of instructions reuse
      registers in a natural way, rather than using arbitrarily different
      registers for no reason.
      
      This heuristic seems to work well in the vast majority of cases.
      However, for SVE, the handling of untied operands ends up creating
      copies between dying predicate registers and vector outputs, even though
      vector and predicate registers are distinct classes and can never be
      tied.  This is a particular problem because the dying predicate tends
      to be the loop control predicate, which is used by most instructions
      in a vector loop and so (rightly) has a very high allocation priority.
      Any copies involving the loop predicate therefore tend to get processed
      before copies involving only vector registers.  The end result is that
      we tend to allocate the output of the last vector instruction in a loop
      ahead of its natural place in the allocation order and don't benefit
      from chains created between vector registers.
      
      This patch tries to avoid the problem by not adding register shuffle
      copies if there appears to be no chance that the two operands could be
      allocated to the same register.
      
      2019-09-21  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* ira-conflicts.c (can_use_same_reg_p): New function.
      	(process_reg_shuffles): Take an insn parameter.  Ignore cases
      	in which input operand op_num could seemingly never be allocated
      	to the same register as the destination.
      	(add_insn_allocno_copies): Update call to process_reg_shuffles.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/cond_convert_1.c: Remove XFAILs.
      	* gcc.target/aarch64/sve/cond_convert_4.c: Likewise.
      	* gcc.target/aarch64/sve/cond_unary_2.c: Likewise.
      
      From-SVN: r276018
      Richard Sandiford committed
    • Extend neg_const_int simplifications to other const rtxes · 681fc0fa
      This patch generalises some neg_const_int-based rtx simplifications
      so that they handle all CONST_SCALAR_INTs and also CONST_POLY_INT.
      This actually simplifies things a bit, since we no longer have
      to treat HOST_WIDE_INT_MIN specially.
      
      This is tested by later SVE patches.
      
      2019-09-21  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* simplify-rtx.c (neg_const_int): Replace with...
      	(neg_poly_int_rtx): ...this new function.
      	(simplify_binary_operation_1): Extend (minus x C) -> (plus X -C)
      	to all CONST_SCALAR_INTs and to CONST_POLY_INT.
      	(simplify_plus_minus): Likewise for constant terms here.
      
      From-SVN: r276017
      Richard Sandiford committed
    • Daily bump. · b2addbf4
      From-SVN: r276015
      GCC Administrator committed
  5. 20 Sep, 2019 3 commits