1. 19 Jul, 2019 13 commits
    • [PATCH, rs6000] Split up rs6000.c. · 1acf0246
      The source file rs6000.c has grown to unreasonable size and is being
      split up into several smaller source files.  This should improve
      compilation speed for building gcc.
      
      This is the second of several patches to do this and moves most of the
      function call and builtin code to a new source file.
      
      Bootstrapped and tested on powerpc64le-unknown-linux-gnu and
      powerpc64-unknown-linux-gnu with no regressions.  Is this ok for trunk?
      
      
      2019-07-17  Bill Seurer  <seurer@linux.vnet.ibm.com>
      
      	* config/rs6000/rs6000.c (builtin_description, cpu_is_info,
      	cpu_supports_info, builtin_hash_struct, builtin_hasher,
      	builtin_hash_table, rs6000_builtin_info_type, rs6000_builtin_info,
      	rs6000_aggregate_candidate, rs6000_discover_homogeneous_aggregate,
      	rs6000_return_in_memory, rs6000_return_in_msb, call_ABI_of_interest,
      	init_cumulative_args, rs6000_promote_function_mode,
      	rs6000_must_pass_in_stack, is_complex_IBM_long_double,
      	abi_v4_pass_in_fpr, rs6000_function_arg_padding,
      	rs6000_function_arg_boundary, rs6000_parm_offset,
      	rs6000_parm_start, rs6000_arg_size,
      	rs6000_darwin64_record_arg_advance_flush,
      	rs6000_darwin64_record_arg_advance_recurse,
      	rs6000_darwin64_struct_check_p, rs6000_function_arg_advance_1,
      	rs6000_function_arg_advance, rs6000_darwin64_record_arg_flush,
      	rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
      	rs6000_mixed_function_arg, rs6000_psave_function_arg,
      	rs6000_finish_function_arg, rs6000_function_arg,
      	rs6000_arg_partial_bytes, rs6000_pass_by_reference,
      	rs6000_parm_needs_stack, rs6000_function_parms_need_stack,
      	rs6000_reg_parm_stack_space, rs6000_move_block_from_reg,
      	setup_incoming_varargs, rs6000_build_builtin_va_list, rs6000_va_start,
      	rs6000_gimplify_va_arg, def_builtin, bdesc_3arg, bdesc_dst,
      	bdesc_2arg, bdesc_altivec_preds, bdesc_abs, bdesc_1arg, bdesc_0arg,
      	bdesc_htm, rs6000_overloaded_builtin_p, rs6000_overloaded_builtin_name,
      	rs6000_expand_zeroop_builtin, rs6000_expand_mtfsf_builtin,
      	rs6000_expand_mtfsb_builtin, rs6000_expand_set_fpscr_rn_builtin,
      	rs6000_expand_set_fpscr_drn_builtin, rs6000_expand_unop_builtin,
      	altivec_expand_abs_builtin, rs6000_expand_binop_builtin,
      	altivec_expand_predicate_builtin, swap_endian_selector_for_mode,
      	altivec_expand_lv_builtin, altivec_expand_stxvl_builtin,
      	altivec_expand_stv_builtin, htm_spr_num, rs6000_htm_spr_icode,
      	htm_expand_builtin, cpu_expand_builtin, rs6000_expand_ternop_builtin,
      	altivec_expand_dst_builtin, altivec_expand_vec_init_builtin,
      	get_element_number, altivec_expand_vec_set_builtin,
      	altivec_expand_vec_ext_builtin, altivec_expand_builtin,
      	rs6000_builtin_is_supported_p, rs6000_invalid_builtin,
      	rs6000_fold_builtin, rs6000_builtin_valid_without_lhs,
      	fold_build_vec_cmp, fold_compare_helper, fold_mergehl_helper,
      	fold_mergeeo_helper, rs6000_gimple_fold_builtin,
      	rs6000_expand_builtin, rs6000_vector_type,
      	rs6000_init_builtins, rs6000_builtin_decl, altivec_init_builtins,
      	htm_init_builtins, builtin_function_type, rs6000_common_init_builtins,
      	rs6000_internal_arg_pointer, rs6000_output_mi_thunk): Move
      	to rs6000-call.c.
      	* config/rs6000/rs6000-call.c (builtin_description, cpu_is_info,
      	cpu_supports_info, builtin_hash_struct, builtin_hasher,
      	builtin_hash_table, rs6000_builtin_info_type, rs6000_builtin_info,
      	rs6000_aggregate_candidate, rs6000_discover_homogeneous_aggregate,
      	rs6000_return_in_memory, rs6000_return_in_msb, call_ABI_of_interest,
      	init_cumulative_args, rs6000_promote_function_mode,
      	rs6000_must_pass_in_stack, is_complex_IBM_long_double,
      	abi_v4_pass_in_fpr, rs6000_function_arg_padding,
      	rs6000_function_arg_boundary, rs6000_parm_offset,
      	rs6000_parm_start, rs6000_arg_size,
      	rs6000_darwin64_record_arg_advance_flush,
      	rs6000_darwin64_record_arg_advance_recurse,
      	rs6000_darwin64_struct_check_p, rs6000_function_arg_advance_1,
      	rs6000_function_arg_advance, rs6000_darwin64_record_arg_flush,
      	rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
      	rs6000_mixed_function_arg, rs6000_psave_function_arg,
      	rs6000_finish_function_arg, rs6000_function_arg,
      	rs6000_arg_partial_bytes, rs6000_pass_by_reference,
      	rs6000_parm_needs_stack, rs6000_function_parms_need_stack,
      	rs6000_reg_parm_stack_space, rs6000_move_block_from_reg,
      	setup_incoming_varargs, rs6000_build_builtin_va_list, rs6000_va_start,
      	rs6000_gimplify_va_arg, def_builtin, bdesc_3arg, bdesc_dst,
      	bdesc_2arg, bdesc_altivec_preds, bdesc_abs, bdesc_1arg, bdesc_0arg,
      	bdesc_htm, rs6000_overloaded_builtin_p, rs6000_overloaded_builtin_name,
      	rs6000_expand_zeroop_builtin, rs6000_expand_mtfsf_builtin,
      	rs6000_expand_mtfsb_builtin, rs6000_expand_set_fpscr_rn_builtin,
      	rs6000_expand_set_fpscr_drn_builtin, rs6000_expand_unop_builtin,
      	altivec_expand_abs_builtin, rs6000_expand_binop_builtin,
      	altivec_expand_predicate_builtin, swap_endian_selector_for_mode,
      	altivec_expand_lv_builtin, altivec_expand_stxvl_builtin,
      	altivec_expand_stv_builtin, htm_spr_num, rs6000_htm_spr_icode,
      	htm_expand_builtin, cpu_expand_builtin, rs6000_expand_ternop_builtin,
      	altivec_expand_dst_builtin, altivec_expand_vec_init_builtin,
      	get_element_number, altivec_expand_vec_set_builtin,
      	altivec_expand_vec_ext_builtin, altivec_expand_builtin,
      	rs6000_builtin_is_supported_p, rs6000_invalid_builtin,
      	rs6000_fold_builtin, rs6000_builtin_valid_without_lhs,
      	fold_build_vec_cmp, fold_compare_helper, fold_mergehl_helper,
      	fold_mergeeo_helper, rs6000_gimple_fold_builtin,
      	rs6000_expand_builtin, rs6000_vector_type,
      	rs6000_init_builtins, rs6000_builtin_decl, altivec_init_builtins,
      	htm_init_builtins, builtin_function_type, rs6000_common_init_builtins,
      	rs6000_internal_arg_pointer, rs6000_output_mi_thunk: Move
      	to here from rs6000.c.
      	* config/rs6000/rs6000-internal.h: (rs6000_darwin64_struct_check_p,
      	rs6000_discover_homogeneous_aggregate, rs6000_output_mi_thunk,
      	rs6000_output_addr_const_extra, rs6000_gimple_fold_builtin,
      	rs6000_invalid_builtin, rs6000_build_builtin_va_list, rs6000_va_start,
      	rs6000_gimplify_va_arg, rs6000_promote_function_mode,
      	rs6000_return_in_memory, rs6000_return_in_msb,
      	rs6000_pass_by_reference, setup_incoming_varargs,
      	rs6000_function_arg_boundary, rs6000_must_pass_in_stack,
      	rs6000_arg_partial_bytes, rs6000_function_arg_advance,
      	rs6000_function_arg_padding, rs6000_function_arg,
      	rs6000_darwin64_record_arg, rs6000_internal_arg_pointer,
      	rs6000_init_builtins, rs6000_builtin_decl, rs6000_expand_builtin,
      	rs6000_fold_builtin, rs6000_passes_ieee128, rs6000_passes_float,
      	rs6000_passes_long_double, rs6000_passes_vector,
      	rs6000_returns_struct, cpu_builtin_p, tree builtin_mode_to_type,
      	altivec_builtin_mask_for_load) Add declarations.
      	* config/rs6000/t-rs6000: Add new source file rs6000-call.c.
      	* config/config.gcc: Add new source file rs6000-call.c to garbage
      	collector and extra_objs.
      
      From-SVN: r273607
      Bill Seurer committed
    • tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle strncpy. · 192ece9e
      	* tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle
      	strncpy.  Drop some trivial dead code.
      	(maybe_trim_memstar_call): Handle strncpy.
      
      	* gcc.dg/tree-ssa/ssa-dse-37.c: New test.
      	* gcc.dg/tree-ssa/ssa-dse-38.c: New test.
      
      From-SVN: r273606
      Jeff Law committed
    • re PR tree-optimization/91211 (wrong code with __builtin_memset() and… · 6b68f00d
      re PR tree-optimization/91211 (wrong code with __builtin_memset() and __builtin_memcpy() at -O1 and above)
      
      2019-07-19  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91211
      	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Fix
      	memset encoding size.
      
      	* gcc.dg/torture/pr91211.c: New testcase.
      
      From-SVN: r273605
      Richard Biener committed
    • re PR target/91204 (ICE in expand_expr_real_2, at expr.c:9215 with -O3) · d826ea32
      	PR target/91204
      	* config/i386/mmx.md (one_cmpl<mode>2): New expander.
      
      From-SVN: r273604
      Uros Bizjak committed
    • re PR ipa/91194 (A suspicious condition in recursive_inlining) · 4eb50396
      	PR ipa/91194
      	* ipa-inline.c (recursive_inlining): Fix limits check.
      
      From-SVN: r273603
      Jan Hubicka committed
    • re PR tree-optimization/91200 (ICE on valid code at -O1: verify_ssa failed) · a263e61a
      2019-07-19  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91200
      	* tree-ssa-phiopt.c (cond_store_replacement): Check we have
      	no PHI nodes in middle-bb.
      
      	* gcc.dg/torture/pr91200.c: New testcase.
      
      From-SVN: r273602
      Richard Biener committed
    • [AArch64] Rename +bitperm to +sve2-bitperm · c10abf53
      After some discussion, we've decided to rename the +bitperm feature
      flag to +sve2-bitperm, so that it's consistent with the other SVE2
      feature flags.  The associated macro was already
      __ARM_FEATURE_SVE2_BITPERM, so only the feature flag itself
      needs to change.
      
      2019-07-19  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* doc/invoke.texi: Rename the AArch64 +bitperm extension flag
      	to +sve-bitperm.
      	* config/aarch64/aarch64-option-extensions.def: Likewise.
      
      From-SVN: r273600
      Richard Sandiford committed
    • re PR middle-end/91190 (ICE on valid code: in hashtab_chk_error, at hash-table.c:137) · 14298fa4
      	PR middle-end/91190
      	* function.c (insert_temp_slot_address): Store into the hash table
      	a copy of address to avoid RTL sharing issues.
      
      	* gcc.c-torture/compile/pr91190.c: New test.
      
      From-SVN: r273599
      Jakub Jelinek committed
    • re PR tree-optimization/91207 (Wrong code with -O3) · bc59a4cf
      2019-07-19  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91207
      	Revert
      	2019-07-17  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91178
      	* tree-vect-stmts.c (get_group_load_store_type): For SLP
      	loads with a gap larger than the vector size always use
      	VMAT_STRIDED_SLP.
      	(vectorizable_load): For VMAT_STRIDED_SLP with a permutation
      	avoid loading vectors that are only contained in the gap
      	and thus are not needed.
      
      	* gcc.dg/torture/pr91207.c: New testcase.
      
      From-SVN: r273593
      Richard Biener committed
    • PR c++/90101 - dependent class non-type parameter. · daaa6fcc
      We shouldn't complain that a dependent type is incomplete.
      
      	* pt.c (invalid_nontype_parm_type_p): Check for dependent class type.
      
      From-SVN: r273592
      Jason Merrill committed
    • PR c++/90098 - partial specialization and class non-type parms. · 59febe0e
      A non-type template parameter of class type used in an expression has
      const-qualified type; the pt.c hunks deal with this difference from the
      unqualified type of the parameter declaration.  WAhen we use such a
      parameter as an argument to another template, we don't want to confuse
      things by copying it, we should pass it straight through.  And we might as
      well skip copying other classes in constant evaluation context in a
      template, too; we'll get the copy semantics at instantiation time.
      
      	PR c++/90099
      	PR c++/90101
      	* call.c (build_converted_constant_expr_internal): Don't copy.
      	* pt.c (process_partial_specialization): Allow VIEW_CONVERT_EXPR
      	around class non-type parameter.
      	(unify) [TEMPLATE_PARM_INDEX]: Ignore cv-quals.
      
      From-SVN: r273591
      Jason Merrill committed
    • Daily bump. · a349418e
      From-SVN: r273590
      GCC Administrator committed
  2. 18 Jul, 2019 20 commits
    • stl_tempbuf.h (__detail::__return_temporary_buffer): New. · f48d9d19
      2019-07-18  François Dumont  <fdumont@gcc.gnu.org>
      
      	* include/bits/stl_tempbuf.h (__detail::__return_temporary_buffer): New.
      	(~_Temporary_buffer()): Use latter.
      	(_Temporary_buffer(_FIterator, size_type)): Likewise.
      
      From-SVN: r273586
      François Dumont committed
    • i386.md (*addqi_2_slp): Remove. · 2737c590
      	* config/i386/i386.md (*addqi_2_slp): Remove.
      	(*<code>qi_2_slp): Ditto.
      
      From-SVN: r273583
      Uros Bizjak committed
    • Rename function. · 3f4ef678
      2019-07-18  Michael Meissner  <meissner@linux.ibm.com>
      
      	* config/rs6000/predicates.md (prefixed_mem_operand): Call
      	rs6000_prefixed_address_mode_p instead of rs6000_prefixed_address.
      	* config/rs6000/rs6000-protos.h (rs6000_prefixed_address_mode_p):
      	Rename function from rs6000_prefixed_address.
      	* config/rs6000/rs6000.c (rs6000_prefixed_address_mode_p): Rename
      	function from rs6000_prefixed_address.
      
      From-SVN: r273580
      Michael Meissner committed
    • Update PowerPC compiler for pc-relative support. · 9ae813e8
      2019-07-18  Michael Meissner  <meissner@linux.ibm.com>
      
      	* config/rs6000/aix.h (TARGET_HAS_TOC): Rename TARGET_TOC to
      	TARGET_HAS_TOC.
      	(TARGET_TOC): Likewise.
      	(TARGET_NO_TOC): Delete here, define TARGET_NO_TOC_OR_PCREL in
      	rs6000.h.
      	* config/rs6000/darwin.h (TARGET_HAS_TOC): Rename TARGET_TOC to
      	TARGET_HAS_TOC.
      	(TARGET_TOC): Likewise.
      	(TARGET_NO_TOC): Delete here, define TARGET_NO_TOC_OR_PCREL in
      	rs6000.h.
      	* config/rs6000/linux64.h (TARGET_HAS_TOC): Rename TARGET_TOC to
      	TARGET_HAS_TOC.
      	(TARGET_TOC): Likewise.
      	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add
      	check to require -mcmodel=medium for pc-relative addressing.
      	(create_TOC_reference): Add assertion for TARGET_TOC.
      	(rs6000_legitimize_address): Use TARGET_NO_TOC_OR_PCREL instead of
      	TARGET_NO_TOC.
      	(rs6000_emit_move): Likewise.
      	(TOC_alias_set): Rename TOC alias set static variable from 'set'
      	to 'TOC_alias_set'.
      	(get_TOC_alias_set): Likewise.
      	(output_toc): Use TARGET_NO_TOC_OR_PCREL instead of
      	TARGET_NO_TOC.
      	(rs6000_can_eliminate): Likewise.
      	* config/rs6000/rs6000.h (TARGET_TOC): Define in terms of
      	TARGET_HAS_TOC and not pc-relative.
      	(TARGET_NO_TOC_OR_PCREL): New macro to replace TARGET_NO_TOC.
      	* config/rs6000/sysv4.h (TARGET_HAS_TOC): Rename TARGET_TOC to
      	TARGET_HAS_TOC.
      	(TARGET_TOC): Likewise.
      	(TARGET_NO_TOC): Delete here, define TARGET_NO_TOC_OR_PCREL in
      	rs6000.h.
      
      From-SVN: r273579
      Michael Meissner committed
    • re PR target/91188 (strict_low_part operations do not work) · 07d7662f
      	PR target/91188
      	* config/i386/i386.md (*addqi_1_slp): Use register_operand predicate
      	for operand 0.  Do not use (match_dup) to match operand 1 with
      	operand 0.  Add check in insn constraint that either input operand
      	matches operand 0.  Use SWI12 mode iterator to also handle
      	HImode operands.
      	(*and<mode>_1_slp): Ditto.
      	(*<code>qi_1_slp): Ditto.
      	(*sub<mode>_1_slp): Use register_operand predicate for operand 0.
      	Do not use (match_dup) to match operand 1 with operand 0.  Add
      	check in insn constraint that operand 1 matches operand 0.
      	Use SWI12 mode iterator to also handle HImode operands.
      	(*ashl<mode>3_1_slp): Ditto.
      	(*<shift_insn><mode>3_1_slp): Ditto.
      	(*<rotate_insn><mode>3_1_slp): Ditto.
      
      testsuite/ChangeLog:
      
      	PR target/91188
      	* gcc.target/i386/pr91188-1a.c: New test.
      	* gcc.target/i386/pr91188-1b.c: Ditto.
      	* gcc.target/i386/pr91188-1c.c: Ditto.
      	* gcc.target/i386/pr91188-2a.c: Ditto.
      	* gcc.target/i386/pr91188-2b.c: Ditto.
      	* gcc.target/i386/pr91188-2c.c: Ditto.
      
      From-SVN: r273578
      Uros Bizjak committed
    • compiler: fix bug in importing blocks from inline functions · 36729568
          
          This patch fixes a buglet in the function body importer. Add hooks for
          keeping a stack of blocks corresponding to the block nesting in the
          imported function. This ensures that local variables and temps wind up
          correctly scoped and don't introduce collisions.
          
          New test case for this problem in CL 186717.
          
          Fixes golang/go#33158.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/186757
      
      From-SVN: r273577
      Ian Lance Taylor committed
    • Makefile.rtl, [...]: Introduce a "STANDALONE" mode where C runtime files do not… · a6fc663e
      Makefile.rtl, [...]: Introduce a "STANDALONE" mode where C runtime files do not have any dependency...
      
      	* Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c,
      	cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c,
      	argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c,
      	seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C
      	runtime files do not have any dependency on GCC include files.
      	Remove unnecessary includes.
      	Remove remaining references to VMS in runtime C file.
      	* runtime.h: new File.
      
      From-SVN: r273576
      Arnaud Charlet committed
    • [patch2/2][arm]: remove builtin expand for sha1 · b9a01009
      This patch removes the builtin expand handling for sha1h/c/m/p and
      replaces it with expand patterns. This should make it more consistent
      with how we handle intrinsic implementations and cleans up the custom
      sha1 code in the arm_expand builtins for unop and ternop.
      
      2019-07-18  Sylvia Taylor  <sylvia.taylor@arm.com>
      
      	* config/arm/arm-builtins.c
      	(arm_expand_ternop_builtin): Remove explicit sha1 builtin handling.
      	(arm_expand_unop_builtin): Likewise.
      	* config/arm/crypto.md
      	(crypto_sha1h): Convert from define_insn to define_expand.
      	(crypto_<crypto_pattern>): Likewise.
      	(crypto_sha1h_lb): New define_insn.
      	(crypto_<crypto_pattern>_lb): Likewise.
      
      From-SVN: r273575
      Sylvia Taylor committed
    • [patch1/2][arm][PR90317]: fix sha1 patterns · e38341a8
      This patch fixes:
      
      1) Ice message thrown when using the crypto_sha1h intrinsic due to
      incompatible mode used for zero_extend. Removed zero extend as it is
      not a good choice for vector modes and using an equivalent single
      mode like TI (128bits) instead of V4SI produces extra instructions
      making it inefficient.
      
      This affects gcc version 8 and above.
      
      2) Incorrect combine optimizations made due to vec_select usage
      in the sha1 patterns on arm. The patterns should only combine
      a vec select within a sha1h<op> instruction when the lane is 0.
      
      This affects gcc version 5 and above.
      
      - Fixed by explicitly declaring the valid const int for such
      optimizations. For cases when the lane is not 0, the vector
      lane selection now occurs in a e.g. vmov instruction prior
      to sha1h<op>.
      
      - Updated the sha1h testcases on arm to check for additional
      cases with custom vector lane selection.
      
      The intrinsic functions for the sha1 patterns have also been
      simplified which seems to eliminate extra vmovs like:
      - vmov.i32 q8, #0.
      
      
      2019-07-18  Sylvia Taylor  <sylvia.taylor@arm.com>
      
              PR target/90317
              * config/arm/arm_neon.h
              (vsha1h_u32): Refactor.
              (vsha1cq_u32): Likewise.
              (vsha1pq_u32): Likewise.
              (vsha1mq_u32): Likewise.
              * config/arm/crypto.md:
              (crypto_sha1h): Remove zero extend, correct vec select.
              (crypto_sha1c): Correct vec select.
              (crypto_sha1m): Likewise.
              (crypto_sha1p): Likewise.
      
              * gcc.target/arm/crypto-vsha1cq_u32.c (foo): Change return type to
              uint32_t.
              (GET_LANE, TEST_SHA1C_VEC_SELECT): New.
              * gcc.target/arm/crypto-vsha1h_u32.c (foo): Change return type to
              uint32_t.
              (GET_LANE, TEST_SHA1H_VEC_SELECT): New.
              * gcc.target/arm/crypto-vsha1mq_u32.c (foo): Change return type to
              uint32_t.
              (GET_LANE, TEST_SHA1M_VEC_SELECT): New.
              * gcc.target/arm/crypto-vsha1pq_u32.c (foo): Change return type to
              uint32_t.
              (GET_LANE, TEST_SHA1P_VEC_SELECT): New.
      
      From-SVN: r273574
      Sylvia Taylor committed
    • demangle.h (rust_is_mangled): Move to libiberty/rust-demangle.h. · 979526c9
      include/
      	* demangle.h (rust_is_mangled): Move to libiberty/rust-demangle.h.
      	(rust_demangle_sym): Move to libiberty/rust-demangle.h.
      libiberty/
      	* cplus-dem.c: Include rust-demangle.h.
      	* rust-demangle.c: Include rust-demangle.h.
      	* rust-demangle.h: New file.
      
      From-SVN: r273573
      Eduard-Mihai Burtescu committed
    • [arm] Fix incorrect modes with 'borrow' operations · 24990170
      Looking through the arm backend I noticed that the modes used to pass
      comparison types into subtract-with-carry operations were being
      incorrectly set.  The result is that the compiler is not truly
      self-consistent.  To clean this up I've introduced a new predicate,
      arm_borrow_operation (borrowed from the AArch64 backend) which can
      match the comparison type with the required mode and then fixed all
      the patterns to use this.  The split patterns that were generating
      incorrect modes have all obviously been fixed as well.
      
      The basic rule for the use of a borrow is:
      - if the condition code was set by a 'subtract-like' operation (subs, cmp),
        then use CCmode and LTU.
      - if the condition code was by unsigned overflow of addition (adds), then
        use CC_Cmode and GEU.
      
      	* config/arm/predicates.md (arm_borrow_operation): New predicate.
      	* config/arm/arm.c (subdi3_compare1): Use CCmode for the split.
      	(arm_subdi3, subdi_di_zesidi, subdi_di_sesidi): Likewise.
      	(subdi_zesidi_zesidi): Likewise.
      	(negdi2_compare, negdi2_insn): Likewise.
      	(negdi_extensidi): Likewise.
      	(negdi_zero_extendsidi): Likewise.
      	(arm_cmpdi_insn): Likewise.
      	(subsi3_carryin): Use arm_borrow_operation.
      	(subsi3_carryin_const): Likewise.
      	(subsi3_carryin_const0): Likewise.
      	(subsi3_carryin_compare): Likewise.
      	(subsi3_carryin_compare_const): Likewise.
      	(subsi3_carryin_compare_const0): Likewise.
      	(subsi3_carryin_shift): Likewise.
      	(rsbsi3_carryin_shift): Likewise.
      	(negsi2_carryin_compare): Likewise.
      
      From-SVN: r273572
      Richard Earnshaw committed
    • lto-common.c (gimple_register_canonical_type_1): Do not look for non-ODR… · b01659aa
      lto-common.c (gimple_register_canonical_type_1): Do not look for non-ODR conflicts of types in anonymous namespaces.
      
      	* lto-common.c (gimple_register_canonical_type_1): Do not look for
      	non-ODR conflicts of types in anonymous namespaces.
      	(unify_scc): Do not merge anonymous namespace types.
      	* g++.dg/lto/alias-5_0.C: New testcase.
      	* g++.dg/lto/alias-5_1.C: New.
      	* g++.dg/lto/alias-5_2.c: New.
      
      From-SVN: r273571
      Jan Hubicka committed
    • re PR tree-optimization/91137 (Wrong code with -O3) · 3796e3b3
              PR tree-optimization/91137
              * tree-ssa-loop-ivopts.c (struct ivopts_data): New field.
              (tree_ssa_iv_optimize_init, alloc_iv, tree_ssa_iv_optimize_finalize):
              Init, use and fini the above new field.
              (determine_base_object_1): New function.
              (determine_base_object): Reimplement using walk_tree.
      
      gcc/testsuite
              PR tree-optimization/91137
              * gcc.c-torture/execute/pr91137.c: New test.
      
      From-SVN: r273570
      Bin Cheng committed
    • Make ifcvt clean up dead comparisons · f1f10541
      This change is needed to avoid a regression in gcc.dg/ifcvt-3.c
      for a later patch.  Without it, we enter CSE with a dead comparison left
      by if-conversion and then eliminate the second (live) comparison in
      favour of the dead one.  That's functionally correct in itself, but it
      meant that we'd combine the subtraction and comparison into a SUBS
      before we have a chance to fold away the subtraction.
      
      2019-07-18  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* basic-block.h (CLEANUP_FORCE_FAST_DCE): New macro.
      	* cfgcleanup.c (cleanup_cfg): Call run_fast_dce if
      	CLEANUP_FORCE_FAST_DCE is set.
      	* ifcvt.c (rest_of_handle_if_conversion): Pass
      	CLEANUP_FORCE_FAST_DCE to the final cleanup_cfg call if
      	if-conversion succeeded.
      
      From-SVN: r273569
      Richard Sandiford committed
    • Fix -Wreturn-type for static naked functions in C · d119bf79
      This patch extends the fix for PR53633 to include static functions,
      which were giving a bogus -Wreturn-type warning for C but not for C++.
      
      2019-07-18  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/c/
      	PR c/53633
      	* c-decl.c (finish_function): Check targetm.warn_func_return
      	before issuing a -Wreturn-type warning.
      
      gcc/testsuite/
      	* c-c++-common/pr53633-2.c: New test.
      
      From-SVN: r273568
      Richard Sandiford committed
    • tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Refactor branches to make code less indented. · d1f2e4c1
      2019-07-18  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Refactor
      	branches to make code less indented.
      
      From-SVN: r273567
      Richard Biener committed
    • compiler: fix bug in handling of unordered set during exporting · b94b6cc0
          
          In CL 183850 a change was made to combine tracking/discovery of
          exported types and imported packages during export data generation. As
          a result of this refactoring a bug was introduced: the new code can
          potentially insert items into the exports set (an unordered_set) while
          iterating through the same set, which is illegal according to the spec
          for std::unordered_set.
          
          This patch fixes the problem by changing the type discovery phase to
          iterate through a separate list of sorted exports, as opposed to
          iterating through the main unordered set.  Also included is a change
          to fix the code that looks for variables that are referenced from
          inlined routine bodies (this code wasn't scanning all of the function
          that it needed to scan).
          
          New test case for this problem in CL 186697.
          
          Updates golang/go#33020.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/185977
      
      From-SVN: r273564
      Ian Lance Taylor committed
    • -Wmissing-attributes: check that we avoid duplicates and false positives · dea78431
      The initial patch for PR 81824 fixed various possibilities of
      -Wmissing-attributes reporting duplicates and false positives.  The
      test that avoided them was a little obscure, though, so this patch
      rewrites it into a more self-evident form.
      
      The patch also adds a testcase that already passed, but that
      explicitly covers some of the possibilities of reporting duplicates
      and false positives that preexisting tests did not cover.
      
      
      for  gcc/ChangeLog
      
      	PR middle-end/81824
      	* attribs.c (decls_mismatched_attributes): Simplify the logic
      	that avoids duplicates and false positives.
      
      for  gcc/testsuite/ChangeLog
      
      	PR middle-end/81824
      	* g++.dg/Wmissing-attributes-1.C: New.  Some of its fragments
      	are from Martin Sebor.
      
      From-SVN: r273563
      Alexandre Oliva committed
    • Daily bump. · 8ea3c020
      From-SVN: r273562
      GCC Administrator committed
    • pa.c (pa_som_asm_init_sections): Don't force all constant data into data section… · 9cc7debe
      pa.c (pa_som_asm_init_sections): Don't force all constant data into data section when generating PIC code.
      
      	* config/pa/pa.c (pa_som_asm_init_sections): Don't force all constant
      	data into data section when generating PIC code.
      	(pa_select_section): Use pa_reloc_rw_mask() to qualify relocs.
      	(pa_reloc_rw_mask): Return 3 when generating PIC code and when
      	generating code for SOM targets earlier than HP-UX 11.  Otherwise,
      	return 2 for SOM and 0 for other targets.
      
      From-SVN: r273557
      John David Anglin committed
  3. 17 Jul, 2019 7 commits