https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92632

            Bug ID: 92632
           Summary: Calculix regression
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hubicka at gcc dot gnu.org
  Target Milestone: ---

LNT testing show 137% regression of calculix with LTO and PGO
https://lnt.opensuse.org/db_default/v4/SPEC/graph?plot.0=288.170.0
The range is between
Revision: fbbadf0018292a93 (2019-11-15 03:28)
and
Revision: 1e9cd853b7ecae82 (2019-11-18 02:22)

The diff from this range is:
+2019-11-18  Hongtao Liu  <hongtao....@intel.com>
+
+       PR target/92448
+       * config/i386/i386-expand.c (ix86_expand_set_or_cpymem):
+       Replace TARGET_AVX128_OPTIMAL with TARGET_AVX256_SPLIT_REGS.
+       * config/i386/i386-option.c (ix86_vec_cost): Ditto.
+       (ix86_reassociation_width): Ditto.
+       * config/i386/i386-options.c (ix86_option_override_internal):
+       Replace TARGET_AVX128_OPTIAML with
+       ix86_tune_features[X86_TUNE_AVX128_OPTIMAL]
+       * config/i386/i386.h (TARGET_AVX256_SPLIT_REGS): New macro.
+       (TARGET_AVX128_OPTIMAL): Deleted.
+       * config/i386/x86-tune.def (X86_TUNE_AVX256_SPLIT_REGS): New
+       DEF_TUNE.
+
+2019-11-16  Segher Boessenkool  <seg...@kernel.crashing.org>
+
+       * config/rs6000/rs6000.md (cceq_ior_compare): Rename to...
+       (@cceq_ior_compare_<mode> for GPR): ... this.  Allow GPR instead of
+       just SI.
+       (cceq_rev_compare): Rename to...
+       (@cceq_rev_compare_<mode> for GPR): ... this.  Allow GPR instead of
+       just SI.
+       (define_split for <bd>tf_<mode>): Add SImode first argument to
+       gen_cceq_ior_compare.
+
+2019-11-16  Segher Boessenkool  <seg...@kernel.crashing.org>
+
+       * common/config/powerpcspe: Delete.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * config/aarch64/aarch64-sve.md (aarch64_wrffr): Wrap the FFRT
+       output in UNSPEC_WRFFR.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * tree-data-ref.c (create_intersect_range_checks_index): Rewrite
+       the index tests to have the form (unsigned T) (B - A + bias) <= limit.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * tree-data-ref.c (create_intersect_range_checks_index)
+       (create_intersect_range_checks): Print dump messages.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * tree-data-ref.c (dump_alias_pair): New function.
+       (prune_runtime_alias_test_list): Use it to dump each merged alias pair.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * tree-data-ref.h (DR_ALIAS_MIXED_STEPS): New flag.
+       * tree-data-ref.c (prune_runtime_alias_test_list): Set it when
+       merging data references with different steps.
+       (create_intersect_range_checks_index): Take a
+       dr_with_seg_len_pair_t instead of two dr_with_seg_lens.
+       Bail out if DR_ALIAS_MIXED_STEPS is set.
+       (create_intersect_range_checks): Take a dr_with_seg_len_pair_t
+       instead of two dr_with_seg_lens.  Update call to
+       create_intersect_range_checks_index.
+       (create_runtime_alias_checks): Update call accordingly.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * tree-data-ref.h (DR_ALIAS_RAW, DR_ALIAS_WAR, DR_ALIAS_WAW)
+       (DR_ALIAS_ARBITRARY, DR_ALIAS_SWAPPED, DR_ALIAS_UNSWAPPED): New flags.
+       (dr_with_seg_len_pair_t::sequencing): New enum.
+       (dr_with_seg_len_pair_t::flags): New member variable.
+       (dr_with_seg_len_pair_t::dr_with_seg_len_pair_t): Take a sequencing
+       parameter and initialize the flags member variable.
+       * tree-loop-distribution.c (compute_alias_check_pairs): Update
+       call accordingly.
+       * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Likewise.
+       Ensure the two data references in an alias pair are in statement
+       order, if there is a defined order.
+       * tree-data-ref.c (prune_runtime_alias_test_list): Use
+       DR_ALIAS_SWAPPED and DR_ALIAS_UNSWAPPED to record whether we've
+       swapped the references in a dr_with_seg_len_pair_t.  OR together
+       the flags when merging two dr_with_seg_len_pair_ts.  After merging,
+       try to restore the original dr_with_seg_len order, updating the
+       flags if that fails.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * tree-data-ref.c (prune_runtime_alias_test_list): Delay
+       swapping the dr_as based on init values until we've decided
+       whether to merge them.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * tree-data-ref.c (prune_runtime_alias_test_list): Sort the
+       two accesses in each dr_with_seg_len_pair_t before trying to
+       combine separate dr_with_seg_len_pair_ts.
+       * tree-loop-distribution.c (compute_alias_check_pairs): Don't do
+       that here.
+       * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Likewise.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * config/aarch64/aarch64-sve.md
+       (scatter_store<SVE_FULL_SD:mode><v_int_equiv>): Extend to...
+       (scatter_store<SVE_24:mode><v_int_container>): ...this.
+       (mask_scatter_store<SVE_FULL_S:mode><v_int_equiv>): Extend to...
+       (mask_scatter_store<SVE_4:mode><v_int_equiv>): ...this.
+       (mask_scatter_store<SVE_FULL_D:mode><v_int_equiv>): Extend to...
+       (mask_scatter_store<SVE_2:mode><v_int_equiv>): ...this.
+       (*mask_scatter_store<mode><v_int_container>_<su>xtw_unpacked): New
+       pattern.
+       (*mask_scatter_store<SVE_FULL_D:mode><v_int_equiv>_sxtw): Extend to...
+       (*mask_scatter_store<SVE_2:mode><v_int_equiv>_sxtw): ...this.
+       (*mask_scatter_store<SVE_FULL_D:mode><v_int_equiv>_uxtw): Extend to...
+       (*mask_scatter_store<SVE_2:mode><v_int_equiv>_uxtw): ...this.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * config/aarch64/iterators.md (SVE_2BHSI, SVE_2HSDI, SVE_4BHI)
+       (SVE_4HSI): New mode iterators.
+       (ANY_EXTEND2): New code iterator.
+       * config/aarch64/aarch64-sve.md
+      
(@aarch64_gather_load_<ANY_EXTEND:optab><VNx4_WIDE:mode><VNx4_NARROW:mode>):
+       Extend to...
+      
(@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
+       ...this, handling extension to partial modes as well as full modes.
+       Describe the extension as a predicated rather than unpredicated
+       extension.
+      
(@aarch64_gather_load_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>):
+       Likewise extend to...
+      
(@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
+       ...this, making the same adjustments.
+      
(*aarch64_gather_load_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>_sxtw):
+       Likewise extend to...
+      
(*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>_sxtw)
+       ...this, making the same adjustments.
+      
(*aarch64_gather_load_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>_uxtw):
+       Likewise extend to...
+      
(*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>_uxtw)
+       ...this, making the same adjustments.
+      
(*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked):
+       New pattern.
+       (*aarch64_ldff1_gather<mode>_sxtw): Canonicalize to a constant
+       extension predicate.
+      
(@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode><VNx4_NARROW:mode>)
+      
(@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>)
+      
(*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>_uxtw):
+       Describe the extension as a predicated rather than unpredicated
+       extension.
+      
(*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>_sxtw):
+       Likewise.  Canonicalize to a constant extension predicate.
+       * config/aarch64/aarch64-sve-builtins-base.cc
+       (svld1_gather_extend_impl::expand): Add an extra predicate for
+       the extension.
+       (svldff1_gather_extend_impl::expand): Likewise.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * config/aarch64/iterators.md (SVE_24, SVE_2, SVE_4): New mode
+       iterators.
+       * config/aarch64/aarch64-sve.md
+       (gather_load<SVE_FULL_SD:mode><v_int_equiv>): Extend to...
+       (gather_load<SVE_24:mode><v_int_container>): ...this.
+       (mask_gather_load<SVE_FULL_S:mode><v_int_equiv>): Extend to...
+       (mask_gather_load<SVE_4:mode><v_int_container>): ...this.
+       (mask_gather_load<SVE_FULL_D:mode><v_int_equiv>): Extend to...
+       (mask_gather_load<SVE_2:mode><v_int_container>): ...this.
+       (*mask_gather_load<SVE_2:mode><v_int_container>_<su>xtw_unpacked):
+       New pattern.
+       (*mask_gather_load<SVE_FULL_D:mode><v_int_equiv>_sxtw): Extend to...
+       (*mask_gather_load<SVE_2:mode><v_int_equiv>_sxtw): ...this.
+       Allow the nominal extension predicate to be different from the
+       load predicate.
+       (*mask_gather_load<SVE_FULL_D:mode><v_int_equiv>_uxtw): Extend to...
+       (*mask_gather_load<SVE_2:mode><v_int_equiv>_uxtw): ...this.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * config/aarch64/aarch64-sve.md
+       (trunc<SVE_HSDI:mode><SVE_PARTIAL_I:mode>2): New pattern.
+       * config/aarch64/aarch64.c (aarch64_integer_truncation_p): New
+       function.
+       (aarch64_sve_adjust_stmt_cost): Call it.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * config/aarch64/aarch64-sve.md
+       (@aarch64_load_<ANY_EXTEND:optab><VNx8_WIDE:mode><VNx8_NARROW:mode>):
+       (@aarch64_load_<ANY_EXTEND:optab><VNx4_WIDE:mode><VNx4_NARROW:mode>)
+       (@aarch64_load_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>):
+       Combine into...
+       (@aarch64_load_<ANY_EXTEND:optab><SVE_HSDI:mode><SVE_PARTIAL_I:mode>):
+       ...this new pattern, handling extension to partial modes as well
+       as full modes.  Describe the extension as a predicated rather than
+       unpredicated extension.
+      
(@aarch64_ld<fn>f1_<ANY_EXTEND:optab><VNx8_WIDE:mode><VNx8_NARROW:mode>)
+      
(@aarch64_ld<fn>f1_<ANY_EXTEND:optab><VNx4_WIDE:mode><VNx4_NARROW:mode>)
+      
(@aarch64_ld<fn>f1_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>):
+       Combine into...
+      
(@aarch64_ld<fn>f1_<ANY_EXTEND:optab><SVE_HSDI:mode><SVE_PARTIAL_I:mode>):
+       ...this new pattern, handling extension to partial modes as well
+       as full modes.  Describe the extension as a predicated rather than
+       unpredicated extension.
+       * config/aarch64/aarch64-sve-builtins.cc
+       (function_expander::use_contiguous_load_insn): Add an extra
+       predicate for extending loads.
+       * config/aarch64/aarch64.c (aarch64_extending_load_p): New function.
+       (aarch64_sve_adjust_stmt_cost): Likewise.
+       (aarch64_add_stmt_cost): Use aarch64_sve_adjust_stmt_cost to adjust
+       the cost of SVE vector stmts.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * config/aarch64/iterators.md (SVE_HSDI): New mode iterator.
+       (narrower_mask): Handle VNx4HI, VNx2HI and VNx2SI.
+       * config/aarch64/aarch64-sve.md
+       (<ANY_EXTEND:optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2): New pattern.
+       (*<ANY_EXTEND:optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2): Likewise.
+       (@aarch64_pred_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>): Update
+       comment.  Avoid new narrower_mask ambiguity.
+       (@aarch64_cond_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>): Likewise.
+       (*cond_uxt<mode>_2): Update comment.
+       (*cond_uxt<mode>_any): Likewise.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * config/aarch64/aarch64-modes.def: Define partial SVE vector
+       float modes.
+       * config/aarch64/aarch64-protos.h (aarch64_sve_pred_mode): New
+       function.
+       * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle the
+       new vector float modes.
+       (aarch64_sve_container_bits): New function.
+       (aarch64_sve_pred_mode): Likewise.
+       (aarch64_get_mask_mode): Use it.
+       (aarch64_sve_element_int_mode): Handle structure modes and partial
+       modes.
+       (aarch64_sve_container_int_mode): New function.
+       (aarch64_vectorize_related_mode): Return SVE modes when given
+       SVE modes.  Handle partial modes, taking the preferred number
+       of units from the size of the given mode.
+       (aarch64_hard_regno_mode_ok): Allow partial modes to be stored
+       in registers.
+       (aarch64_expand_sve_ld1rq): Use the mode form of aarch64_sve_pred_mode.
+       (aarch64_expand_sve_const_vector): Handle partial SVE vectors.
+       (aarch64_split_sve_subreg_move): Use the mode form of
+       aarch64_sve_pred_mode.
+       (aarch64_secondary_reload): Handle partial modes in the same way
+       as full big-endian vectors.
+       (aarch64_vector_mode_supported_p): Allow partial SVE vectors.
+       (aarch64_autovectorize_vector_modes): Try unpacked SVE vectors,
+       merging with the Advanced SIMD modes.  If two modes have the
+       same size, try the Advanced SIMD mode first.
+       (aarch64_simd_valid_immediate): Use the container rather than
+       the element mode for INDEX constants.
+       (aarch64_simd_vector_alignment): Make the alignment of partial
+       SVE vector modes the same as their minimum size.
+       (aarch64_evpc_sel): Use the mode form of aarch64_sve_pred_mode.
+       * config/aarch64/aarch64-sve.md (mov<SVE_FULL:mode>): Extend to...
+       (mov<SVE_ALL:mode>): ...this.
+       (movmisalign<SVE_FULL:mode>): Extend to...
+       (movmisalign<SVE_ALL:mode>): ...this.
+       (*aarch64_sve_mov<mode>_le): Rename to...
+       (*aarch64_sve_mov<mode>_ldr_str): ...this.
+       (*aarch64_sve_mov<SVE_FULL:mode>_be): Rename and extend to...
+       (*aarch64_sve_mov<SVE_ALL:mode>_no_ldr_str): ...this.  Handle
+       partial modes regardless of endianness.
+       (aarch64_sve_reload_be): Rename to...
+       (aarch64_sve_reload_mem): ...this and enable for little-endian.
+       Use aarch64_sve_pred_mode to get the appropriate predicate mode.
+       (@aarch64_pred_mov<SVE_FULL:mode>): Extend to...
+       (@aarch64_pred_mov<SVE_ALL:mode>): ...this.
+       (*aarch64_sve_mov<SVE_FULL:mode>_subreg_be): Extend to...
+       (*aarch64_sve_mov<SVE_ALL:mode>_subreg_be): ...this.
+       (@aarch64_sve_reinterpret<SVE_FULL:mode>): Extend to...
+       (@aarch64_sve_reinterpret<SVE_ALL:mode>): ...this.
+       (*aarch64_sve_reinterpret<SVE_FULL:mode>): Extend to...
+       (*aarch64_sve_reinterpret<SVE_ALL:mode>): ...this.
+       (maskload<SVE_FULL:mode><vpred>): Extend to...
+       (maskload<SVE_ALL:mode><vpred>): ...this.
+       (maskstore<SVE_FULL:mode><vpred>): Extend to...
+       (maskstore<SVE_ALL:mode><vpred>): ...this.
+       (vec_duplicate<SVE_FULL:mode>): Extend to...
+       (vec_duplicate<SVE_ALL:mode>): ...this.
+       (*vec_duplicate<SVE_FULL:mode>_reg): Extend to...
+       (*vec_duplicate<SVE_ALL:mode>_reg): ...this.
+       (sve_ld1r<SVE_FULL:mode>): Extend to...
+       (sve_ld1r<SVE_ALL:mode>): ...this.
+       (vec_series<SVE_FULL_I:mode>): Extend to...
+       (vec_series<SVE_I:mode>): ...this.
+       (*vec_series<SVE_FULL_I:mode>_plus): Extend to...
+       (*vec_series<SVE_I:mode>_plus): ...this.
+       (@aarch64_pred_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>): Avoid
+       new VPRED ambiguity.
+       (@aarch64_cond_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>): Likewise.
+       (add<SVE_FULL_I:mode>3): Extend to...
+       (add<SVE_I:mode>3): ...this.
+       * config/aarch64/iterators.md (SVE_ALL, SVE_I): New mode iterators.
+       (Vetype, Vesize, VEL, Vel, vwcore): Handle partial SVE vector modes.
+       (VPRED, vpred): Likewise.
+       (Vctype): New iterator.
+       (vw): Remove SVE modes.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * config/aarch64/iterators.md (SVE_PARTIAL): Rename to...
+       (SVE_PARTIAL_I): ...this.
+       * config/aarch64/aarch64-sve.md: Apply the above renaming throughout.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * config/aarch64/iterators.md (SVE_ALL): Rename to...
+       (SVE_FULL): ...this.
+       (SVE_I): Rename to...
+       (SVE_FULL_I): ...this.
+       (SVE_F): Rename to...
+       (SVE_FULL_F): ...this.
+       (SVE_BHSI): Rename to...
+       (SVE_FULL_BHSI): ...this.
+       (SVE_HSD): Rename to...
+       (SVE_FULL_HSD): ...this.
+       (SVE_HSDI): Rename to...
+       (SVE_FULL_HSDI): ...this.
+       (SVE_HSF): Rename to...
+       (SVE_FULL_HSF): ...this.
+       (SVE_SD): Rename to...
+       (SVE_FULL_SD): ...this.
+       (SVE_SDI): Rename to...
+       (SVE_FULL_SDI): ...this.
+       (SVE_SDF): Rename to...
+       (SVE_FULL_SDF): ...this.
+       (SVE_S): Rename to...
+       (SVE_FULL_S): ...this.
+       (SVE_D): Rename to...
+       (SVE_FULL_D): ...this.
+       * config/aarch64/aarch64-sve.md: Apply the above renaming throughout.
+       * config/aarch64/aarch64-sve2.md: Likewise.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * config/aarch64/aarch64.opt (--param=aarch64-sve-compare-costs):
+       New option.
+       * doc/invoke.texi: Document it.
+       * config/aarch64/aarch64.c (aarch64_autovectorize_vector_modes):
+       By default, return VECT_COMPARE_COSTS for SVE.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * target.h (VECT_COMPARE_COSTS): New constant.
+       * target.def (autovectorize_vector_modes): Return a bitmask of flags.
+       * doc/tm.texi: Regenerate.
+       * targhooks.h (default_autovectorize_vector_modes): Update accordingly.
+       * targhooks.c (default_autovectorize_vector_modes): Likewise.
+       * config/aarch64/aarch64.c (aarch64_autovectorize_vector_modes):
+       Likewise.
+       * config/arc/arc.c (arc_autovectorize_vector_modes): Likewise.
+       * config/arm/arm.c (arm_autovectorize_vector_modes): Likewise.
+       * config/i386/i386.c (ix86_autovectorize_vector_modes): Likewise.
+       * config/mips/mips.c (mips_autovectorize_vector_modes): Likewise.
+       * tree-vectorizer.h (_loop_vec_info::vec_outside_cost)
+       (_loop_vec_info::vec_inside_cost): New member variables.
+       * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize them.
+       (vect_better_loop_vinfo_p, vect_joust_loop_vinfos): New functions.
+       (vect_analyze_loop): When autovectorize_vector_modes returns
+       VECT_COMPARE_COSTS, try vectorizing the loop with each available
+       vector mode and picking the one with the lowest cost.
+       (vect_estimate_min_profitable_iters): Record the computed costs
+       in the loop_vec_info.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * tree-vectorizer.h (can_duplicate_and_interleave_p): Take an
+       element type rather than an element mode.
+       * tree-vect-slp.c (can_duplicate_and_interleave_p): Likewise.
+       Use get_vectype_for_scalar_type to query the natural types
+       for a given element type rather than basing everything on
+       GET_MODE_SIZE (vinfo->vector_mode).  Limit int_mode_for_size
+       query to MAX_FIXED_MODE_SIZE.
+       (duplicate_and_interleave): Update call accordingly.
+       * tree-vect-loop.c (vectorizable_reduction): Likewise.
+
+2019-11-16  Richard Sandiford  <richard.sandif...@arm.com>
+
+       * tree-vectorizer.h (vect_get_vector_types_for_stmt): Take an
+       optional maximum nunits.
+       (get_vectype_for_scalar_type): Likewise.  Also declare a form that
+       takes an slp_tree.
+       (get_mask_type_for_scalar_type): Take an optional slp_tree.
+       (vect_get_mask_type_for_stmt): Likewise.
+       * tree-vect-data-refs.c (vect_analyze_data_refs): Don't store
+       the vector type in STMT_VINFO_VECTYPE for BB vectorization.
+       * tree-vect-patterns.c (vect_recog_bool_pattern): Use
+       vect_get_vector_types_for_stmt instead of STMT_VINFO_VECTYPE
+       to get an assumed vector type for data references.
+       * tree-vect-slp.c (vect_update_shared_vectype): New function.
+       (vect_update_all_shared_vectypes): Likewise.
+       (vect_build_slp_tree_1): Pass the group size to
+       vect_get_vector_types_for_stmt.  Use vect_update_shared_vectype
+       for BB vectorization.
+       (vect_build_slp_tree_2): Call vect_update_all_shared_vectypes
+       before building the vectof from scalars.
+       (vect_analyze_slp_instance): Pass the group size to
+       get_vectype_for_scalar_type.
+       (vect_slp_analyze_node_operations_1): Don't recompute the vector
+       types for BB vectorization here; just handle the case in which
+       we deferred the choice for booleans.
+       (vect_get_constant_vectors): Pass the slp_tree to
+       get_vectype_for_scalar_type.
+       * tree-vect-stmts.c (vect_prologue_cost_for_slp_op): Likewise.
+       (vectorizable_call): Likewise.
+       (vectorizable_simd_clone_call): Likewise.
+       (vectorizable_conversion): Likewise.
+       (vectorizable_shift): Likewise.
+       (vectorizable_operation): Likewise.
+       (vectorizable_comparison): Likewise.
+       (vect_is_simple_cond): Take the slp_tree as argument and
+       pass it to get_vectype_for_scalar_type.
+       (vectorizable_condition): Update call accordingly.
+       (get_vectype_for_scalar_type): Take a group_size argument.
+       For BB vectorization, limit the the vector to that number
+       of elements.  Also define an overload that takes an slp_tree.
+       (get_mask_type_for_scalar_type): Add an slp_tree argument and
+       pass it to get_vectype_for_scalar_type.
+       (vect_get_vector_types_for_stmt): Add a group_size argument
+       and pass it to get_vectype_for_scalar_type.  Don't use the
+       cached vector type for BB vectorization if a group size is given.
+       Handle data references in that case.
+       (vect_get_mask_type_for_stmt): Take an slp_tree argument and
+       pass it to get_mask_type_for_scalar_type.
+
+2019-11-15  Jan Hubicka  <hubi...@ucw.cz>
+
+       * ipa-inline.h (do_estimate_edge_time): Add nonspec_time
+       parameter.
+       (estimate_edge_time): Use it.
+       * ipa-inline-analysis.c (do_estimate_edge_time): Add
+       ret_nonspec_time parameter.
+
+2019-11-15  Szabolcs Nagy  <szabolcs.n...@arm.com>
+
+       * config/m68k/linux.h (MUSL_DYNAMIC_LINKER): Define.
+
+2019-11-15  Nick Clifton  <ni...@redhat.com>
+           Szabolcs Nagy  <szabolcs.n...@arm.com>
+
+       PR target/65649
+       * config/microblaze/microblaze.c (print_operand): Print value as long.
+
+2019-11-15  Jan Hubicka  <hubi...@ucw.cz>
+
+       * ipa-inline.c (edge_badness, inline_small_functions): Revert
+       accidental commit.
+
+2019-11-15  Kwok Cheung Yeung  <k...@codesourcery.com>
+
+       * config/gcn/gcn.h (FIXED_REGISTERS): Unfix frame pointer.
+       (CALL_USED_REGISTERS): Make frame pointer callee-saved.
+
+2019-11-15  Kwok Cheung Yeung  <k...@codesourcery.com>
+
+       * config/gcn/gcn.c (MAX_NORMAL_SGPR_COUNT, MAX_NORMAL_VGPR_COUNT): New.
+       (gcn_conditional_register_usage): Use constants in place of hard-coded
+       values.
+       (gcn_hsa_declare_function_name): Set lower bound for number of
+       SGPRs/VGPRs in non-leaf kernels to MAX_NORMAL_SGPR_COUNT and
+       MAX_NORMAL_VGPR_COUNT.
+
+2019-11-15  Martin Jambor  <mjam...@suse.cz>
+
+       * ipa-utils.h (ipa_remove_useless_jump_functions): Remove stray
+       declaration.
+
+2019-11-15  Kwok Cheung Yeung  <k...@codesourcery.com>
+
+       * config/gcn/gcn.c (default_requested_args): New.
+       (gcn_parse_amdgpu_hsa_kernel_attribute): Initialize requested args
+       set with default_requested_args.
+       (gcn_conditional_register_usage): Limit register usage of non-kernel
+       functions.  Reassign fixed registers if a non-standard set of args is
+       requested.
+       * config/gcn/gcn.h (FIXED_REGISTERS): Fix registers according to ABI.
+
+2019-11-15  Feng Xue  <f...@os.amperecomputing.com>
+
+       PR ipa/92528
+       * ipa-prop.c (update_jump_functions_after_inlining): Invalidate
+       aggregate jump function when inlined-to caller has no edge summary.
+
+2019-11-15  Kwok Cheung Yeung  <k...@codesourcery.com>
+
+       * config/gcn/gcn.c (gcn_init_cumulative_args): Call reinit_regs.
+
+2019-11-15  Kwok Cheung Yeung  <k...@codesourcery.com>
+
+       * config/gcn/gcn.c (gcn_expand_prologue): Remove initialization and
+       prologue use of v0.
+       (print_operand_address): Use v1 for zero vector offset.
+
+2019-11-15  Richard Sandiford  <richard.sandif...@arm.com>
+
+       PR tree-optimization/92515
+       * tree-vect-stmts.c (vectorizable_shift): Record incompatible op1
+       types when converting a vector/scalar shift into a vector/vector one,
+       using tree_nop_conversion_p instead of useless_type_conversion_p.
+       Move the conversion code to the transform block.
+
+2019-11-15  Matthew Malcomson  <matthew.malcom...@arm.com>
+
+       * read-rtl-function.c
+       (function_reader::add_fixup_source_location): Take additional
+       parameter of a column.
+       (function_reader::maybe_read_location): Optionally parse column
+       information and pass to add_fixup_source_location.
+
+2019-11-15  Richard Biener  <rguent...@suse.de>
+
+       PR tree-optimization/92512
+       * tree-vect-loop.c (check_reduction_path): Fix operand index
+       computability check.  Add check for second use in COND_EXPRs.
+
+2019-11-15  Richard Sandiford  <richard.sandif...@arm.com>
+
+       PR target/92515
+       * config/rs6000/rs6000-call.c (rs6000_gimple_fold_builtin): Use
+       VIEW_CONVERT_EXPR to reinterpret vectors as different types.
+
+2019-11-15  Kwok Cheung Yeung  <k...@codesourcery.com>
+
+       * config/gcn/gcn.c (gcn_regno_reg_class): Return VCC_CONDITIONAL_REG
+       register class for VCC_LO and VCC_HI.
+       (gcn_spill_class): Use SGPR_REGS to spill registers in
+       VCC_CONDITIONAL_REG.
+
+2019-11-15  Richard Biener  <rguent...@suse.de>
+
+       PR tree-optimization/92324
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Fix
+       singedness of SLP reduction epilouge operations.  Also reduce
+       the vector width for SLP reductions before doing elementwise
+       operations if possible.
+
+2019-11-15  Matthew Malcomson  <matthew.malcom...@arm.com>
+
+       * passes.c (skip_pass): Set epilogue_completed if skipping the
+       pro_and_epilogue pass.
+
+2019-11-15  Matthew Malcomson  <matthew.malcom...@arm.com>
+
+       * passes.c (should_skip_pass_p): Always run "dfinish".
+
+2019-11-15  Richard Biener  <rguent...@suse.de>
+
+       * ipa-inline.c (inline_small_functions): Move assignment
+       to next before call destroying edge.
+
+2019-11-15  Richard Biener  <rguent...@suse.de>
+
+       PR tree-optimization/92039
+       PR tree-optimization/91975
+       * tree-ssa-loop-ivcanon.c (constant_after_peeling): Revert
+       previous change, treat invariants consistently as non-constant.
+       (tree_estimate_loop_size): Ternary ops with just the first op
+       constant are not optimized away.
+
+2019-11-15  Jakub Jelinek  <ja...@redhat.com>
+
+       * gimplify.c (gimplify_call_expr): Don't call
+       omp_resolve_declare_variant after gimplification.
+       * omp-general.c (omp_context_selector_matches): For isa that might
+       match in some other function, defer if in declare simd function.
+       (omp_context_compute_score): Don't look for " score" in construct
+       trait set.  Set *score to -1 if it can't ever match.
+       (omp_resolve_declare_variant): If any variants need to be deferred,
+       don't punt immediately, but compute scores of all variants and if
+       ther eis a score winner that doesn't need to be deferred, return that.
+
+2019-11-15  Luo Xiong Hu  <luo...@linux.ibm.com>
+
+       * ipa-comdats.c: Fix comments typo.
+       * ipa-profile.c: Fix comments typo.
+       * tree-profile.c (gimple_gen_ic_profiler): Use the new variable
+       __gcov_indirect_call.counters and __gcov_indirect_call.callee.
+       (gimple_gen_ic_func_profiler): Likewise.
+       (pass_ipa_tree_profile::gate): Fix comments typo.
+
+2019-11-15  Xiong Hu Luo  <luo...@linux.ibm.com>
+
+       * ipa-inline.c (inline_small_functions): Update iterator of next.
+

Reply via email to