]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Merged latest trunk changes to ira-select. devel/ira-select
authorVladimir Makarov <vmakarov@gcc.gnu.org>
Thu, 12 Dec 2019 20:46:39 +0000 (20:46 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Thu, 12 Dec 2019 20:46:39 +0000 (20:46 +0000)
From-SVN: r279316

1  2 
gcc/ChangeLog
gcc/common.opt
gcc/ira-costs.c

diff --cc gcc/ChangeLog
index c6f7c0936e8bf02b307092a606bf038a541c6ae7,6ed7abaa343287b551693be9792ff04b7051415b..05afcea323645d259ff3e16f309abf1de9cfb002
- 2018-07-18  Richard Biener  <rguenther@suse.de>
 +2018-07-18  Vladimir Makarov  <vmakarov@redhat.com>
 +
 +      Merge with trunk.
 +      * common.opt (fira-select): New.  Choose the selection algorithm
 +      by default.
 +      * ira-costs.c (struct op_info, op_infos, insn_selection): New.
 +      (insn_selections): New.
 +      (CONST_POOL_OK_P, SMALL_REGISTER_CLASS_P, general_constant_p):
 +      New.
 +      (insn_constraints, setup_insn_alt): New.
 +      (record_address_regs): Forward declaration.
 +      (define_op_cost_from_alt): New.
 +      (scan_one_insn): Call setup_insn_alt and define_op_cost_from_alt
 +      for the selection algorithm.
 +      (find_costs_and_classes): Release insn_constraints and
 +      insn_selections.  Don't reuse already calculated pseudo classes
 +      for the selection algorithm.
 +
+ 2019-11-22  Jakub Jelinek  <jakub@redhat.com>
  
-       PR tree-optimization/86557
-       * tree-vect-patterns.c (vect_recog_divmod_pattern): Also handle
-       EXACT_DIV_EXPR.
+       PR c++/92458
+       * tree-hash-traits.h (tree_decl_hash, tree_ssa_name_hash,
+       tree_hash): Move to ...
+       * tree.h (tree_decl_hash, tree_ssa_name_hash, tree_hash): ... here.
+       (struct decl_tree_cache_traits, struct type_tree_cache_traits): New
+       types.
+       (decl_tree_cache_map, tree_tree_cache_map): New typedefs.
+       PR tree-optimization/92618
+       * tree-ssa-reassoc.c (v_info): Change from auto_vec to a struct
+       containing the auto_vec and a tree.
+       (undistribute_bitref_for_vector): Handle the case when element type
+       of vec is not the same as type of the BIT_FIELD_REF.  Formatting
+       fixes.
+ 2019-11-22  Martin Sebor  <msebor@redhat.com>
+       PR middle-end/83859
+       * attribs.h (struct attr_access): New.
+       * attribs.c (decl_attributes): Add an informational note.
+       * builtins.c (check_access): Make extern.  Consistently set no-warning
+       after issuing a warning.  Handle calls through function pointers.  Set
+       no-warning.
+       * builtins.h (check_access): Declare.
+       * calls.c (rdwr_access_hash): New type.
+       (rdwr_map): Same.
+       (init_attr_rdwr_indices): New function.
+       (maybe_warn_rdwr_sizes): Same.
+       (initialize_argument_information): Call init_attr_rdwr_indices.
+       Call maybe_warn_rdwr_sizes.
+       (get_size_range): Avoid null argument.
+       * doc/extend.texi (attribute access): Document new attribute.
+ 2019-11-22  Andrew Stubbs  <ams@codesourcery.com>
+       * config/gcn/gcn.c (OMP_LDS_SIZE): Define.
+       (ACC_LDS_SIZE): Define.
+       (OTHER_LDS_SIZE): Define.
+       (LDS_SIZE): Redefine using above.
+       (gcn_expand_prologue): Initialize m0 with LDS_SIZE-1.
+ 2019-11-22  Martin Sebor  <msebor@redhat.com>
+       PR middle-end/88226
+       * builtins.c (check_nul_terminated_array): New function.
+       (fold_builtin_0): Remove declaration.
+       (fold_builtin_1): Same.
+       (fold_builtin_2): Same.
+       (fold_builtin_3): Same.
+       (fold_builtin_strpbrk): Add argument.
+       (fold_builtin_strspn): Same.
+       (fold_builtin_strcspn): Same.
+       (expand_builtin_strcat): Call it.  Remove unused argument.
+       (expand_builtin_stpncpy): Same.
+       (expand_builtin_strncat): Same.
+       (expand_builtin_strncpy): Same.  Adjust indentation.
+       (expand_builtin_strcmp): Same.
+       (expand_builtin_strncmp): Same.
+       (expand_builtin_fork_or_exec): Same.
+       (expand_builtin): Handle more built-ins.
+       (fold_builtin_2): Add argument.
+       (fold_builtin_n): Make static.  Add argument.
+       (fold_call_expr): Pass new argument to fold_builtin_n and fold_builtin_2.
+       (fold_builtin_call_array): Pass new argument to fold_builtin_n.
+       (fold_builtin_strpbrk): Add argument.  Call check_nul_terminated_array.
+       (fold_call_stmt): Pass new argument to fold_builtin_n.
+       * builtins.h: Correct a comment.
+       * gimple-fold.c (gimple_fold_builtin_strchr): Call
+       check_nul_terminated_array.
+       * tree-ssa-strlen.c (handle_builtin_strlen): Call
+       check_nul_terminated_array.
+       (handle_builtin_strchr): Same.
+       (handle_builtin_string_cmp): Same.
  
- 2018-07-18  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 2019-11-22  Martin Sebor  <msebor@redhat.com>
  
-       * config/s390/s390.c (s390_function_profiler): Generate CFI.
+       PR tree-optimization/92501
+       * gimple-fold.c ((gimple_fold_builtin_string_compare): Let strncmp
+       handle unterminated arrays.  Rename local variables for clarity.
  
- 2018-07-17  Jeff Law  <law@redhat.com>
+ 2019-11-22  Andrew Stubbs  <ams@codesourcery.com>
  
-       * config/arm/arm.c (get_label_padding): Update for recent
-       changes to label_to_alignment.
+       * config/gcn/gcn.c (gcn_hsa_declare_function_name): Calculate
+       granulated_sgprs according to architecture.
  
-       PR tree-optimization/86010
-       * tree-ssa-dse.c (compute_trims): Fix typo/thinko.
+ 2019-11-22  Jan Hubicka  <jh@suse.cz>
  
-       * config/mips/mips.c (vr4130_align_insns): Update for recent
-       changes to label_to_alignment.
+       * ggc-page.c (ggc_collect): Call memory_block_pool::trim.
+       * memory-block.cc (memory_block_pool::clear_free_list): Rename to ...
+       (memory_block_pool::reduce_free_list): ... this one.
+       (memory_block_pool::trim): New static function.
+       * memory-block.h (memory_block_pool::freelist_size): New constant
+       (memory_block_pool::clear_free_list): Rename to ...
+       (memory_block_pool::reduce_free_list): ... this one.
+       (memory_block_pool::trim): Declare.
  
-       * config/frv/frv.c (frv_label_align): Update for recent changes
-       to label_to_alignment.
+ 2019-11-22  Richard Sandiford  <richard.sandiford@arm.com>
  
-       * config/nios2/nios2.c (nios2_label_align): Update for recent
-       changes which dropped ALIGN_LABELS_LOG.
+       * tree-vect-stmts.c (vect_model_simple_cost): Take an optional
+       vect_cost_for_stmt.
+       (vectorizable_condition): Calculate the cost of EXTRACT_LAST_REDUCTION
+       here rather than...
+       * tree-vect-loop.c (vect_model_reduction_cost): ...here.
  
- 2018-07-17  Andreas Schwab  <schwab@linux-m68k.org>
+ 2019-11-22  Claudiu Zissulescu  <claziss@synopsys.com>
  
-       * config/m68k/m68k.md (umulsi3_highpart+1, const_umulsi3_highpart)
-       (smulsi3_highpart+1, const_smulsi3_highpart): Add CC_STATUS_INIT.
+       * config/arc/arc.md (bic_f): Use cc_set_register predicate.
+       (bic_cmp0_noout): New pattern.
+       (bic_cmp0): Likewise.
+       (neg_scc_insn): Remove pattern.
+       (not_scc_insn): Likewise.
  
- 2018-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
+ 2019-11-21  Harald van Dijk  <harald@gigawatt.nl>
  
-       * config/arc/arc.c (arc_label_align): Use align_labels instead of
-       deprecated align_labels_log.
+       * doc/invoke.texi (-fcommon): Remove claim about ISO C.
  
- 2018-07-17  Richard Biener  <rguenther@suse.de>
+ 2019-11-21  Joseph Myers  <joseph@codesourcery.com>
  
-       PR lto/86456
-       * dwarf2out.c (init_sections_and_labels): Always generate
-       a debug_line_str_section for early LTO debug.
-       (dwarf2out_finish): Reset debug_line_str_hash output early.
-       Bump counter for extra dwarf5 .debug_loc labels to not conflict
-       with fat LTO part.
-       (dwarf2out_early_finish): Output debug_line_str.
+       * gimplify.c (expand_FALLTHROUGH_r, expand_FALLTHROUGH): Use
+       pedwarn instead of warning_at for fallthrough not preceding a case
+       or default label.
  
- 2018-07-17  Robin Dapp  <rdapp@linux.ibm.com>
+ 2019-11-22  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
-       * config/s390/s390.c (preferred_la_operand_p): Do not use LA with
-       index register on z196 or later.
+       PR tree-optimization/92608
+       * tree-ssa-loop-unswitch.c (find_loop_guard): Use safe_dyn_cast instead
+       of dyn_cast.
  
- 2018-07-17  Robin Dapp  <rdapp@linux.ibm.com>
+ 2019-11-21  Segher Boessenkool  <segher@kernel.crashing.org>
  
-       * config/s390/s390.c (s390_default_align): Set default function
-       alignment to 16.
-       (s390_override_options_after_change): Call s390_default align.
-       (s390_option_override_internal): Call s390_default_align.
-       (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define.
+       * config/rs6000/predicates.md (extra_insn_branch_comparison_operator):
+       New predicate.
+       * config/rs6000/rs6000-protos.h (rs6000_emit_fp_cror): New declaration.
+       * config/rs6000/rs6000.c (rs6000_generate_compare): Don't do anything
+       special for FP comparisons that need a cror instruction eventually.
+       (rs6000_emit_fp_cror): New function.
+       (rs6000_emit_sCOND): Expand all floating point comparisons to one
+       instruction, for normal FP modes, with HONOR_NANS.
+       (rs6000_emit_cbranch): Reformat.
+       * config/rs6000/rs6000.md (fp_rev): New iterator.
+       (fp_two): New iterator.
+       *<code><mode>_cc for fp_rev and GPR: New define_insn_and_split.
+       *<code><mode>_cc for fp_two and GPR: New define_insn_and_split.
+       *cbranch_2insn: New define_insn_and_split.
+ 2019-11-21  Richard Sandiford  <richard.sandiford@arm.com>
+       PR tree-optimization/92526
+       * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Reject
+       versioning for alignment if the accesses do not have a consistent
+       mask, rather than asserting that the masks are consistent.
+ 2019-11-21  Richard Sandiford  <richard.sandiford@arm.com>
+       PR tree-optimization/92595
+       * tree-vect-stmts.c (get_group_load_store_type): Add a VECTOR_MODE_P
+       check.
+       (vectorizable_store, vectorizable_load): Likewise.
  
- 2018-07-17  Jakub Jelinek  <jakub@redhat.com>
+ 2019-11-21  Jan Hubicka  <jh@suse.cz>
  
-       PR middle-end/86542
-       * omp-low.c (create_task_copyfn): Copy over also fields corresponding
-       to _looptemp_ clauses, other than the first two.
+       * ipa-inline.c (update_callee_keys): Add parameter UPDATE_SINCE.
+       (resolve_noninline_speculation, inline_small_functions): Avoid
+       redundant updates.
  
- 2018-07-17  Martin Liska  <mliska@suse.cz>
+ 2019-11-21  Richard Biener  <rguenther@suse.de>
  
-       * opts.c: Do not enable OPT_falign_* for -Os.
+       * lra.c (lra_insn_recog_data_pool): New.
+       (free_insn_recog_data): Adjust.
+       (finish_insn_recog_data): Release lra_insn_recog_data_pool.
+       (lra_set_insn_recog_data): Allocate from lra_insn_recog_data_pool.
  
- 2018-07-17  Martin Liska  <mliska@suse.cz>
+ 2019-11-21  Richard Biener  <rguenther@suse.de>
  
-       * align.h (MAX_CODE_ALIGN): New.
-       (MAX_CODE_ALIGN_VALUE): New.
-       * common/config/i386/i386-common.c (ix86_handle_option):
-       (MAX_CODE_ALIGN): Moved to align.h.
-       * final.c (MAX_CODE_ALIGN): Likewise.
-       * opts.c (parse_and_check_align_values):
-       (MAX_CODE_ALIGN): Likewise.
-       (MAX_CODE_ALIGN_VALUE): Likewise.
+       PR tree-optimization/92596
+       * tree-vect-slp.c (vect_build_slp_tree): Fix pasto.
  
- 2018-07-17  Martin Liska  <mliska@suse.cz>
+ 2019-11-21  Jan Hubicka  <jh@suse.cz>
  
-       * config/i386/att.h (ASM_OUTPUT_ALIGN): Fix spacing
-         in order to fulfil coding style.
-       * config/i386/cygming.h (ASM_OUTPUT_ALIGN): Likewise.
-       * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
-       * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
-       * config/iq2000/iq2000.h (ASM_OUTPUT_ALIGN): Likewise.
-       * config/pa/pa.h (ASM_OUTPUT_ALIGN): Likewise.
-       * config/sparc/sol2.h (ASM_OUTPUT_ALIGN_WITH_NOP): Likewise.
-       * config/sparc/sparc.h (ASM_OUTPUT_ALIGN): Likewise.
-       * config/visium/visium.h (ASM_OUTPUT_ALIGN): Likewise.
-       (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
+       * ipa-fnsummary.c (evaluate_conditions_for_known_args): Be
+       ready for some vectors to not be allocated.
+       (evaluate_properties_for_edge): Document better; make
+       known_vals and known_aggs caller allocated; avoid determining
+       values of parameters which are not used.
+       (ipa_merge_fn_summary_after_inlining): Pre allocate known_vals and
+       known_aggs.
+       * ipa-inline-analysis.c (do_estimate_edge_time): Likewise.
+       (do_estimate_edge_size): Likewise.
+       (do_estimate_edge_hints): Likewise.
+       * ipa-cp.c (ipa_get_indirect_edge_target_1): Do not early exit when
+       values are not known.
+       (ipa_release_agg_values): Add option to not release vector itself.
+       * ipa-prop.h (ipa_release_agg_values): Add parameter RELEASE_VECTOR.
+ 2019-11-21  Richard Biener  <rguenther@suse.de>
+       * cfgloop.h (loop_iterator::~loop_iterator): Remove.
+       (loop_iterator::to_visit): Use an auto_vec with internal storage.
+       (loop_iterator::loop_iterator): Adjust.
+       * cfganal.c (compute_dominance_frontiers_1): Fold into...
+       (compute_dominance_frontiers): ... this.  Hoist invariant
+       get_immediate_dominator call.
+       (compute_idf): Use a work-set instead of a work-list for more
+       optimal iteration order and duplicate avoidance.
+       * tree-into-ssa.c (mark_phi_for_rewrite): Avoid re-allocating
+       the vector all the time, instead pre-allocate the vector only
+       once.
+       (delete_update_ssa): Simplify.
+       * vec.h (va_heap::release): Disable -Wfree-nonheap-object around it.
  
- 2018-07-17  Martin Liska  <mliska@suse.cz>
+ 2019-11-21  Jakub Jelinek  <jakub@redhat.com>
  
-       * align.h: New file.
-       * config/alpha/alpha.c (alpha_align_insns_1): Use align_functions directly.
-       * config/i386/i386.c (ix86_avoid_jump_mispredicts): Use new return type
-       align_flags of label_to_alignment.
-       * config/m32r/m32r.h (LOOP_ALIGN): Wrap returned values into align_flags
-       class.
-       * config/m68k/m68k.c: Do not use removed align_labels_value and
-       align_loops_value.
-       * config/nds32/nds32.h (JUMP_ALIGN): Wrap result into align_flags class.
-       (LOOP_ALIGN): Likewise.
-       (LABEL_ALIGN): Likewise.
-       * config/powerpcspe/powerpcspe.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP):
-       Remove not used macro.
-       (rs6000_loop_align): Change return type to align_flags.
-       (rs6000_loop_align_max_skip): Remove.
-       * config/rs6000/rs6000-protos.h (rs6000_loop_align):
-       Change return type to align_flags.
-       * config/rs6000/rs6000.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP):
-       Remove not used macro.
-       (rs6000_loop_align):  Change return type to align_flags.
-       (rs6000_loop_align_max_skip): Remove.
-       * config/rx/rx.h (JUMP_ALIGN): Wrap integer values
-       * config/rx/rx-protos.h (rx_align_for_label): Make it
-         static function.
-       * config/rx/rx.c (rx_align_for_label): Change return type
-         to align_flags.
-       (rx_max_skip_for_label): Remove TARGET_ASM_*_ALIGN_MAX_SKIP
-         macro definitions.
-       into align_flags class.
-       (LABEL_ALIGN): Likewise.
-       (LOOP_ALIGN): Likewise.
-       * config/s390/s390.c (s390_label_align): Use align_flags
-       class member.
-       (s390_asm_output_function_label): Likewise.
-       * config/sh/sh.c (sh_override_options_after_change):
-       Use align_flags class directly without macros.
-       (find_barrier): Likewise.
-       (barrier_align): Likewise.
-       (sh_loop_align): Likewise.
-       * config/spu/spu.c (spu_option_override):
-       Use align_flags_tuple::get_value instead of removed macros.
-       (spu_sched_init): Likewise.
-       * config/spu/spu.h (GTY): Likewise.
-       * config/visium/visium.c (visium_option_override):
-       Set "8" as default secondary alignment.
-       * config/visium/visium.h (SUBALIGN_LOG): Define to 3
-       in order to guarantee secondary alignment of 8.
-       * coretypes.h: Include align.h header file.
-       * doc/tm.texi: Remove TARGET_ASM_JUMP_ALIGN_MAX_SKIP,
-       TARGET_ASM_LOOP_ALIGN_MAX_SKIP, TARGET_ASM_LABEL_ALIGN_MAX_SKIP
-         and TARGET_ASM_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP macros.
-       * doc/tm.texi.in: Likewise.
-       * final.c (struct label_alignment): Remove not used structure.
-       (LABEL_ALIGN): Change type to align_flags.
-       (LOOP_ALIGN): Likewise.
-       (JUMP_ALIGN): Likewise.
-       (default_loop_align_max_skip): Remove.
-       (default_label_align_max_skip): Likewise.
-       (default_jump_align_max_skip): Likewise.
-       (default_label_align_after_barrier_max_skip):
-       (LABEL_TO_ALIGNMENT): Change to access label_align vector.
-       (LABEL_TO_MAX_SKIP): Remove.
-       (label_to_alignment): Return align_flags type instead of integer.
-       (label_to_max_skip): Remove.
-       (align_fuzz): Use align_flags type.
-       (compute_alignments): Use align_flags type and use align_flags::max
-       to combine multiple alignments.
-       (grow_label_align): Grow vec instead of C array.
-       (update_alignments): Assign just LABEL_TO_ALIGNMENT.
-       (shorten_branches):  Use align_flags type and use align_flags::max
-       to combine multiple alignments.
-       (final_scan_insn_1): Remove usage of secondary alignment that comes
-       from label alignment, but instead use proper secondary alignment
-       which is computed in grow_label_align.
-       * flags.h (struct align_flags_tuple): Move to align.h.
-       (struct align_flags): Likewise.
-       (state_align_loops): Rename to align_loops.
-       (state_align_jumps): Rename to align_jumps.
-       (state_align_labels): Rename to align_labels.
-       (state_align_functions): Rename to align_functions.
-       (align_loops_log): Remove.
-       (align_jumps_log): Remove.
-       (align_labels_log): Remove.
-       (align_functions_log): Remove.
-       (align_loops_max_skip): Remove.
-       (align_jumps_max_skip): Remove.
-       (align_labels_max_skip): Remove.
-       (align_functions_max_skip): Remove.
-       (align_loops_value): Remove.
-       (align_jumps_value): Remove.
-       (align_labels_value): Remove.
-       (align_functions_value): Remove.
-       * output.h (label_to_alignment): Change return type to align_flags.
-       (label_to_max_skip): Remove.
-       * target.def: Remove loop_align_max_skip, label_align_max_skip,
-       jump_align_max_skip macros.
-       * targhooks.h (default_loop_align_max_skip): Remove.
-       (default_label_align_max_skip): Likewise.
-       (default_jump_align_max_skip): Likewise.
-       (default_label_align_after_barrier_max_skip): Remove.
-       * toplev.c (read_log_maxskip): Use ::normalize function.
-       (parse_N_M): Remove not used argument and also call ::normalize.
-       (parse_alignment_opts): Do not pass unused arguments.
-       * varasm.c (assemble_start_function): Use directly align_functions
-       instead of removed macros.
-       * system.h: Do not poison removed macros.
- 2018-07-17  Jakub Jelinek  <jakub@redhat.com>
-       PR middle-end/86539
-       * gimplify.c (gimplify_omp_for): Ensure taskloop firstprivatized init
-       and cond temporaries don't have reference type if iterator has
-       pointer type.  For init use &for_pre_body instead of pre_p if
-       for_pre_body is non-empty.
- 2018-07-16  Segher Boessenkool  <segher@kernel.crashing.org>
-       * config/rs6000/rs6000.md (trunc<mode>sf2): Expand truncates of
-       double-double modes to SFmode directly directly.
-       (trunc<mode>sf2_fprs): Delete.
- 2018-07-16  Segher Boessenkool  <segher@kernel.crashing.org>
-       * config/rs6000/rs6000.c (init_float128_ibm): Use the correct names
-       for conversions between IFmode and the decimal floating point modes.
-       (init_float128_ieee): Use the correct names for conversions between
-       KFmode and the decimal floating point modes.
- 2018-07-16  Segher Boessenkool  <segher@kernel.crashing.org>
-       * config/rs6000/rs6000.c (init_float128_ibm): Use more correct names
-       for the conversions between TDmode and IFmode.
-       (init_float128_ieee): Use more correct names for the conversions
-       between TDmode and KFmode.
- 2018-07-16  Jakub Jelinek  <jakub@redhat.com>
-       PR tree-optimization/86526
-       * builtins.c (expand_builtin_memcmp): Formatting fixes.
-       (inline_expand_builtin_string_cmp): Likewise.
-       (inline_string_cmp): Likewise.  Use c_readstr instead of
-       builtin_memcpy_read_str.  Add unit_mode temporary.
- 2018-07-16  Bernd Edlinger  <bernd.edlinger@hotmail.de>
-       PR middle-end/86528
-       * builtins.c (check_access): Bail out if range[0] is no INTEGER_CST.
-       * expr.c (string_constant): Fix the element size of ARRAY_TYPE.
- 2018-07-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
-       * doc/extend.texi (PowerPC AltiVec Built-in Functions):
-       Alphabetize prototypes of built-in functions, separating out
-       built-in functions that are listed in this section but should be
-       described elsewhere.
- 2018-07-16  Uros Bizjak  <ubizjak@gmail.com>
-       PR target/86511
-       * expmed.c (emit_store_flag): Do not emit setcc followed by a
-       conditional move when trapping comparison was split to a
-       non-trapping one (and vice versa).
- 2018-07-16  Ilya Leoshkevich  <iii@linux.ibm.com>
-       * config/s390/s390.c (s390_function_profiler): Generate nops
-       instead of profiler call sequences.
-       * config/s390/s390.opt: Add the new option.
- 2018-07-16  Ilya Leoshkevich  <iii@linux.ibm.com>
-       * config/s390/s390.c (s390_function_profiler): Generate
-       __mcount_loc section.
-       * config/s390/s390.opt: Add the new option.
- 2018-07-16  Ilya Leoshkevich  <iii@linux.ibm.com>
-       * common.opt: Add the new warning.
-       * config/s390/s390.c (s390_function_profiler): Emit "brasl
-       %r0,__fentry__" when -mfentry is specified.
-       (s390_option_override_internal): Disallow -mfentry for 31-bit
-       CPUs.
-       * config/s390/s390.opt: Add the new option.
- 2018-07-16  Richard Biener  <rguenther@suse.de>
-       PR lto/86523
-       * dwarf2out.c (dwarf2out_register_external_die): Assign DIE parents
-       for function-local FUNCTION_DECL and RESULT_DECL immediately.
- 2018-07-16  Martin Liska  <mliska@suse.cz>
+       PR tree-optimization/91355
+       * tree-ssa-sink.c (select_best_block): Use >= rather than >
+       for early_bb scaled count with best_bb count comparison.
  
-         PR ipa/86529
-       * ipa-pure-const.c (malloc_candidate_p): Revert ::get
-         to ::get_create.
+       * ipa-fnsummary.h (enum ipa_hints_vals): Fix comment typo,
+       preffer -> prefer.
+       * ipa-inline.c (edge_badness): Likewise.
+       * lto-streamer.h (class lto_location_cache): Likewise.
+       * tree-ssa-sink.c (select_best_block): Likewise.  Fix comment typos,
+       gratutious -> gratuitous.
  
- 2017-07-16  Claudiu Zissulescu  <claziss@synopsys.com>
+ 2019-11-21  Richard Biener  <rguenther@suse.de>
  
-       * config/arc/arcHS.md: Update ARCHS scheduling rules.
+       Revert
+       2019-09-17  Richard Biener  <rguenther@suse.de>
  
- 2017-07-16  Claudiu Zissulescu  <claziss@synopsys.com>
+       PR tree-optimization/91790
+       * tree-vect-stmts.c (vectorizable_load): For BB vectorization
+       use the correct DR for setting up realignment.
  
-       * config/arc/arc-arch.h (arc_tune_attr): Add new tune parameters
-       for ARCHS4x.
-       * config/arc/arc-cpus.def (hs4x): New cpu.
-       (hs4xd): Likewise.
-       * config/arc/arc-tables.opt: Regenerate.
-       * config/arc/arc.c (arc_sched_issue_rate): New function.
-       (TARGET_SCHED_ISSUE_RATE): Define.
-       (TARGET_SCHED_EXPOSED_PIPELINE): Likewise.
-       * config/arc/arc.md (attr type): Add fpu_fuse, fpu_sdiv, fpu_ddiv,
-       fpu_cvt.
-       (attr tune): Add ARCHS4x tune values.
-       (attr tune_dspmpy): Define.
-       (*tst): Correct instruction type.
-       * config/arc/arcHS.md: Don't use this automaton for ARCHS4x cpus.
-       * config/arc/arcHS4x.md: New file.
-       * config/arc/fpu.md: Update instruction type attributes.
-       * config/arc/t-multilib: Regenerate.
+ 2019-11-21  Richard Biener  <rguenther@suse.de>
  
- 2018-07-16  Tom de Vries  <tdevries@suse.de>
+       * tree-ssa-structalias.c (equiv_class_hasher): Change to nofree.
+       (equiv_class_obstack): New.
+       (equiv_class_lookup_or_add): Allocate from equiv_class_obstack.
+       (perform_var_substitution): Initialize equiv_class_obstack.
+       (free_var_substitution_info): Free equiv_class_obstack.
  
-       PR debug/86455
-       * var-tracking.c (vt_initialize): Fix pre_dec handling.
+ 2019-11-20  Jan Hubicka  <jh@suse.cz>
  
- 2018-07-16  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+       * ipa-inline.c (want_early_inline_function_p): Do not estimate
+       edge growth when callee function is very large.
+       * ipa-inline.h (estimate_min_edge_growth): New.
  
-       * config/aarch64/atomics.md (aarch64_store_execlusive<mode>): Add
-       early clobber.
+ 2019-11-20  Jan Hubicka  <jh@suse.cz>
  
- 2018-07-16  Eric Botcazou  <ebotcazou@adacore.com>
+       * ipa-fnsummary.c (ipa_fn_summary::account_size_time): Allow
+       negative time in calls summary; correct roundoff errors
+       leading to negative times.
+       (ipa_merge_fn_summary_after_inlining): Update calls size time table
+       if present.
+       (ipa_update_overall_fn_summary): Add RESET parameter.
+       * ipa-fnsummary.h (ipa_update_overall_fn_summary): Update prototype.
+       * ipa-inline-transform.c (inline_call): Enable incremental updates.
+       
+ 2019-11-20  Richard Sandiford  <richard.sandiford@arm.com>
  
-       PR tree-optimization/86514
-       * tree-ssa-reassoc.c (init_range_entry) <CASE_CONVERT>: Return for a
-       conversion to a boolean type from a type with greater precision.
+       * tree-vect-slp.c (vect_schedule_slp_instance): Restore stmt
+       def types for two-operation SLP.
  
- 2018-07-16  Tom de Vries  <tdevries@suse.de>
+ 2019-11-20  Richard Sandiford  <richard.sandiford@arm.com>
  
-       * var-tracking.c (vt_initialize): Print adjusted insn slim if
-       dump_flags request TDF_SLIM.
+       PR testsuite/92366
+       * doc/sourcebuild.texi (vect_char_add): Document.
  
- 2018-07-16  Aldy Hernandez  <aldyh@redhat.com>
+ 2019-11-20  Alexandre Oliva <oliva@adacore.com>
  
-         * fold-const.c (int_const_binop_1): Abstract...
-         (wide_int_binop): ...wide int code here.
-       (poly_int_binop): ...poly int code here.
-       Abstract the rest of int_const_binop_1 into int_const_binop.
-         * fold-const.h (wide_int_binop): New.
-         * tree-vrp.c (vrp_int_const_binop): Call wide_int_binop.
-       Remove useless PLUS/MINUS_EXPR case.
-         (zero_nonzero_bits_from_vr): Move wide int code...
-         (zero_nonzero_bits_from_bounds): ...here.
-         (extract_range_from_binary_expr_1): Move mask optimization code...
-         (range_easy_mask_min_max): ...here.
-         * tree-vrp.h (zero_nonzero_bits_from_bounds): New.
-         (range_easy_mask_min_max): New.
+       * function.h (CALLEE_FROM_CGRAPH_P): Remove.
+       * function.c (record_final_call): Record even calls that might
+       have been in the cgraph.
+       * toplev.c (dump_final_node_vcg): Skip iteration over cgraph
+       callees.
  
- 2018-07-15  Jeff Law  <law@redhat.com>
+ 2019-11-20  Janne Blomqvist  <jb@gcc.gnu.org>
  
-       PR target/85993
-       * config/sh/sh.c (output_mi_thunk): Remove dead conditional
-       block.
+       * configure.ac: Use https for gcc.gnu.org
+       * configure: Regenerated.
+       * doc/install.texi: Use https for gcc.gnu.org.
+       * doc/sourcebuild.texi: Likewise.
  
- 2018-07-14  Jim Wilson  <jimw@sifive.com>
+ 2019-11-20  Julian Brown  <julian@codesourcery.com>
  
-       * config/riscv/linux.h (TARGET_ASM_FILE_END): New.
+       * config/gcn/gcn.c (gcn_asm_output_symbol_ref): Handle null cfun.
  
- 2018-07-14  Paul Koning  <ni1d@arrl.net>
+ 2019-11-20  Jan Hubicka  <jh@suse.cz>
  
-       * config/pdp11/pdp11.c (pdp11_rtx_costs): Bugfixes.
+       * ipa-fnsummary.c (ipa_fn_summary::account_size_time): Add CALL
+       parameter and update call_size_time_table.
+       (ipa_fn_summary::max_size_time_table_size): New constant.
+       (estimate_calls_size_and_time_1): Break out from ...
+       (estimate_calls_size_and_time): ... here; implement summary production.
+       (summarize_calls_size_and_time): New function.
+       (ipa_call_context::estimate_size_and_time): Bypass
+       estimate_calls_size_and_time for leaf functions.
+       (ipa_update_overall_fn_summary): Likewise.
+       * ipa-fnsummary.h (call_size_time_table): New.
+       (ipa_fn_summary::account_size_time): Update prototype.
  
- 2018-07-13  Jan Hubicka  <hubicka@ucw.cz>
+ 2019-11-20  Joseph Myers  <joseph@codesourcery.com>
  
-       * lto-streamer-out.c (copy_function_or_variable): Dump info about
-       copying section.
+       * doc/invoke.texi (-Wc11-c2x-compat): Document.
  
- 2018-07-13  Bill Schmidt  <wschmidt@linux.ibm.com>
-           Steve Munroe  <munroesj52@gmail.com>
+ 2019-11-20  Wilco Dijkstra  <wdijkstr@arm.com>
  
-       * config/rs6000/emmintrin.h (_mm_and_si128): New function.
-       (_mm_andnot_si128): Likewise.
-       (_mm_or_si128): Likewise.
-       (_mm_xor_si128): Likewise.
+       PR85678
+       * common.opt (fcommon): Change init to 1.
+       * doc/invoke.texi (-fcommon): Update documentation.
  
- 2018-07-13  Qing Zhao  <qing.zhao@oracle.com>
+ 2019-11-20  Jan Hubicka  <jh@suse.cz>
  
-       PR middle-end/78809
-       * builtins.c (expand_builtin_memcmp): Inline the calls first
-       when result_eq is false.
-       (expand_builtin_strcmp): Inline the calls first.
-       (expand_builtin_strncmp): Likewise.
-       (inline_string_cmp): New routine. Expand a string compare
-       call by using a sequence of char comparison.
-       (inline_expand_builtin_string_cmp): New routine. Inline expansion
-       a call to str(n)cmp/memcmp.
-       * doc/invoke.texi (--param builtin-string-cmp-inline-length):
-       New option.
-       * params.def (BUILTIN_STRING_CMP_INLINE_LENGTH): New.
+       * fibonacci_heap.h (fibonacci_heap<K,V>::consolidate): Turn auto_vec
+       to ordinary array.
  
- 2018-07-13  Richard Earnshaw  <rearnsha@arm.com>
+ 2019-11-20  Jan Hubicka  <jh@suse.cz>
  
-       * config/arm/driver-arm.c: Include arm-native.h.
-       (host_detect_local_cpu): Use auto-generated data tables.
-       (vendors, arm_cpu_table): Delete.  Move part information to ...
-       * config/arm/arm-cpus.in: ... here.
-       * config/arm/parsecpu.awk (gen_native): New function.
-       (vendor, part): New CPU fields.
-       (END): Add support for building the native CPU detection tables.
-       * config/arm/t-arm (arm-native.h): Add build rule.
-       (driver-arm.o): Add dependency on arm-native.h.
+       * fibonacci_heap.h (fibonacci_heap<K,V>::fibonacci_heap):
+       Add allocator parameter.
+       (fibonacci_heap<K,V>::~fibonacci_heap): Optimize destruction.
+       (fibonacci_heap<K,V>::m_allocator): New.
+       (fibonacci_heap<K,V>::m_own_allocator): New.
+       (fibonacci_heap<K,V>::insert): Use allocator.
+       (fibonacci_heap<K,V>::extract_min): Likewise.
+       (fibonacci_heap<K,V>::union_with): Assert that both heaps share
+       allocator.
+       (fibonacci_heap<K,V>::consolidate): Allocate constant sized vector
+       on stack.
+       * fibonacci_heap.c: Include alloc-pool
+       (test_empty_heap): Initialize allocator.
+       (test_union): Likewise.
+       * bb-reorder.c: Include alloc-pool.h.
+       * tracer.c: Inlclude alloc-pool.h.
  
- 2018-07-13  Richard Biener  <rguenther@suse.de>
+ 2019-11-20  Jan Hubicka  <jh@suse.cz>
  
-       PR middle-end/85974
-       * match.pd (addr1 - addr2): Allow either of the operand to
-       have a conversion.
+       * lto-streamer-out.c (DFS::sccstack): Turn into auto-vec.
+       Preallocate for 32 entries.
+       (DFS::worklist): Likewise.
+       (DFS::DFS): Do not initialize sccstack and worklist.
+       (DFS::~DFS): Do not release sccstack.
  
- 2018-07-13  Tom de Vries  <tdevries@suse.de>
+ 2019-11-20  Segher Boessenkool  <segher@kernel.crashing.org>
  
-       * tree-inline.c (remap_ssa_name): Save and reuse debug exprs generated
-       in remap_ssa_name.
+       PR target/92573
+       * config/rs6000/dfp.md (dfptstsfi_<code>_<mode> for DFP_TEST and DDTD):
+       Handle UNORDERED if !HONOR_NANS.
  
- 2018-07-13  Jackson Woodruff  <jackson.woodruff@arm.com>
+ 2019-11-20  Jan Hubicka  <jh@suse.cz>
  
-       * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): Use
-       arrays instead of numbered variables.
+       * ipa-inline.c (wrapper_heuristics_may_apply): Break out from ...
+       (edge_badness): ... here.
+       (inline_small_functions): Use monotonicity of badness calculation
+       to avoid redundant updates.
  
- 2018-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 2019-11-20  Richard Biener  <rguenther@suse.de>
  
-       * config/sparc/sparc-protos.h (sparc_compute_frame_size): Delete.
-       * config/sparc/sparc.c (sparc_compute_frame_size): Make static.
+       * tree-vect-slp.c (vect_analyze_slp_instance): Dump
+       constructors we are actually analyzing.
+       (vect_slp_check_for_constructors): Do not vectorize uniform
+       constuctors, do not dump here.
  
- 2018-07-13  Richard Biener  <rguenther@suse.de>
+ 2019-11-20  Richard Biener  <rguenther@suse.de>
  
-       PR debug/86452
-       * dwarf2out.c (gen_type_die_with_usage): Use scope_die_for
-       instead of get_context_die.
+       PR tree-optimization/92537
+       * tree-vect-slp.c (vect_analyze_slp_instance): Move CTOR
+       vectorization validity check...
+       (vect_slp_analyze_operations): ... here.
  
- 2018-07-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
-           Richard Biener  <rguenther@suse.de>
+ 2019-11-20  Claudiu Zissulescu  <claziss@synopsys.com>
  
-       PR middle-end/86489
-       * tree-ssa-loop-niter.c (number_of_iterations_popcount): Check
-       that the loop latch destination where phi is defined.
+       * config/arc/arc-protos.h (make_pass_arc_ifcvt): Declare.
+       (make_pass_arc_predicate_delay_insns): Likewise.
+       * config/arc/arc.c (class pass_arc_ifcvt): Reformat text, add gate
+       method, remove clone.
+       (class pass_arc_predicate_delay_insns): Likewise.
+       (arc_init): Remove registering of ARC specific passes.
+       * config/arc/t-arc (PASSES_EXTRA): Add arc-passes.def.
+       * config/arc/arc-passes.def: New file.
  
- 2018-07-12  Kito Cheng  <kito.cheng@gmail.com>
+ 2019-11-20  Jakub Jelinek  <jakub@redhat.com>
  
-         * config/riscv/riscv.c (enum riscv_privilege_levels): Add UNKNOWN_MODE.
-         (riscv_expand_epilogue): Add assertion to check interrupt mode.
-         (riscv_set_current_function): Extract getting interrupt type to new
-         function.
-         (riscv_get_interrupt_type): New function.
-         (riscv_merge_decl_attributes): New function, checking interrupt type is
-         same.
-         (TARGET_MERGE_DECL_ATTRIBUTES): Define.
+       PR middle-end/90840
+       * expmed.c (store_bit_field_1): Handle the case where op0 is not a MEM
+       and has a mode that doesn't have corresponding integral type.
  
- 2018-07-12  Paul Koning  <ni1d@arrl.net>
+       PR target/90867
+       * config/i386/i386-options.c (ix86_valid_target_attribute_tree): Don't
+       clear opts->x_ix86_isa_flags{,2} here...
+       (ix86_valid_target_attribute_inner_p): ... but here when seeing
+       arch=.  Also clear opts->x_ix86_isa_flags{,2}_explicit.
  
-       * config/pdp11/pdp11.c (pdp11_output_def): Fix typo in .set
-       directive.
+       PR c/90898
+       * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Remove
+       assertion.
+       (insert_clobbers_for_var): Fix a typo in function comment.
  
- 2018-07-12  Paul Koning  <ni1d@arrl.net>
+ 2019-11-20  Jiangning Liu  <jiangning.liu@amperecomputing.com>
+           Jakub Jelinek  <jakub@redhat.com>
  
-       * doc/rtl.texi (REG_NONNEG): Remove decrement and branch until
-       zero reference, add doloop_end instead.
-       * doc/md.texi (decrement_and_branch_until_zero): Remove.
-       (Looping patterns): Remove decrement_and_branch_until_zero.  Add
-       detail for doloop_end.
+       PR middle-end/91195
+       * tree-ssa-phiopt.c (cond_store_replacement): Move lhs unsharing
+       earlier.  Set TREE_NO_WARNING on the rhs1 of the artificially added
+       load.
  
- 2018-07-12  Martin Sebor  <msebor@redhat.com>
+ 2019-11-20  Georg-Johann Lay  <avr@gjlay.de>
  
-       PR c/86453
-       * attribs.c (decl_attributes): Reject conflicting attributes before
-       calling attribute handlers.
+       Make 0-series device specs work with older versions of avr-gcc.
  
- 2018-07-12  Jan Hubicka  <hubicka@ucw.cz>
+       PR target/92545
+       * config/avr/specs.h (LINK_SPEC) <%(link_pm_base_address)>: Remove.
+       * config/avr/gen-avr-mmcu-specs.c (print_mcu)
+       <*link_pm_base_address>: Don't write spec.
+       <*link_arch>: Add --defsym=__RODATA_PM_OFFSET__= as needed.
  
-       * dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART
-        parameter.
-       (gcc::dump_manager::get_dump_file_name): likewise.
-       (dump_begin): Likewise.
-       * dumpfile.h (dump_begin): Update prototype.
-       (gcc::dump_manager::get_dump_file_name,
-       gcc::dump_manager::get_dump_file_name): Update prototype.
+ 2019-11-20  Richard Biener  <rguenther@suse.de>
  
- 2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>
+       PR c/92088
+       * builtins.c (compute_objsize): Deal with VLAs.
  
-       * internal-fn.h (vectorizable_internal_fn_p): New function.
-       * tree-vect-slp.c (compatible_calls_p): Likewise.
-       (vect_build_slp_tree_1): Remove nops argument.  Handle calls
-       to internal functions.
-       (vect_build_slp_tree_2): Update call to vect_build_slp_tree_1.
+ 2019-11-19  Pat Haugen  <pthaugen@us.ibm.com>
  
- 2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>
+       * config/rs6000/rs6000.c (move_to_end_of_ready): New, factored out
+       from common code.
+       (power6_sched_reorder2): Factored out from rs6000_sched_reorder2,
+       call new function.
+       (power9_sched_reorder2): Call new function.
+       (rs6000_sched_reorder2): Likewise.
  
-       * fold-const.h (inverse_conditions_p): Declare.
-       * fold-const.c (inverse_conditions_p): New function.
-       * match.pd: Use inverse_conditions_p.  Add folds of view_converts
-       that test the inverse condition of a conditional internal function.
-       * internal-fn.h (vectorized_internal_fn_supported_p): Declare.
-       * internal-fn.c (internal_fn_mask_index): Handle conditional
-       internal functions.
-       (vectorized_internal_fn_supported_p): New function.
-       * tree-if-conv.c: Include internal-fn.h and fold-const.h.
-       (any_pred_load_store): Replace with...
-       (need_to_predicate): ...this new variable.
-       (redundant_ssa_names): New variable.
-       (ifcvt_can_use_mask_load_store): Move initial checks to...
-       (ifcvt_can_predicate): ...this new function.  Handle tree codes
-       for which a conditional internal function exists.
-       (if_convertible_gimple_assign_stmt_p): Use ifcvt_can_predicate
-       instead of ifcvt_can_use_mask_load_store.  Update after variable
-       name change.
-       (predicate_load_or_store): New function, split out from
-       predicate_mem_writes.
-       (check_redundant_cond_expr): New function.
-       (value_available_p): Likewise.
-       (predicate_rhs_code): Likewise.
-       (predicate_mem_writes): Rename to...
-       (predicate_statements): ...this.  Use predicate_load_or_store
-       and predicate_rhs_code.
-       (combine_blocks, tree_if_conversion): Update after above name changes.
-       (ifcvt_local_dce): Handle redundant_ssa_names.
-       * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Handle
-       general conditional functions.
-       * tree-vect-stmts.c (vectorizable_call): Likewise.
- 2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>
-           Alan Hayward  <alan.hayward@arm.com>
-           David Sherwood  <david.sherwood@arm.com>
-       * internal-fn.h (can_interpret_as_conditional_op_p): Declare.
-       * internal-fn.c (can_interpret_as_conditional_op_p): New function.
-       * tree-ssa-math-opts.c (convert_mult_to_fma_1): Handle conditional
-       plus and minus and convert them into IFN_COND_FMA-based sequences.
-       (convert_mult_to_fma): Handle conditional plus and minus.
- 2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>
-       * doc/md.texi (cond_fma, cond_fms, cond_fnma, cond_fnms): Document.
-       * optabs.def (cond_fma_optab, cond_fms_optab, cond_fnma_optab)
-       (cond_fnms_optab): New optabs.
-       * internal-fn.def (COND_FMA, COND_FMS, COND_FNMA, COND_FNMS): New
-       internal functions.
-       (FMA): Use DEF_INTERNAL_FLT_FN rather than DEF_INTERNAL_FLT_FLOATN_FN.
-       * internal-fn.h (get_conditional_internal_fn): Declare.
-       (get_unconditional_internal_fn): Likewise.
-       * internal-fn.c (cond_ternary_direct): New macro.
-       (expand_cond_ternary_optab_fn): Likewise.
-       (direct_cond_ternary_optab_supported_p): Likewise.
-       (FOR_EACH_COND_FN_PAIR): Likewise.
-       (get_conditional_internal_fn): New function.
-       (get_unconditional_internal_fn): Likewise.
-       * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 5.
-       (gimple_match_op::gimple_match_op): Add a new overload for 5
-       operands.
-       (gimple_match_op::set_op): Likewise.
-       (gimple_resimplify5): Declare.
-       * genmatch.c (decision_tree::gen): Generate simplifications for
-       5 operands.
-       * gimple-match-head.c (gimple_simplify): Define an overload for
-       5 operands.  Handle calls with 5 arguments in the top-level overload.
-       (convert_conditional_op): Handle conversions from unconditional
-       internal functions to conditional ones.
-       (gimple_resimplify5): New function.
-       (build_call_internal): Pass a fifth operand.
-       (maybe_push_res_to_seq): Likewise.
-       (try_conditional_simplification): Try converting conditional
-       internal functions to unconditional internal functions.
-       Handle 3-operand unconditional forms.
-       * match.pd (UNCOND_TERNARY, COND_TERNARY): Operator lists.
-       Define ternary equivalents of the current rules for binary conditional
-       internal functions.
-       * config/aarch64/aarch64.c (aarch64_preferred_else_value): Handle
-       ternary operations.
-       * config/aarch64/iterators.md (UNSPEC_COND_FMLA, UNSPEC_COND_FMLS)
-       (UNSPEC_COND_FNMLA, UNSPEC_COND_FNMLS): New unspecs.
-       (optab): Handle them.
-       (SVE_COND_FP_TERNARY): New int iterator.
-       (sve_fmla_op, sve_fmad_op): New int attributes.
-       * config/aarch64/aarch64-sve.md (cond_<optab><mode>)
-       (*cond_<optab><mode>_2, *cond_<optab><mode_4)
-       (*cond_<optab><mode>_any): New SVE_COND_FP_TERNARY patterns.
- 2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>
-       * target.def (preferred_else_value): New target hook.
-       * doc/tm.texi.in (TARGET_PREFERRED_ELSE_VALUE): New hook.
-       * doc/tm.texi: Regenerate.
-       * targhooks.h (default_preferred_else_value): Declare.
-       * targhooks.c (default_preferred_else_value): New function.
-       * internal-fn.h (conditional_internal_fn_code): Declare.
-       * internal-fn.c (FOR_EACH_CODE_MAPPING): New macro.
-       (get_conditional_internal_fn): Use it.
-       (conditional_internal_fn_code): New function.
-       * gimple-match.h (gimple_match_cond): New struct.
-       (gimple_match_op): Add a cond member function.
-       (gimple_match_op::gimple_match_op): Update all forms to take a
-       gimple_match_cond.
-       * genmatch.c (expr::gen_transform): Use the same condition as res_op
-       for the suboperation, but don't specify a particular else_value.
-       * tree-ssa-sccvn.c (vn_nary_simplify, vn_reference_lookup_3)
-       (visit_nary_op, visit_reference_op_load): Pass
-       gimple_match_cond::UNCOND to the gimple_match_op constructor.
-       * gimple-match-head.c: Include tree-eh.h
-       (convert_conditional_op): New function.
-       (maybe_resimplify_conditional_op): Likewise.
-       (gimple_resimplify1): Call maybe_resimplify_conditional_op.
-       (gimple_resimplify2): Likewise.
-       (gimple_resimplify3): Likewise.
-       (gimple_resimplify4): Likewise.
-       (maybe_push_res_to_seq): Return null for conditional operations.
-       (try_conditional_simplification): New function.
-       (gimple_simplify): Call it.  Pass conditions to the gimple_match_op
-       constructor.
-       * match.pd: Fold VEC_COND_EXPRs of an IFN_COND_* call to a new
-       IFN_COND_* call.
-       * config/aarch64/aarch64.c (aarch64_preferred_else_value): New
-       function.
-       (TARGET_PREFERRED_ELSE_VALUE): Redefine.
+ 2019-11-18  Jan Hubicka  <jh@suse.cz>
+       * ipa-fnsummary.c (estimate_edge_size_and_time): Drop parameter PROB.
+       (estimate_calls_size_and_time): Update.
+ 2019-11-18  Jan Hubicka  <jh@suse.cz>
+       * ipa-inline.c (inlining_speedup): New function.
+       (edge_badness): Use it.
  
- 2018-07-12  Jan Hubicka  <hubicka@ucw.cz>
+ 2019-11-19  Zoran Jovanovic <zoran.jovanovic@mips.com>
+                       Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+       * config/mips/mips-msa.md (msa_<msabr>_<msafmt_f>, msa_<msabr>_v_<msafmt_f>):
+       Mark as not having "likely" version.
+       * config/mips/mips.md (insn_count): The simd_div instruction with
+       TARGET_CHECK_ZERO_DIV consists of 3 instructions.
+       (can_delay): Exclude simd_branch.
+       (defile_delay *): Add simd_branch instructions.
+       They have one regular delay slot.
+ 2019-11-19  Richard Sandiford  <richard.sandiford@arm.com>
+       Revert:
+       2019-11-18  Richard Sandiford  <richard.sandiford@arm.com>
+       * cse.c (cse_insn): Delete no-op register moves too.
+       * simplify-rtx.c (comparison_to_mask): Handle unsigned comparisons.
+       Take a second comparison to control the value for NE.
+       (mask_to_comparison): Handle unsigned comparisons.
+       (simplify_logical_relational_operation): Likewise.  Update call
+       to comparison_to_mask.  Handle AND if !HONOR_NANs.
+       (simplify_binary_operation_1): Call the above for AND too.
+ 2019-11-19  Martin Liska  <mliska@suse.cz>
+       * toplev.c (general_init): Move the call...
+       (toplev::main): ... here as we need init_options_struct
+       being called.
+ 2019-11-19  Wilco Dijkstra  <wdijkstr@arm.com>
+       PR target/79262
+       * config/aarch64/aarch64.c (generic_vector_cost): Adjust
+       vec_to_scalar_cost.
+ 2019-11-19  Wilco Dijkstra  <wdijkstr@arm.com>
+       * config/arm/arm-cpus.in (armv7): Set tune to Cortex-A53.
+       (armv7-a): Likewise.
+       (armv7ve): Likewise.
+ 2019-11-19  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92581
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): For
+       condition reduction chains gather all conditions involved
+       for computing the index reduction vector.
+ 2019-11-19  Dennis Zhang  <dennis.zhang@arm.com>
+       * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): Add
+       AARCH64_MEMTAG_BUILTIN_START, AARCH64_MEMTAG_BUILTIN_IRG,
+       AARCH64_MEMTAG_BUILTIN_GMI, AARCH64_MEMTAG_BUILTIN_SUBP,
+       AARCH64_MEMTAG_BUILTIN_INC_TAG, AARCH64_MEMTAG_BUILTIN_SET_TAG,
+       AARCH64_MEMTAG_BUILTIN_GET_TAG, and AARCH64_MEMTAG_BUILTIN_END.
+       (aarch64_init_memtag_builtins): New.
+       (AARCH64_INIT_MEMTAG_BUILTINS_DECL): New macro.
+       (aarch64_general_init_builtins): Call aarch64_init_memtag_builtins.
+       (aarch64_expand_builtin_memtag): New.
+       (aarch64_general_expand_builtin): Call aarch64_expand_builtin_memtag.
+       (AARCH64_BUILTIN_SUBCODE): New macro.
+       (aarch64_resolve_overloaded_memtag): New.
+       (aarch64_resolve_overloaded_builtin_general): New. Call
+       aarch64_resolve_overloaded_memtag to handle overloaded MTE builtins.
+       * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
+       __ARM_FEATURE_MEMORY_TAGGING when enabled.
+       (aarch64_resolve_overloaded_builtin): Call
+       aarch64_resolve_overloaded_builtin_general.
+       * config/aarch64/aarch64-protos.h
+       (aarch64_resolve_overloaded_builtin_general): New declaration.
+       * config/aarch64/aarch64.h (AARCH64_ISA_MEMTAG): New macro.
+       (TARGET_MEMTAG): Likewise.
+       * config/aarch64/aarch64.md (UNSPEC_GEN_TAG): New unspec.
+       (UNSPEC_GEN_TAG_RND, and UNSPEC_TAG_SPACE): Likewise.
+       (irg, gmi, subp, addg, ldg, stg): New instructions.
+       * config/aarch64/arm_acle.h (__arm_mte_create_random_tag): New macro.
+       (__arm_mte_exclude_tag, __arm_mte_ptrdiff): Likewise.
+       (__arm_mte_increment_tag, __arm_mte_set_tag): Likewise.
+       (__arm_mte_get_tag): Likewise.
+       * config/aarch64/predicates.md (aarch64_memtag_tag_offset): New.
+       (aarch64_granule16_uimm6, aarch64_granule16_simm9): New.
+       * config/arm/types.md (memtag): New.
+       * doc/invoke.texi (-memtag): Update description.
+ 2019-11-19  Richard Henderson  <richard.henderson@linaro.org>
+       * config/arm/arm-c.c (arm_cpu_builtins): Use def_or_undef_macro
+       to define __GCC_ASM_FLAG_OUTPUTS__.
+       * config/arm/arm.c (thumb1_md_asm_adjust): New function.
+       (arm_option_params_internal): Swap out targetm.md_asm_adjust
+       depending on TARGET_THUMB1.
+       * doc/extend.texi (FlagOutputOperands): Document thumb1 restriction.
+ 2019-11-19  Jakub Jelinek  <jakub@redhat.com>
+       PR target/92549
+       * config/i386/i386.md (peephole2 for *swap<mode>): New peephole2.
+       PR middle-end/91450
+       * internal-fn.c (expand_mul_overflow): For s1 * s2 -> ur, if one
+       operand is negative and one non-negative, compare the non-negative
+       one against 0 rather than comparing s1 & s2 against 0.  Otherwise,
+       don't compare (s1 & s2) == 0, but compare separately both s1 == 0
+       and s2 == 0, unless one of them is known to be negative.  Remove
+       tem2 variable, use tem where tem2 has been used before.
+ 2019-11-19  Eric Botcazou  <ebotcazou@adacore.com>
+       * doc/invoke.texi (-gno-internal-reset-location-views): Fix typo.
+ 2019-11-19  Jakub Jelinek  <jakub@redhat.com>
+       PR tree-optimization/92557
+       * omp-low.c (omp_clause_aligned_alignment): Punt if TYPE_MODE is not
+       vmode rather than asserting it always is.
+ 2019-11-19  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92554
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Look
+       for the actual condition stmt and deal with sign-changes.
+ 2019-11-19  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92555
+       * tree-vect-loop.c (vect_update_vf_for_slp): Also scan PHIs
+       for non-SLP stmts.
+ 2019-11-19  Martin Liska  <mliska@suse.cz>
+       PR bootstrap/92540
+       * config/riscv/riscv.c (riscv_address_insns): Initialize
+       addr in order to remove boostrap -Wmaybe-uninitialized
+       error.
+ 2019-11-18  Martin Sebor  <msebor@redhat.com>
+       PR tree-optimization/92493
+       * gimple-ssa-sprintf.c (get_origin_and_offset): Remove spurious
+       assignment.
+ 2019-11-18  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+       * cfgloop.c (get_loop_body_in_custom_order): New.
+       * cfgloop.h (get_loop_body_in_custom_order): New prototype.
+       * tree-loop-distribution.c (class loop_distribution): New.
+       (bb_top_order_cmp): Remove.
+       (bb_top_order_cmp_r): New.
+       (create_rdg_vertices): Move into class loop_distribution.
+       (stmts_from_loop): Same as above.
+       (update_for_merge): Same as above.
+       (partition_merge_into): Same as above.
+       (get_data_dependence): Same as above.
+       (data_dep_in_cycle_p): Same as above.
+       (update_type_for_merge): Same as above.
+       (build_rdg_partition_for-vertex): Same as above.
+       (classify_builtin_ldst): Same as above.
+       (classify_partition): Same as above.
+       (share_memory_accesses): Same as above.
+       (rdg_build_partitions): Same as above.
+       (pg_add_dependence_edges): Same as above.
+       (build_partition_graph): Same as above.
+       (merge_dep_scc_partitions): Same as above.
+       (break_alias_scc_partitions): Same as above.
+       (finalize_partitions): Same as above.
+       (distribute_loop): Same as above.
+       (bb_top_order_init): New method
+       (bb_top_order_destroy): New method.
+       (get_bb_top_order_index_size): New method.
+       (get_bb_top_order_index_index): New method.
+       (get_bb_top_order_index_index): New method.
+       (loop_distribution::execute): New method.
+       (pass_loop_distribution::execute): Instantiate loop_distribution.
+ 2019-11-18  Jan Hubicka  <jh@suse.cz>
+       PR ipa/92508
+       * ipa-inline.c (inline_small_functions): Add new edges after reseting
+       caches.
+       * ipa-inline-analysis.c (do_estimate_edge_time): Fix sanity check.
+ 2019-11-18  Richard Sandiford  <richard.sandiford@arm.com>
+       * doc/sourcebuild.texi (vect_check_ptrs): Document.
+       * optabs.def (check_raw_ptrs_optab, check_war_ptrs_optab): New optabs.
+       * doc/md.texi: Document them.
+       * internal-fn.def (IFN_CHECK_RAW_PTRS, IFN_CHECK_WAR_PTRS): New
+       internal functions.
+       * internal-fn.h (internal_check_ptrs_fn_supported_p): Declare.
+       * internal-fn.c (check_ptrs_direct): New macro.
+       (expand_check_ptrs_optab_fn): Likewise.
+       (direct_check_ptrs_optab_supported_p): Likewise.
+       (internal_check_ptrs_fn_supported_p): New fuction.
+       * tree-data-ref.c: Include internal-fn.h.
+       (create_ifn_alias_checks): New function.
+       (create_intersect_range_checks): Use it.
+       * config/aarch64/iterators.md (SVE2_WHILE_PTR): New int iterator.
+       (optab, cmp_op): Handle it.
+       (raw_war, unspec): New int attributes.
+       * config/aarch64/aarch64.md (UNSPEC_WHILERW, UNSPEC_WHILE_WR): New
+       constants.
+       * config/aarch64/predicates.md (aarch64_bytes_per_sve_vector_operand):
+       New predicate.
+       * config/aarch64/aarch64-sve2.md (check_<raw_war>_ptrs<mode>): New
+       expander.
+       (@aarch64_sve2_while<cmp_op><GPI:mode><PRED_ALL:mode>_ptest): New
+       pattern.
  
-       * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
-       DECL_FCONTEXT
-       (hash_tree): Do not hash DECL_FCONTEXT
-       * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
-       Do not stream DECL_FCONTEXT.
-       * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Likewise.
-       * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
+ 2019-11-18  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree.c (build_vector_from_ctor): Directly return a zero vector for
+       empty constructors.
+ 2019-11-18  Richard Sandiford  <richard.sandiford@arm.com>
+       * cse.c (cse_insn): Delete no-op register moves too.
+       * simplify-rtx.c (comparison_to_mask): Handle unsigned comparisons.
+       Take a second comparison to control the value for NE.
+       (mask_to_comparison): Handle unsigned comparisons.
+       (simplify_logical_relational_operation): Likewise.  Update call
+       to comparison_to_mask.  Handle AND if !HONOR_NANs.
+       (simplify_binary_operation_1): Call the above for AND too.
+ 2019-11-18  Richard Sandiford  <richard.sandiford@arm.com>
+       * fold-const.c (native_encode_vector): Turn into a wrapper function,
+       splitting the main code out into...
+       (native_encode_vector_part): ...this new function.
+       (native_decode_vector_tree): New function.
+       (fold_view_convert_vector_encoding): Likewise.
+       (fold_view_convert_expr): Use it for converting VECTOR_CSTs
+       to VECTOR_TYPEs.
+ 2019-11-18  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-data-ref.c (create_intersect_range_checks_index): If the
+       alias pair describes simple WAW and WAR dependencies, just check
+       whether the first B access overlaps later A accesses.
+       (create_waw_or_war_checks): New function that performs the same
+       optimization on addresses.
+       (create_intersect_range_checks): Call it.
+ 2019-11-18  Richard Sandiford  <richard.sandiford@arm.com>
+       * lra-constraints.c (valid_address_p): Take the operand and a
+       constraint as argument.  If the operand is a MEM and the constraint
+       is a memory constraint, check whether the eliminated form of the
+       MEM already satisfies the constraint.
+       (process_address_1): Update calls accordingly.
+ 2019-11-18  Tom Tromey  <tromey@adacore.com>
+       * doc/tm.texi: Rebuild.
+       * doc/tm.texi.in (Misc): Don't document MODIFY_JNI_METHOD_CALL.
+       * config/i386/cygming.h (MODIFY_JNI_METHOD_CALL): Don't define.
+ 2019-11-18  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92516
+       * tree-vect-slp.c (vect_analyze_slp_instance): Add bst_map
+       argument, hoist bst_map creation/destruction to ...
+       (vect_analyze_slp): ... here, forming a true graph with
+       SLP instances being the entries.
+       (vect_detect_hybrid_slp_stmts): Remove wrapper.
+       (vect_detect_hybrid_slp): Use one visited set for all
+       graph entries.
+       (vect_slp_analyze_node_operations): Simplify visited/lvisited
+       to hash-sets of slp_tree.
+       (vect_slp_analyze_operations): Likewise.
+       (vect_bb_slp_scalar_cost): Remove wrapper.
+       (vect_bb_vectorization_profitable_p): Use one visited set for
+       all graph entries.
+       (vect_schedule_slp_instance): Elide bst_map use.
+       (vect_schedule_slp): Likewise.
  
- 2018-07-12  Richard Biener  <rguenther@suse.de>
+ 2019-11-18  Richard Biener  <rguenther@suse.de>
  
-       PR debug/86462
-       * dwarf2out.c (gen_block_die): Only output blocks when they have
-       at least one !DECL_IGNORED_P variable.
+       * tree-vect-slp.c (vect_analyze_slp_instance): When a CTOR
+       was vectorized with just external refs fail.
  
- 2018-07-12  Richard Biener  <rguenther@suse.de>
+ 2019-11-18  Martin Liska  <mliska@suse.cz>
  
-       PR target/84829
-       * config/gnu-user.h (GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC):
-       Remove -mieee-fp handling.
+       PR ipa/92525
+       * ipa-icf.c (sem_function::init): Unset m_checker
+       at the end of the function.
  
- 2018-07-12  Richard Biener  <rguenther@suse.de>
+ 2019-11-18  Richard Biener  <rguenther@suse.de>
  
-       * tree-ssa-sccvn.c (vn_lookup_simplify_result): Remove bogus
-       left-over from last patch.
+       PR tree-optimization/92558
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): When
+       reducting the width of a reduction vector def update new_phis.
  
- 2018-07-12  Jakub Jelinek  <jakub@redhat.com>
+ 2019-11-18  Szabolcs Nagy  <szabolcs.nagy@arm.com>
  
-       PR tree-optimization/86492
-       * gimple-ssa-store-merging.c
-       (imm_store_chain_info::coalesce_immediate_stores): Call
-       check_no_overlap even for the merge_overlapping case.  Formatting fix.
+       * configure.ac (gcc_cv_target_ldbl128): Set for powerpc*-*-linux-musl*
+       and s390*-*-linux-musl* targets.
+       * configure: Regenerate.
  
- 2018-07-12  Richard Biener  <rguenther@suse.de>
+ 2019-11-18  Szabolcs Nagy  <szabolcs.nagy@arm.com>
  
-       PR middle-end/86479
-       * fold-const.c (fold_binary_op_with_conditional_arg): Do not
-       move possibly trapping operations into the conditional.
+       * config/s390/linux.h (MUSL_DYNAMIC_LINKER32): Define.
+       (MUSL_DYNAMIC_LINKER64): Define.
  
- 2018-07-12  Richard Biener  <rguenther@suse.de>
+ 2019-11-18  Martin Liska  <mliska@suse.cz>
  
-       * tree-ssa-sccvn.c (mprts_hook_cnt): Remove.
-       (vn_lookup_simplify_result): Remove recursion limit applied
-       here.
-       (vn_nary_build_or_lookup_1): Adjust.
-       (try_to_simplify): Likewise.
-       * gimple-match-head.c (gimple_resimplify1): Instead apply one
-       here.
-       (gimple_resimplify2): Likewise.
-       (gimple_resimplify3): Likewise.
-       (gimple_resimplify4): Likewise.
- 2018-07-11  Jakub Jelinek  <jakub@redhat.com>
-       * config/i386/avx512bitalgintrin.h (_mm512_mask_bitshuffle_epi64_mask):
-       Use __mmask64 type instead of __mmask8 for __M argument.
-       * config/i386/avx512fintrin.h (_mm512_mask_xor_epi64,
-       _mm512_maskz_xor_epi64): Use __mmask8 type instead of __mmask16 for
-       __U argument.
-       (_mm512_mask_cmpneq_epi64_mask): Use __mmask8 type instead of
-       __mmask16 for __M argument.
-       (_mm512_maskz_insertf32x4, _mm512_maskz_inserti32x4,
-       _mm512_mask_insertf32x4, _mm512_mask_inserti32x4): Cast last argument
-       to __mmask16 instead of __mmask8.
-       * config/i386/avx512vlintrin.h (_mm_mask_add_ps, _mm_maskz_add_ps,
-       _mm256_mask_add_ps, _mm256_maskz_add_ps, _mm_mask_sub_ps,
-       _mm_maskz_sub_ps, _mm256_mask_sub_ps, _mm256_maskz_sub_ps,
-       _mm256_maskz_cvtepi32_ps, _mm_maskz_cvtepi32_ps): Use __mmask8 type
-       instead of __mmask16 for __U argument.
-       * config/i386/avx512vlbwintrin.h (_mm_mask_cmp_epi8_mask): Use
-       __mmask16 instead of __mmask8 for __U argument.
-       (_mm256_mask_cmp_epi8_mask): Use __mmask32 instead of __mmask16 for
-       __U argument.
-       (_mm256_cmp_epi8_mask): Use __mmask32 return type instead of
-       __mmask16.
-       (_mm_mask_cmp_epu8_mask): Use __mmask16 instead of __mmask8 for __U
-       argument.
-       (_mm256_mask_cmp_epu8_mask): Use __mmask32 instead of __mmask16 for
-       __U argument.
-       (_mm256_cmp_epu8_mask): Use __mmask32 return type instead of
-       __mmask16.
-       (_mm_mask_cmp_epi16_mask): Cast last argument to __mmask8 instead
-       of __mmask16.
-       (_mm256_mask_cvtepi8_epi16): Use __mmask16 instead of __mmask32 for
-       __U argument.
-       (_mm_mask_cvtepi8_epi16): Use __mmask8 instead of __mmask32 for
-       __U argument.
-       (_mm256_mask_cvtepu8_epi16): Use __mmask16 instead of __mmask32 for
-       __U argument.
-       (_mm_mask_cvtepu8_epi16): Use __mmask8 instead of __mmask32 for
-       __U argument.
-       (_mm256_mask_cmpneq_epu8_mask, _mm256_mask_cmplt_epu8_mask,
-       _mm256_mask_cmpge_epu8_mask, _mm256_mask_cmple_epu8_mask): Change
-       return type as well as __M argument type and all casts from __mmask8
-       to __mmask32.
-       (_mm256_mask_cmpneq_epu16_mask, _mm256_mask_cmplt_epu16_mask,
-       _mm256_mask_cmpge_epu16_mask, _mm256_mask_cmple_epu16_mask): Change
-       return type as well as __M argument type and all casts from __mmask8
-       to __mmask16.
-       (_mm256_mask_cmpneq_epi8_mask, _mm256_mask_cmplt_epi8_mask,
-       _mm256_mask_cmpge_epi8_mask, _mm256_mask_cmple_epi8_mask): Change
-       return type as well as __M argument type and all casts from __mmask8
-       to __mmask32.
-       (_mm256_mask_cmpneq_epi16_mask, _mm256_mask_cmplt_epi16_mask,
-       _mm256_mask_cmpge_epi16_mask, _mm256_mask_cmple_epi16_mask): Change
-       return type as well as __M argument type and all casts from __mmask8
-       to __mmask16.
-       * config/i386/avx512vbmi2vlintrin.h (_mm_mask_shrdi_epi32,
-       _mm_mask_shldi_epi32): Cast last argument to __mmask8 instead of
-       __mmask16.
- 2018-07-11  Grazvydas Ignotas  <notasas@gmail.com>
-       * config/i386/avx512bwintrin.h: (_mm512_mask_cmp_epi8_mask,
-       _mm512_mask_cmp_epu8_mask): Use __mmask64 type instead of __mmask32
-       for __U argument.
- 2018-07-11  Paul Koning  <ni1d@arrl.net>
-       * doc/md.texi (define_subst): Document how multiple occurrences of
-       the same argument in the replacement pattern are handled.
- 2018-07-11  Paul Koning  <ni1d@arrl.net>
-       * doc/extend.texi (Common Variable Attributes): Move "mode" into
-       alphabetical order.
-       (Common Type Attributes): Add "mode" attribute.
- 2018-07-11  Jan Hubicka  <hubicka@ucw.cz>
-       * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not
-       stream DECL_ORIGINAL_TYPE.
-       (DFS::DFS_write_tree_body): Drop hack handling local external decls.
-       (hash_tree): Do not walk DECL_ORIGINAL_TYPE.
-       * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
-       Do not walk original type.
-       * tree-streamer-out.c (streamer_write_chain): Drop hack handling
-       external decls.
-       (write_ts_decl_non_common_tree_pointers): Do not stream
-       DECL_ORIGINAL_TYPE
-       * tree.c (free_lang_data_in_decl): Clear DECL_ORIGINAL_TYPE.
-       (find_decls_types_r): Do not walk DEC_ORIGINAL_TYPE.
- 2018-07-11  Aldy Hernandez  <aldyh@redhat.com>
-         * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump
-       thread twice from the same starting edge.
- 2018-07-11  Aldy Hernandez  <aldyh@redhat.com>
-       * vr-values.c (gimple_stmt_nonzero_p): Abstract common code to...
-       * gimple.c (gimple_call_nonnull_result_p): ...here...
-       (gimple_call_nonnull_arg): ...and here.
-       * gimple.h (gimple_call_nonnull_result_p): New.
-       (gimple_call_nonnull_arg): New.
- 2018-07-11  Richard Earnshaw  <rearnsha@arm.com>
-       * config/arm/arm-cpus.in: Move information from fpu field of each
-       cpu definition to the isa field.
-       * config/arm/parsecpu.awk (fpu): Delete match rule.
-       (gen_comm_data): Don't add bits from the CPU's FPU entry.
- 2018-07-11  Richard Biener  <rguenther@suse.de>
-       PR debug/86457
-       * dwarf2out.c (init_sections_and_labels): Use
-       output_asm_line_debug_info consistently.
-       (dwarf2out_early_finish): Likewise.
-       (dwarf2out_finish): Remove DW_AT_stmt_list from early generated
-       type units.
- 2018-07-11  Richard Biener  <rguenther@suse.de>
-       * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1):
-       Rework father_bb setting in a way to avoid propagating constants
-       multiple times on a loop body.
- 2018-07-10  Mark Wielaard  <mark@klomp.org>
-       PR debug/86459
-       * dwarf2out.c (output_macinfo_op): Fix dwarf_FORM typo in gcc_assert.
- 2018-07-10  Richard Biener  <rguenther@suse.de>
-       * hash-map.h (hash_map::iterator::operator*): Return
-       references to key and value.
- 2018-07-10  Jakub Jelinek  <jakub@redhat.com>
-       PR c++/86443
-       * gimplify.c (find_combined_omp_for): Add DATA argument, in addition
-       to finding the inner OMP_FOR/OMP_SIMD stmt find non-trivial wrappers,
-       BLOCKs with BLOCK_VARs, OMP_PARALLEL in between, OMP_FOR in between.
-       (gimplify_omp_for): For composite loops, move outer
-       OMP_{DISTRIBUTE,TASKLOOP,FOR,PARALLEL} right around innermost
-       OMP_FOR/OMP_SIMD if there are any non-trivial wrappers.  For class
-       iterators add any needed clauses.  Allow OMP_FOR_ORIG_DECLS to contain
-       TREE_LIST for both the original class iterator and the "last" helper
-       var.  Gimplify OMP_FOR_PRE_BODY before the outermost composite
-       loop, remember has_decl_expr from outer composite loops for the
-       innermost OMP_SIMD in TREE_PRIVATE bit on OMP_FOR_INIT.
- 2018-07-09  Martin Sebor  <msebor@redhat.com>
-       PR middle-end/77357
-       PR middle-end/86428
-       * builtins.c (c_strlen): Avoid out-of-bounds warnings when
-       accessing implicitly initialized array elements.
-       * expr.c (string_constant): Handle string initializers of
-       character arrays within aggregates.
-       * gimple-fold.c (fold_array_ctor_reference): Add argument.
-       Store element offset.  As a special case, handle zero size.
-       (fold_nonarray_ctor_reference): Same.
-       (fold_ctor_reference): Add argument.  Store subobject offset.
-       * gimple-fold.h (fold_ctor_reference): Add argument.
- 2018-07-09  Paul Koning  <ni1d@arrl.net>
-       * config/pdp11/pdp11.c (pdp11_addr_cost): New function.
-       (pdp11_insn_cost): New function.
-       (pdp11_md_asm_adjust): New function.
-       (TARGET_INVALID_WITHIN_DOLOOP): Define.
-       (pdp11_rtx_costs): Update to match machine better.
-       (output_addr_const_pdp11): Correct format mismatch warnings.
-       * config/pdp11/pdp11.h (SLOW_BYTE_ACCESS): Correct definition.
-       * config/pdp11/pdp11.md: General change to add base_cost and/or
-       length attributes for use by new pdp11_insn_cost function.
-       (MIN_BRANCH): Correct definition.
-       (MIN_SOB): Ditto.
-       (doloop_end): Use standard pattern name for looping pattern.
-       (doloop_end_nocc): New.
-       (movsf): Add another constraint alternative.
-       (zero_extendqihi2): Add constraint alternatives for not in place
-       extend.
-       (zero_extendhisi2): Remove.
-       (shift patterns): Add CC handling variants.
-       (bswaphi2): New.
-       (bswapsi2): New.
-       (rothi3): New.
-       (define_peephole2): New peephole to recognize mov that sets CC for
-       subsequent test.
- 2018-07-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-       * config/sparc/sparc.c (sparc_fold_builtin) <SPARC_BUILTIN_PDIST,
-       SPARC_BUILTIN_PDISTN>: Adapt for signature change of wi::neg,
-       wi::add.
- 2018-07-09  Jakub Jelinek  <jakub@redhat.com>
-       PR c/86420
-       * real.c (real_nextafter): Return true if result is denormal.
- 2018-07-09  Martin Liska  <mliska@suse.cz>
-       * common.opt: Add back wrongly removed attribute.
- 2018-07-09  Richard Biener  <rguenther@suse.de>
-       PR debug/86413
-       * dwarf2out.c (gen_block_die): For an early generated DIE
-       always output high/low PC attributes.
- 2018-07-09  Tom de Vries  <tdevries@suse.de>
-       * cfgexpand.c (expand_debug_source_expr): Handle VAR_DECL.
-       * tree-inline.c (remap_ssa_name): Handle default def ssa_name mapping
-       onto VAR_DECL with abstract origin.
- 2018-07-07  Jim Wilson  <jimw@sifive.com>
-       * config/riscv/riscv.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): New.
- 2018-07-07  Tom de Vries  <tdevries@suse.de>
-       * tree-dfa.c (dump_enumerated_decls): Handle cfun->cfg == NULL.
- 2018-07-07  Aldy Hernandez  <aldyh@redhat.com>
-       * tree-vrp.c (vrp_int_const_binop): Change overflow type to
-       overflow_type.
-       (combine_bound): Use wide-int overflow calculation instead of
-       rolling our own.
-       * calls.c (maybe_warn_alloc_args_overflow): Change overflow type to
-       overflow_type.
-       * fold-const.c (int_const_binop_2): Same.
-       (extract_muldiv_1): Same.
-       (fold_div_compare): Same.
-       (fold_abs_const): Same.
-       * match.pd: Same.
-       * poly-int.h (add): Same.
-       (sub): Same.
-       (neg): Same.
-       (mul): Same.
-       * predict.c (predict_iv_comparison): Same.
-       * profile-count.c (slow_safe_scale_64bit): Same.
-       * simplify-rtx.c (simplify_const_binary_operation): Same.
-       * tree-chrec.c (tree_fold_binomial): Same.
-       * tree-data-ref.c (split_constant_offset_1): Same.
-       * tree-if-conv.c (idx_within_array_bound): Same.
-       * tree-scalar-evolution.c (iv_can_overflow_p): Same.
-       * tree-ssa-phiopt.c (minmax_replacement): Same.
-       * tree-vect-loop.c (is_nonwrapping_integer_induction): Same.
-       * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Same.
-       * vr-values.c (vr_values::adjust_range_with_scev): Same.
-       * wide-int.cc (wi::add_large): Same.
-       (wi::mul_internal): Same.
-       (wi::sub_large): Same.
-       (wi::divmod_internal): Same.
-       * wide-int.h: Change overflow type to overflow_type for neg, add,
-       mul, smul, umul, div_trunc, div_floor, div_ceil, div_round,
-       mod_trunc, mod_ceil, mod_round, add_large, sub_large,
-       mul_internal, divmod_internal.
-       (overflow_type): New enum.
-       (accumulate_overflow): New.
- 2018-07-06  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
-       * tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): New.
-       (tree_ssa_phiopt_worker): Call cond_removal_in_popcount_pattern.
- 2018-07-06  Kugan Vivekanandarajah  <kuganv@linaro.org>
-       * tree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount
-       argument is checked for zero before entering loop, avoid checking again.
- 2018-07-06  Kugan Vivekanandarajah  <kuganv@linaro.org>
-       * gimplify.h (generic_expr_could_trap_p): Set as global function.
-       * gimplify.h (generic_expr_could_trap_p): Likwise.
-       * tree-scalar-evolution.c (expression_expensive_p): Handle COND_EXPR.
- 2018-07-06  Jakub Jelinek  <jakub@redhat.com>
-       PR tree-optimization/86401
-       * fold-const.c (fold_binary_loc) <case BIT_AND_EXPR>: Move the
-       ((A & N) + B) & M -> (A + B) & M etc. optimization into ...
-       (fold_bit_and_mask): ... here.  New helper function for match.pd.
-       * fold-const.h (fold_bit_and_mask): Declare.
-       * match.pd (((A & N) + B) & M -> (A + B) & M): New optimization.
- 2018-07-06  Peter Bergner  <bergner@linux.ibm.com>
-       PR target/86324
-       * target.def (translate_mode_attribute): New hook.
-       * targhooks.h (default_translate_mode_attribute): Declare.
-       * targhooks.c (default_translate_mode_attribute): New function.
-       * doc/tm.texi.in (TARGET_TRANSLATE_MODE_ATTRIBUTE): New hook.
-       * doc/tm.texi: Regenerate.
-       * config/rs6000/rs6000.c (TARGET_TRANSLATE_MODE_ATTRIBUTE): Define.
-       (rs6000_translate_mode_attribute): New function.
+       * dbgcnt.c (dbg_cnt_set_limit_by_name): Provide error
+       message for an unknown counter.
+       (dbg_cnt_process_single_pair): Support 0 as minimum value.
+       (dbg_cnt_process_opt): Remove unreachable code.
  
- 2018-07-06  Paul Koning  <ni1d@arrl.net>
+ 2019-11-18  Martin Liska  <mliska@suse.cz>
  
-       * doc/md.texi (define_split): Document DONE and FAIL.
-       (define_peephole2): Ditto.
+       PR ipa/92529
+       * ipa-icf-gimple.c (func_checker::compare_gimple_assign):
+       Compare LHS types of NOP_EXPR.
  
- 2018-07-05  Jeff Law  <law@redhat.com>
+ 2019-11-18  Matthew Malcomson  <matthew.malcomson@arm.com>
  
-       PR tree-optimization/86010
-       * tree-ssa-dse.c (compute_trims): More aggressively trim at
-       both the head and tail of mem* and str* calls.
+       * run-rtl-passes.c (run_rtl_passes): Accept and handle empty
+       "initial_pass_name" argument -- by running "*clean_state" pass.
+       Also free the "initial_pass_name" when done.
  
- 2018-07-05  Jim Wilson  <jimw@sifive.com>
+ 2019-11-18  Richard Biener  <rguenther@suse.de>
  
-       * config.gcc (riscv*-*-*): When setting xlen, handle riscv-*.
+       PR rtl-optimization/92462
+       * alias.c (find_base_term): Restrict the look through ANDs.
+       (find_base_value): Likewise.
  
- 2018-07-05  Indu Bhagat  <indu.bhagat@oracle.com>
+ 2019-11-18  Georg-Johann Lay  <avr@gjlay.de>
  
-       * config/aarch64/aarch64-simd.md: correct flags text for
-       MIN_EXPR replacement.
+       Add support for AVR devices from the 0-series.
  
- 2018-07-05  James Clarke  <jrtc27@jrtc27.com>
+       PR target/92545
+       * config/avr/avr-arch.h (avr_mcu_t) <flash_pm_offset>: New field.
+       * config/avr/avr-devices.c (avr_mcu_types): Adjust initializers.
+       * config/avr/avr-mcus.def (AVR_MCU): Add respective field.
+       * config/avr/specs.h (LINK_SPEC) <%(link_pm_base_address)>: Add.
+       * config/avr/gen-avr-mmcu-specs.c (print_mcu)
+       <*cpp, *cpp_mcu, *cpp_avrlibc, *link_pm_base_address>: Emit code
+       for spec definitions.
+       * doc/avr-mmcu.texi: Regenerate.
  
-       * configure: Regenerated.
+ 2019-11-18  Hongtao Liu  <hongtao.liu@intel.com>
  
- 2018-07-05  Carl Love  <cel@us.ibm.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.
  
-       * config/rs6000/rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for
-       float argument to VSX_BUILTIN_DOUBLEH_V4SF.
-       Map ALTIVEC_BUILTIN_VEC_UNPACKL for float argument to
-       VSX_BUILTIN_DOUBLEL_V4SF.
+ 2019-11-16  Segher Boessenkool  <segher@kernel.crashing.org>
  
- 2018-07-05  Martin Sebor  <msebor@redhat.com>
+       * 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.
  
-       PR c++/86400
-       * tree-ssa-strlen.c (maybe_set_strlen_range): Use type size rather
-       than its domain to compute its the upper bound of a char array.
+ 2019-11-16  Segher Boessenkool  <segher@kernel.crashing.org>
  
- 2018-07-05  Nathan Sidwell  <nathan@acm.org>
+       * common/config/powerpcspe: Delete.
  
-       Replace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C.
-       * doc/cpp.texi: Update comment.
-       * doc/tm.texi: Rebuilt.
-       * doc/tm.texi.in (NO_IMPLICIT_EXTERN_C): Replace with ...
-       (SYSTEM_IMPLICIT_EXTERN_C): ... this, opposite sense.
-       * doc/extend.texi (Backwards Compatibility): Clarify it is system
-       headers affected by extern "C".
-       * system.h: Poison NO_IMPLICIT_EXTERN_C.
-       * config/alpha/alpha.h, config/arm/uclinux-elf.h,
-       config/bfin/elf.h, config/cris/cris.h, config/darwin.h,
-       config/dragonfly.h, config/freebsd.h, config/gnu-user.h,
-       config/i386/cygming.h, config/i386/djgpp.h, config/i386/nto.h,
-       config/ia64/hpux.h, config/lm32/lm32.h, config/lm32/uclinux-elf.h,
-       config/lynx.h, config/mips/elf.h, config/mmix/mmix.h,
-       config/netbsd.h, config/pa/pa-hpux.h, config/powerpcspe/sysv4.h,
-       config/riscv/elf.h, config/rs6000/sysv4.h, config/rtems.h,
-       config/s390/tpf.h, config/sh/newlib.h, config/sol2.h,
-       config/sparc/openbsd64.h, config/sparc/sp-elf.h,
-       config/sparc/sp64-elf.h, config/spu/spu.h,
-       config/stormy16/stormy16.h, config/v850/v850.h,
-       config/visium/visium.h, config/vx-common.h, config/xtensa/elf.h: Don't
-       define NO_IMPLICIT_EXTERN_C.
-       * config/rs6000/aix.h: Set SYSTEM_IMPLICIT_EXTERN_C.
+ 2019-11-16  Richard Sandiford  <richard.sandiford@arm.com>
  
- 2018-07-05  Tamar Christina  <tamar.christina@arm.com>
+       * config/aarch64/aarch64-sve.md (aarch64_wrffr): Wrap the FFRT
+       output in UNSPEC_WRFFR.
  
-       PR target/84711
-       * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
-       instead of GET_MODE_SIZE when comparing Units.
+ 2019-11-16  Richard Sandiford  <richard.sandiford@arm.com>
  
- 2018-07-05  Tamar Christina  <tamar.christina@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.
  
-       PR target/84711
-       * rtlanal.c (set_noop_p): Constrain on mode change,
-       include hard-reg-set.h
+ 2019-11-16  Richard Sandiford  <richard.sandiford@arm.com>
  
- 2018-07-05  Tamar Christina  <tamar.christina@arm.com>
+       * tree-data-ref.c (create_intersect_range_checks_index)
+       (create_intersect_range_checks): Print dump messages.
  
-       * config/aarch64/aarch64.c (aarch64_expand_movmem): Fix mode size.
+ 2019-11-16  Richard Sandiford  <richard.sandiford@arm.com>
  
- 2018-07-05  Jakub Jelinek  <jakub@redhat.com>
+       * tree-data-ref.c (dump_alias_pair): New function.
+       (prune_runtime_alias_test_list): Use it to dump each merged alias pair.
  
-       Revert
-       2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 2019-11-16  Richard Sandiford  <richard.sandiford@arm.com>
  
-       PR sanitizer/84250
-       * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
-       libasan.
-       * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.
+       * 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.
  
- 2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 2019-11-16  Richard Sandiford  <richard.sandiford@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.sandiford@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.sandiford@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.sandiford@arm.com>
  
-       PR sanitizer/84250
-       * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
-       libasan.
-       * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.
+       * 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.
  
- 2018-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 2019-11-16  Richard Sandiford  <richard.sandiford@arm.com>
  
-       PR middle-end/86380
-       * expmed.c (choose_multiplier): Fix incorrect comparison with mask.
+       * 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.
  
- 2018-07-04  Aldy Hernandez  <aldyh@redhat.com>
+ 2019-11-16  Richard Sandiford  <richard.sandiford@arm.com>
  
-       * tree-vrp.c (extract_range_from_binary_expr_1): Initialize
-       neg_*_op* variables.
+       * 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.
  
- 2018-07-04  Martin Liska  <mliska@suse.cz>
+ 2019-11-16  Richard Sandiford  <richard.sandiford@arm.com>
  
-       * tree-switch-conversion.c: Define
-         max_ratio_for_speed and max_ratio_for_size constants.
+       * 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.
  
- 2018-07-04  Denys Vlasenko  <dvlasenk@redhat.com>
-           Martin Liska  <mliska@suse.cz>
+ 2019-11-16  Richard Sandiford  <richard.sandiford@arm.com>
  
-       PR middle-end/66240
-       PR target/45996
-       PR c/84100
-       * common.opt: Rename align options with 'str_' prefix.
-       * common/config/i386/i386-common.c (set_malign_value): New
+       * 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.sandiford@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.sandiford@arm.com>
+       * config/aarch64/aarch64-modes.def: Define partial SVE vector
+       float modes.
+       * config/aarch64/aarch64-protos.h (aarch64_sve_pred_mode): New
        function.
-       (ix86_handle_option): Use it to set -falign-* options/
-       * config/aarch64/aarch64-protos.h (struct tune_params): Change
-       type from int to string.
-       * config/aarch64/aarch64.c: Update default values from int
-       to string.
-       * config/alpha/alpha.c (alpha_override_options_after_change):
-       Likewise.
-       * config/arm/arm.c (arm_override_options_after_change_1): Likewise.
-       * config/i386/dragonfly.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
-       max skip conditionally.
-       * config/i386/freebsd.h (SUBALIGN_LOG): New.
-       (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
-       max skip conditionally.
-       * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
-       max skip conditionally.
-       * config/i386/gnu-user.h (SUBALIGN_LOG): New.
-       (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
-       max skip conditionally.
-       * config/i386/i386.c (struct ptt): Change type from int to
-       string.
-       (ix86_default_align): Set default values.
-       * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Print
-       max skip conditionally.
-       * config/i386/iamcu.h (SUBALIGN_LOG): New.
-       (ASM_OUTPUT_MAX_SKIP_ALIGN):
-       * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN):
-       * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
-       max skip conditionally.
-       * config/i386/openbsdelf.h (SUBALIGN_LOG): New.
-       (ASM_OUTPUT_MAX_SKIP_ALIGN) Print max skip conditionally.:
-       * config/i386/x86-64.h (SUBALIGN_LOG): New.
-       (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
-       max skip conditionally.
-       (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
-       * config/ia64/ia64.c (ia64_option_override): Set default values
-         for alignment options.
-       * config/m68k/m68k.c: Handle new str_align_* options.
-       * config/mips/mips.c (mips_set_compression_mode): Change
-       type of constants.
-       (mips_option_override): Set default values for options.
-       * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
-         Likewise.
-       * config/rs6000/rs6000.c (rs6000_option_override_internal):
+       * 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.sandiford@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.sandiford@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.sandiford@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.sandiford@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/rx/rx.c (rx_option_override): Likewise.
-       * config/rx/rx.h (JUMP_ALIGN): Use align_jumps_log.
-       (LABEL_ALIGN): Use align_labels_log.
-       (LOOP_ALIGN): Use align_loops_align.
-       * config/s390/s390.c (s390_asm_output_function_label): Use new
-         macros.
-       * config/sh/sh.c (sh_override_options_after_change):
-       Change type of constants.
-       * config/spu/spu.c (spu_sched_init): Likewise.
-       * config/sparc/sparc.c (sparc_option_override): Set default
-         values for options.
-       * config/visium/visium.c (visium_option_override): Likewise.
-       * config/visium/visium.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Do not
-         emit p2align format with last argument if it's not needed.
-       * doc/invoke.texi: Document extended format of -falign-*.
-       * final.c: Use align_labels alignment.
-       * flags.h (struct target_flag_state): Change type to use
-       align_flags.
-       (struct align_flags_tuple): New.
-       (struct align_flags): Likewise.
-       (align_loops_log): Redefine macro to use new types.
-       (align_loops_max_skip): Redefine macro to use new types.
-       (align_jumps_log): Redefine macro to use new types.
-       (align_jumps_max_skip): Redefine macro to use new types.
-       (align_labels_log): Redefine macro to use new types.
-       (align_labels_max_skip): Redefine macro to use new types.
-       (align_functions_log): Redefine macro to use new types.
-       (align_loops): Redefine macro to use new types.
-       (align_jumps): Redefine macro to use new types.
-       (align_labels): Redefine macro to use new types.
-       (align_functions): Redefine macro to use new types.
-       (align_functions_max_skip): Redefine macro to use new types.
-       (align_loops_value): New macro.
-       (align_jumps_value): New macro.
-       (align_labels_value): New macro.
-       (align_functions_value): New macro.
-       * function.c (invoke_set_current_function_hook): Propagate
-       alignment values from flags to global variables default in
-       topleev.h.
-       * ipa-icf.c (sem_function::equals_wpa): Use
-       cl_optimization_option_eq instead of memcmp.
-       * lto-streamer.h (cl_optimization_stream_out): Support streaming
-       of string types.
-       (cl_optimization_stream_in): Likewise.
-       * optc-save-gen.awk: Support strings in cl_optimization.
-       * opth-gen.awk: Likewise.
-       * opts.c (finish_options): Remove error checking of invalid
-       value ranges.
-       (MAX_CODE_ALIGN): Remove.
-       (MAX_CODE_ALIGN_VALUE): Likewise.
-       (parse_and_check_align_values): New function.
-       (check_alignment_argument): Likewise.
-       (common_handle_option): Use check_alignment_argument.
-       * opts.h (parse_and_check_align_values): Declare.
-       * toplev.c (init_alignments): Remove.
-       (read_log_maxskip): New.
-       (parse_N_M): Likewise.
-       (parse_alignment_opts): Likewise.
-       (backend_init_target): Remove usage of init_alignments.
-       * toplev.h (parse_alignment_opts): Declare.
-       * tree-streamer-in.c (streamer_read_tree_bitfields): Add new
-       argument.
-       * tree-streamer-out.c (streamer_write_tree_bitfields): Likewise.
-       * tree.c (cl_option_hasher::equal): New.
-       * varasm.c: Use new global macros.
- 2018-07-04  Denys Vlasenko  <dvlasenk@redhat.com>
-       * config/i386/dragonfly.h: (ASM_OUTPUT_MAX_SKIP_ALIGN):
-       Use a simpler align directive also if MAXSKIP = ALIGN-1.
-       * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
-       * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
-       * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
-       * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
-       * config/i386/freebsd.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Remove "If N
-       is large, do at least 8 byte alignment" code. Add SUBALIGN_LOG
-       define. Use a simpler align directive also if MAXSKIP = ALIGN-1.
-       * config/i386/gnu-user.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
-       * config/i386/iamcu.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
-       * config/i386/openbsdelf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
-       * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
- 2018-07-04  Martin Liska  <mliska@suse.cz>
-             Jonathan Wakely  <jwakely@redhat.com>
-       * coverage.c: Use correct type.
-       * doc/invoke.texi: Language correction.
- 2018-07-03  H.J. Lu  <hongjiu.lu@intel.com>
-       PR target/85620
-       * config/i386/i386.c (rest_of_insert_endbranch): Also generate
-       ENDBRANCH for non-tail call which may return via indirect branch.
-       * doc/extend.texi: Document indirect_return attribute.
- 2018-07-03  Martin Sebor  <msebor@redhat.com>
-       PR tree-optimization/86274
-       * gimple-ssa-sprintf.c (fmtresult::type_max_digits): Verify
-       precondition.
-       (format_floating): Correct handling of infinities and NaNs.
- 2018-07-03  Martin Sebor  <msebor@redhat.com>
-       * print-tree.c (print_real_cst): New function.
-       (print_node_brief): Call it.
-       (print_node): Ditto.
- 2018-07-03  Jeff Law  <law@redhat.com>
-       * config/h8300/h8300.md (logical<mode>3_sn, logical<mode>3): Merge
-       into a single pattern.
-       * config/h8300/h8300.md (ors code_iterator): New.
-       (bsetqi_msx, bnotqi_msx patterns and splitters): Consolidate into
-       a single pattern and single splitter.
-       (bsethi_msx, bnothi_msx patterns): Consolidate into a single pattern.
-       (iorqi3_1, xorqi3_1): Likewise.
-       (iorqi3, xorqi3 expanders): Similarly.
-       * config/h8300/h8300.md (movmd_internal_normal): Consolidated with
-       (movmd_internal) into a single pattern using the P mode iterator.
-       (movmd splitters): Similarly.
-       (stpcpy_internal_normal, stpcpy_internal): Similarly for thes patterns.
-       (movsd splitters): Similarly.
-       * config/h8300/h8300.c (h8300_insn_length_from_table): Consolidate
-       ADDB, ADDW and ADDL into a single ADD attribute which selects the
-       right table based on the size of the operand.
-       * config/h8300/h8300.md (length_table): Corresponding changes. All
-       references to "addb", "addw" and "addl" changed to "add".
-       (btst patterns): Merge two variants into a single pattern.
-       (tstqi, tsthi): Likewise.
-       (addhi3_incdec, addsi3_incdec): Likewise.
-       (subhi3_h8300hs, subsi3_h8300hs): Likewise.
-       (mulhi3, mulsi3): Likewise.
-       (udivhi3, udivsi3): Likewise.
-       (divhi3, divsi3): Likewise.
-       (andorqi3, andorhi3, andorsi3): Likewise.
- 2018-07-03  Uros Bizjak  <ubizjak@gmail.com>
-       PR target/85694
-       * config/i386/sse.md (uavg<mode>3_ceil): New expander.
-       (<sse2_avx2>_uavg<mode>3<mask_name>): Simplify expander.
- 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
-       PR tree-optimization/85694
-       * config/aarch64/iterators.md (HADD, RHADD): New int iterators.
-       (u): Handle UNSPEC_SHADD, UNSPEC_UHADD, UNSPEC_SRHADD and
-       UNSPEC_URHADD.
-       * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor)
-       (<u>avg<mode>3_ceil): New patterns.
- 2018-07-03  David Malcolm  <dmalcolm@redhat.com>
-       * gcc.dg/vect/slp-perm-1.c: Remove "note: " prefix from
-       scan-tree-dump directive.
-       * gcc.dg/vect/slp-perm-2.c: Likewise.
-       * gcc.dg/vect/slp-perm-3.c: Likewise.
-       * gcc.dg/vect/slp-perm-5.c: Likewise.
-       * gcc.dg/vect/slp-perm-6.c: Likewise.
-       * gcc.dg/vect/slp-perm-7.c: Likewise.
-       * gcc.dg/vect/slp-perm-8.c: Likewise.
- 2018-07-03  Marek Polacek  <polacek@redhat.com>
-       PR middle-end/86202
-       * gimple-fold.c (size_must_be_zero_p): Check the type of the size.
- 2018-07-03  Richard Biener  <rguenther@suse.de>
-       PR ipa/86389
-       * tree-ssa-structalias.c (find_func_clobbers): Properly
-       handle indirect calls.
- 2018-07-03  Jeff Law  <law@redhat.com>
-       * config/h8300/h8300.md (HSI, QHSI, QHSIF): New mode iterators.
-       (shifts): New code iterator.
-       (movqi, movhi, movsi, movsf expanders): Consolidate into a single
-       expander.  Fix HImode handling on H8/SX.
-       (addqi3, addhi3, addsi3 expanders): Consolidate into a single expander.
-       (subqi3, subhi3, subsi3 expanders): Likewise.
-       (andqi3, andhi3, andsi3 expanders): Likewise.
-       (iorqi3, iorhi3, iorsi3 expanders): Likewise.
-       (xorqi3, xorhi3, xorsi3 expanders): Likewise.
-       (negqi2, neghi2, negsi2, negsf2 expanders): Likewise.
-       (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise.
-       (zero_extendqihi2, zero_extendqisi2): Likewise.
-       (extendqihi2, extendqisi2): Likewise.
-       (rotlqi3, rotlhi3, rotlsi3): Likewise.
-       (neghi2_h8300, negsi2_h8300): Likewise for these patterns.
-       (rotlqi3_1, rotlhi3_1): Likewise.
-       (logicalhi3_sn, logicalsi3_sn): Likewise.
-       (logicalhi3, logicalsi3): Likewise.
- 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vect-patterns.c (vect_recog_rotate_pattern)
-       (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern)
-       (vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast)
-       (adjust_bool_pattern, vect_recog_bool_pattern): Pass the vector
-       type to append_pattern_def_seq instead of creating a stmt_vec_info
-       directly.
-       (build_mask_conversion): Likewise.  Remove vinfo argument.
-       (vect_add_conversion_to_patterm): Likewise, renaming to...
-       (vect_add_conversion_to_pattern): ...this.
-       (vect_recog_mask_conversion_pattern): Update call to
-       build_mask_conversion.  Pass the vector type to
-       append_pattern_def_seq here too.
-       (vect_recog_gather_scatter_pattern): Update call to
-       vect_add_conversion_to_pattern.
- 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vect-patterns.c (new_pattern_def_seq): Delete.
-       (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
-       (vect_recog_widen_op_pattern, vect_recog_over_widening_pattern)
-       (vect_recog_rotate_pattern, vect_synth_mult_by_constant): Don't set
-       STMT_VINFO_PATTERN_DEF_SEQ to null here.
-       (vect_recog_pow_pattern, vect_recog_vector_vector_shift_pattern)
-       (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern): Use
-       append_pattern_def_seq instead of new_pattern_def_seq.
-       (vect_recog_divmod_pattern): Do both of the above.
-       (vect_pattern_recog_1): Assert that STMT_VINO_PATTERN_DEF_SEQ
-       is null.
- 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vect-patterns.c (vect_recog_dot_prod_pattern):
-       (vect_recog_sad_pattern, vect_recog_widen_op_pattern)
-       (vect_recog_widen_mult_pattern, vect_recog_pow_pattern):
-       (vect_recog_widen_sum_pattern, vect_recog_over_widening_pattern)
-       (vect_recog_average_pattern, vect_recog_cast_forwprop_pattern)
-       (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
-       (vect_recog_vector_vector_shift_pattern, vect_synth_mult_by_constant)
-       (vect_recog_mult_pattern, vect_recog_divmod_pattern)
-       (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
-       (vect_recog_mask_conversion_pattern): Replace vec<gimple *>
-       parameter with a single stmt_vec_info.
-       (vect_recog_func_ptr): Likewise.
-       (vect_recog_gather_scatter_pattern): Likewise, folding in...
-       (vect_try_gather_scatter_pattern): ...this.
-       (vect_pattern_recog_1): Remove stmts_to_replace and just pass
-       the stmt_vec_info of the statement to be matched.  Don't clear
-       STMT_VINFO_RELATED_STMT.
-       (vect_pattern_recog): Update call accordingly.
- 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
-       PR tree-optimization/85694
-       * doc/md.texi (avgM3_floor, uavgM3_floor, avgM3_ceil)
-       (uavgM3_ceil): Document new optabs.
-       * doc/sourcebuild.texi (vect_avg_qi): Document new target selector.
-       * internal-fn.def (IFN_AVG_FLOOR, IFN_AVG_CEIL): New internal
-       functions.
-       * optabs.def (savg_floor_optab, uavg_floor_optab, savg_ceil_optab)
-       (savg_ceil_optab): New optabs.
-       * tree-vect-patterns.c (vect_recog_average_pattern): New function.
-       (vect_vect_recog_func_ptrs): Add it.
-       * tree-vect-stmts.c (vectorizable_call): Get the type of the zero
-       constant directly from the associated lhs.
- 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vect-patterns.c (vect_split_statement): New function.
-       (vect_convert_input): Use it to try to split an existing cast.
- 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
-       * poly-int.h (print_hex): New function.
-       * dumpfile.h (dump_dec, dump_hex): Declare.
-       * dumpfile.c (dump_dec, dump_hex): New poly_wide_int functions.
-       * tree-vectorizer.h (_stmt_vec_info): Add min_output_precision,
-       min_input_precision, operation_precision and operation_sign.
-       * tree-vect-patterns.c (vect_get_range_info): New function.
-       (vect_same_loop_or_bb_p, vect_single_imm_use)
-       (vect_operation_fits_smaller_type): Delete.
-       (vect_look_through_possible_promotion): Add an optional
-       single_use_p parameter.
-       (vect_recog_over_widening_pattern): Rewrite to use new
-       stmt_vec_info infomration.  Handle one operation at a time.
-       (vect_recog_cast_forwprop_pattern, vect_narrowable_type_p)
-       (vect_truncatable_operation_p, vect_set_operation_type)
-       (vect_set_min_input_precision): New functions.
-       (vect_determine_min_output_precision_1): Likewise.
-       (vect_determine_min_output_precision): Likewise.
-       (vect_determine_precisions_from_range): Likewise.
-       (vect_determine_precisions_from_users): Likewise.
-       (vect_determine_stmt_precisions, vect_determine_precisions): Likewise.
-       (vect_vect_recog_func_ptrs): Put over_widening first.
-       Add cast_forwprop.
-       (vect_pattern_recog): Call vect_determine_precisions.
- 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vect-patterns.c (vect_mark_pattern_stmts): Remove pattern
-       statements that have been replaced by further pattern statements.
-       (vect_pattern_recog_1): Clear STMT_VINFO_PATTERN_DEF_SEQ on failure.
- 2018-07-03  Richard Biener  <rguenther@suse.de>
-       * tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping,
-       always set *dt.  Dump vectype in vectype overload.
-       * dumpfile.h (dump_gimple_expr): New function.
-       (dump_gimple_expr_loc): Likewise.
-       * dumpfile.c (dump_gimple_expr): New function.
-       (dump_gimple_expr_loc): Likewise.
- 2018-07-02  Jeff Law  <law@redhat.com>
-       * config/h8300/h8300.md (movqi_h8300, movqi_h8300hs): Consolidate
-       the H8/300, H8/300H and H8/S variants into a single pattern.
-       (movhi_h8300, movqi_h8300hs): Similarly.
-       (pushqi_h8300hs, pushhi_h8300hs): Consolidate into a single pattern.
-       (QHI mode iterator): New.
-       * config/h8300/h8300.md: Remove trailing whitespace.
- 2018-07-02  Jim Wilson  <jimw@sifive.com>
-       * config/riscv/riscv.c (riscv_expand_epilogue): Use emit_jump_insn
-       instead of emit_insn for interrupt returns.
-       * config/riscv/riscv.md (riscv_met): Add (return) to rtl.
-       (riscv_sret, riscv_uret): Likewise.
- 2018-07-02  David Malcolm  <dmalcolm@redhat.com>
-       * pretty-print.c (selftest::test_pp_format): Move save and restore
-       of quotes to class auto_fix_quotes, and add an instance.
-       * selftest.c: Include "intl.h".
-       (selftest::auto_fix_quotes::auto_fix_quotes): New ctor.
-       (selftest::auto_fix_quotes::~auto_fix_quotes): New dtor.
-       * selftest.h (selftest::auto_fix_quotes): New class.
- 2018-07-02  Richard Henderson  <richard.henderson@linaro.org>
-       * config/aarch64/aarch64-protos.h, config/aarch64/aarch64.c
-       (aarch64_sve_prepare_conditional_op): Remove.
-       * config/aarch64/aarch64-sve.md (cond_<SVE_INT_BINARY><SVE_I>):
-       Allow aarch64_simd_reg_or_zero as select operand; remove
-       the aarch64_sve_prepare_conditional_op call.
-       (cond_<SVE_INT_BINARY_SD><SVE_SDI>): Likewise.
-       (cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
-       (*cond_<SVE_INT_BINARY><SVE_I>_z): New pattern.
-       (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_z): New pattern.
-       (*cond_<SVE_COND_FP_BINARY><SVE_F>_z): New pattern.
-       (*cond_<SVE_INT_BINARY><SVE_I>_any): New pattern.
-       (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_any): New pattern.
-       (*cond_<SVE_COND_FP_BINARY><SVE_F>_any): New pattern
-       and a splitters to match all of the *_any patterns.
-       * config/aarch64/predicates.md (aarch64_sve_any_binary_operator): New.
-       * config/aarch64/iterators.md (SVE_INT_BINARY_REV): Remove.
-       (SVE_COND_FP_BINARY_REV): Remove.
-       (sve_int_op_rev, sve_fp_op_rev): New.
-       * config/aarch64/aarch64-sve.md (*cond_<SVE_INT_BINARY><SVE_I>_0): New.
-       (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_0): New.
-       (*cond_<SVE_COND_FP_BINARY><SVE_F>_0): New.
-       (*cond_<SVE_INT_BINARY><SVE_I>_2): Rename, add movprfx alternative.
-       (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_2): Similarly.
-       (*cond_<SVE_COND_FP_BINARY><SVE_F>_2): Similarly.
-       (*cond_<SVE_INT_BINARY><SVE_I>_3): Similarly; use sve_int_op_rev.
-       (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_3): Similarly.
-       (*cond_<SVE_COND_FP_BINARY><SVE_F>_3): Similarly; use sve_fp_op_rev.
-       * config/aarch64/aarch64-sve.md (cond_<SVE_COND_FP_BINARY><SVE_F>):
-       Remove match_dup 1 from the inner unspec.
-       (*cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
-       * config/aarch64/aarch64.md (movprfx): New attr.
-       (length): Default movprfx to 8.
-       * config/aarch64/aarch64-sve.md (*mul<SVE_I>3): Add movprfx alt.
-       (*madd<SVE_I>, *msub<SVE_I): Likewise.
-       (*<su>mul<SVE_I>3_highpart): Likewise.
-       (*<SVE_INT_BINARY_SD><SVE_SDI>3): Likewise.
-       (*v<ASHIFT><SVE_I>3): Likewise.
-       (*<su><MAXMIN><SVE_I>3): Likewise.
-       (*<su><MAXMIN><SVE_F>3): Likewise.
-       (*fma<SVE_F>4, *fnma<SVE_F>4): Likewise.
-       (*fms<SVE_F>4, *fnms<SVE_F>4): Likewise.
-       (*div<SVE_F>4): Likewise.
- 2018-07-02  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vect-patterns.c (vect_recog_widen_shift_pattern): Fix typo
-       in dump string.
- 2018-07-02  Richard Biener  <rguenther@suse.de>
-       PR tree-optimization/86363
-       * tree-ssa-sccvn.c (vn_reference_lookup_3): Check the
-       memset argument refers to a non-variable address.
- 2018-07-02  Aldy Hernandez  <aldyh@redhat.com>
-       * tree-vrp.c (extract_range_from_binary_expr_1): Abstract a lot of the
-       {PLUS,MINUS}_EXPR code to...
-       (adjust_symbolic_bound): ...here,
-       (combine_bound): ...here,
-       (set_value_range_with_overflow): ...and here.
- 2018-07-02  Aldy Hernandez  <aldyh@redhat.com>
-       * tree-vrp.c (extract_range_from_unary_expr): Abstract ABS_EXPR
-       code...
-       (extract_range_from_abs_expr): ...here.
- 2018-07-02  Eric Botcazou  <ebotcazou@adacore.com>
-       * config/i386/i386.c (ix86_finalize_stack_frame_flags): Do not overrule
-       -fno-omit-frame-pointer when not optimizing.
- 2018-07-02  Martin Liska  <mliska@suse.cz>
-         PR ipa/86279
-       * ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.
-       (propagate_nothrow): 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.sandiford@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.sandiford@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  <hubicka@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.
  
- 2018-07-02  Martin Liska  <mliska@suse.cz>
-         PR ipa/86323
-       * ipa-inline.c (early_inliner): Revert wrongly added ::get call.
- 2018-07-02  David Malcolm  <dmalcolm@redhat.com>
-       * dumpfile.c (dump_generic_expr_loc): Undo removal of this
-       function in r262149, changing "loc" param from source_location to
-       const dump_location_t &.
-       * dumpfile.h (dump_generic_expr_loc): Undo removal of this
-       declaration, as above.
- 2018-07-01  Paul Koning  <ni1d@arrl.net>
-       * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
-       -munit-asm, -mgnu-asm, -mdec-asm.
-       * config/pdp11/pdp11-protos.h (pdp11_gen_int_label): New.
-       (pdp11_output_labelref): New.
-       (pdp11_output_def): New.
-       (pdp11_output_addr_vec_elt): New.
-       * config/pdp11/pdp11.c: Use tab between opcode and operands.  Use
-       %# and %@ format codes.
-       (pdp11_option_override): New.
-       (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Define.
-       (pdp11_output_ident): New.
-       (pdp11_asm_named_section): New.
-       (pdp11_asm_init_sections): New.
-       (pdp11_file_start): New.
-       (pdp11_file_end): New.
-       (output_ascii): Use .ascii/.asciz for -mdec-asm.
-       (pdp11_asm_print_operand): Update %# and %$ for -mdec-asm.  Add
-       %o, like %c but octal.
-       (pdp11_option_override): New.
-       * config/pdp11/pdp11.h (TEXT_SECTION_ASM_OP): Update for
-       -mdec-asm.
-       (DATA_SECTION_ASM_OP): Ditto.
-       (READONLY_DATA_SECTION_ASM_OP): New.
-       (IS_ASM_LOGICAL_LINE_SEPARATOR): New.
-       (ASM_GENERATE_INTERNAL_LABEL): Use new function.
-       (ASM_OUTPUT_LABELREF): Ditto.
-       (ASM_OUTPUT_DEF): Ditto.
-       (ASM_OUTPUT_EXTERNAL): New.
-       (ASM_OUTPUT_SOURCE_FILENAME): New.
-       (ASM_OUTPUT_ADDR_VEC_ELT): Use new function.
-       (ASM_OUTPUT_SKIP): Update for -mdec-asm.
-       * config/pdp11/pdp11.md: Use tab between opcode and operands.  Use
-       %# and %@ format codes.
-       * config/pdp11/pdp11.opt (mgnu-asm): New.
-       (mdec-asm): Conflicts with -mgnu-asm and -munix-asm.
-       (munix-asm): Conflicts with -mdec-asm and -mgnu-asm.
-       * doc/invoke.txt (PDP-11 Options): Add -mgnu-asm.
- 2018-07-01  Aldy Hernandez  <aldyh@redhat.com>
-       * tree-ssa-threadupdate.c (mark_threaded_blocks): Avoid
-       dereferencing path[] beyond its length.
-       (debug_path): New.
-       (debug_all_paths): New.
-       (rewire_first_differing_edge): New.
-       (adjust_paths_after_duplication): New.
-       (duplicate_thread_path): Call adjust_paths_after_duplication.
-       Add new argument.
-       (thread_through_all_blocks): Add new argument to
-       duplicate_thread_path.
- 2018-06-30  Jim Wilson  <jimw@sifive.com>
-       * config/riscv/predicates.md (p2m1_shift_operand): New.
-       (high_mask_shift_operand): New.
-       * config/riscv/riscv.md (lshrsi3_zero_extend_3+1): New combiner
-       pattern using p2m1_shift_operand.
-       (lshsi3_zero_extend_3+2): New combiner pattern using
-       high_mask_shift_operand.
- 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vect-patterns.c (vect_get_external_def_edge): New function,
-       split out from...
-       (vect_recog_rotate_pattern): ...here.
-       (vect_convert_input): Try to insert casts of invariants in the
-       preheader.
-       * tree-vect-loop-manip.c (vect_loop_versioning): Don't require the
-       preheader to be empty.
- 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vect-patterns.c (append_pattern_def_seq): Take an optional
-       vector type.  If given, install it in the new statement's
-       STMT_VINFO_VECTYPE.
-       (vect_element_precision): New function.
-       (vect_unpromoted_value): New struct.
-       (vect_unpromoted_value::vect_unpromoted_value): New function.
-       (vect_unpromoted_value::set_op): Likewise.
-       (vect_look_through_possible_promotion): Likewise.
-       (vect_joust_widened_integer, vect_joust_widened_type): Likewise.
-       (vect_widened_op_tree, vect_convert_input): Likewise.
-       (vect_convert_inputs, vect_convert_output): Likewise.
-       (vect_recog_dot_prod_pattern): Use vect_look_through_possible_promotion
-       to handle the optional cast of the multiplication result and
-       vect_widened_op_tree to detect the widened multiplication itself.
-       Do not require the input and output of promotion casts to have
-       the same sign, but base the signedness of the operation on the
-       input rather than the result.  If the pattern includes two
-       promotions, check that those promotions have the same sign.
-       Do not restrict the MULT_EXPR handling to a double-width result;
-       handle quadruple-width results and wider.  Use vect_convert_inputs
-       to convert the inputs to the common type.
-       (vect_recog_sad_pattern):  Use vect_look_through_possible_promotion
-       to handle the optional cast of the ABS result.  Also allow a sign
-       change or a sign extension between the ABS and MINUS.
-       Use vect_widened_op_tree to detect the widened subtraction and use
-       vect_convert_inputs to convert the inputs to the common type.
-       (vect_handle_widen_op_by_const): Delete.
-       (vect_recog_widen_op_pattern): New function.
-       (vect_recog_widen_mult_pattern): Use it.
-       (vect_recog_widen_shift_pattern): Likewise.
-       (vect_recog_widen_sum_pattern): Use
-       vect_look_through_possible_promotion to handle the promoted
-       PLUS_EXPR operand.
- 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
-       * gimple-iterator.c (gsi_for_stmt): Add a new overload that takes
-       the containing gimple_seq *.
-       * gimple-iterator.h (gsi_for_stmt): Declare it.
-       * tree-vect-patterns.c (vect_recog_dot_prod_pattern)
-       (vect_recog_sad_pattern, vect_recog_widen_sum_pattern)
-       (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
-       (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern)
-       (vect_recog_mask_conversion_pattern): Remove STMT_VINFO_IN_PATTERN_P
-       checks.
-       (vect_init_pattern_stmt, vect_set_pattern_stmt): New functions,
-       split out from...
-       (vect_mark_pattern_stmts): ...here.  Handle cases in which the
-       statement being replaced is part of an existing pattern
-       definition sequence, inserting the new pattern statements before
-       the original one.
-       (vect_pattern_recog_1): Don't return a bool.  If the statement
-       is already part of a pattern, instead apply pattern matching
-       to the pattern definition statements.  Don't clear the
-       STMT_VINFO_RELATED_STMT if is_pattern_stmt_p.
-       (vect_pattern_recog): Don't break after the first match;
-       continue processing the pattern definition statements instead.
-       Don't bail out for STMT_VINFO_IN_PATTERN_P here.
- 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
-       (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
-       (vect_recog_widen_sum_pattern): Use it.
- 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vect-loop.c (vectorizable_reduction): Assert that the
-       phi is not a pattern statement and has not been replaced by
-       a pattern statement.
-       * tree-vect-patterns.c (type_conversion_p): Don't check
-       STMT_VINFO_IN_PATTERN_P.
-       (vect_recog_vector_vector_shift_pattern): Likewise.
-       (vect_recog_dot_prod_pattern): Expect vect_is_simple_use to return
-       the pattern statement rather than the original statement; check
-       directly for a WIDEN_MULT_EXPR here.
-       * tree-vect-slp.c (vect_get_and_check_slp_defs): Expect
-       vect_is_simple_use to return the pattern statement rather
-       than the original statement; use is_pattern_stmt_p to check
-       for such a pattern statement.
-       * tree-vect-stmts.c (process_use): Expect vect_is_simple_use
-       to return the pattern statement rather than the original statement;
-       don't do the same transformation here.
-       (vect_is_simple_use): If the defining statement has been replaced
-       by a pattern statement, return the pattern statement instead.
-       Remove the corresponding (local) transformation from the vectype
-       overload.
- 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vectorizer.h (vect_is_simple_use): Move the gimple ** to the
-       end and default to null.
-       * tree-vect-loop.c (vect_create_epilog_for_reduction)
-       (vectorizable_reduction): Update calls accordingly, dropping the
-       gimple ** argument if the passed-back statement isn't needed.
-       * tree-vect-patterns.c (vect_get_internal_def, type_conversion_p)
-       (vect_recog_rotate_pattern): Likewise.
-       (vect_recog_mask_conversion_pattern): Likewise.
-       * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
-       (vect_mask_constant_operand_p): Likewise.
-       * tree-vect-stmts.c (is_simple_and_all_uses_invariant, process_use):
-       (vect_model_simple_cost, vect_get_vec_def_for_operand): Likewise.
-       (get_group_load_store_type, get_load_store_type): Likewise.
-       (vect_check_load_store_mask, vect_check_store_rhs): Likewise.
-       (vectorizable_call, vectorizable_simd_clone_call): Likewise.
-       (vectorizable_conversion, vectorizable_assignment): Likewise.
-       (vectorizable_shift, vectorizable_operation): Likewise.
-       (vectorizable_store, vect_is_simple_cond): Likewise.
-       (vectorizable_condition, vectorizable_comparison): Likewise.
-       (get_same_sized_vectype, vect_get_mask_type_for_stmt): Likewise.
-       (vect_is_simple_use): Rename the def_stmt argument to def_stmt_out
-       and move it to the end.  Cope with null def_stmt_outs.
- 2018-06-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>
-       * Makefile.in (FLAGS_TO_PASS): Add RANLIB_FOR_TARGET.
- 2018-06-29  Jeff Law  <law@redhat.com>
-       * config/v850/v850.c (v850_legitimate_address_p): Handle large
-       displacements for TARGET_V850E2V3 and newer.
-       (TARGET_LRA_P): Remove.  Defaults to LRA now.
-       * config/v850/v850.md (sign23byte_load): Remove.
-       (unsign23byte_load, sign23hword_load, unsign23hword_load): Likewise.
-       (23word_load, 23byte_store, 23hword_store, 23word_store): Likewise.
- 2018-06-29  Martin Liska  <mliska@suse.cz>
-       PR lto/85759
-       * coverage.c (coverage_init): Mangle full path name.
-       * doc/invoke.texi: Document the change.
-       * gcov-io.c (mangle_path): New.
-       * gcov-io.h (mangle_path): Likewise.
-       * gcov.c (mangle_name): Use mangle_path for path mangling.
- 2018-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
-       * config/arm/arm.c (output_move_double): Don't allow STRD instructions
-       if starting source register is not even.
- 2018-06-29  Martin Liska  <mliska@suse.cz>
-         PR tree-optimization/86263
-       * tree-switch-conversion.c (switch_decision_tree::try_switch_expansion):
-         Make edge redirection.
- 2018-06-29  David Malcolm  <dmalcolm@redhat.com>
-       * dumpfile.c (dump_loc): Add indentation based on scope depth.
-       (dump_scope_depth): New variable.
-       (get_dump_scope_depth): New function.
-       (dump_begin_scope): New function.
-       (dump_end_scope): New function.
-       * dumpfile.h (get_dump_scope_depth): New declaration.
-       (dump_begin_scope): New declaration.
-       (dump_end_scope): New declaration.
-       (class auto_dump_scope): New class.
-       (AUTO_DUMP_SCOPE): New macro.
-       * tree-vectorizer.h (DUMP_VECT_SCOPE): Reimplement in terms of
-       AUTO_DUMP_SCOPE.
- 2018-06-29  Richard Biener  <rguenther@suse.de>
-       * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert
-       compute_all_dependences succeeds.
-       * tree-vect-loop.c (vect_get_datarefs_in_loop): Fail early if we
-       exceed --param loop-max-datarefs-for-datadeps.
- 2018-06-29  Jakub Jelinek  <jakub@redhat.com>
-       * config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H.
- 2018-06-28  Uros Bizjak  <ubizjak@gmail.com>
-       PR target/86348
-       * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): Use
-       alternative 0 in preferred_for_speed attribute.
- 2018-06-28  Paul Koning  <ni1d@arrl.net>
-       * config/pdp11/pdp11-protos.h (pdp11_shift_length): New function.
-       * config/pdp11/pdp11.c (pdp11_shift_length): New function.
-       * config/pdp11/pdp11.h (ADJUST_INSN_LENGTH): Remove.
-       * config/pdp11/pdp11.md: Correct "length" attribute calculation
-       for shift insn patterns.
- 2018-06-28  David Malcolm  <dmalcolm@redhat.com>
-       * cgraph.c (cgraph_node::get_body): Replace assignments to
-       "dump_file" with calls to set_dump_file.
-       * dumpfile.c (alt_dump_file): Make static, and group with...
-       (alt_flags): ...this definition.
-       (dumps_are_enabled): New variable.
-       (refresh_dumps_are_enabled): New function.
-       (set_dump_file): New function.
-       (set_alt_dump_file): New function.
-       (gcc::dump_manager::dump_start): Replace assignments to
-       "dump_file" and "alt_dump_file" with calls to set_dump_file and
-       set_alt_dump_file.
-       (gcc::dump_manager::dump_finish): Likewise.
-       * dumpfile.h (alt_dump_file): Delete decl.
-       (dumps_are_enabled): New variable decl.
-       (set_dump_file): New function decl.
-       (dump_enabled_p): Rewrite in terms of new "dumps_are_enabled"
-       global.
-       * tree-nested.c (lower_nested_functions): Replace assignments to
-       "dump_file" with calls to set_dump_file.
+ 2019-11-15  Szabolcs Nagy  <szabolcs.nagy@arm.com>
  
- 2018-06-28  Eric Botcazou  <ebotcazou@adacore.com>
+       * config/m68k/linux.h (MUSL_DYNAMIC_LINKER): Define.
  
-       * tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the
-       goto_locus of each outgoing edge of each basic block.
+ 2019-11-15  Nick Clifton  <nickc@redhat.com>
+           Szabolcs Nagy  <szabolcs.nagy@arm.com>
  
- 2018-06-28  Richard Biener  <rguenther@suse.de>
+       PR target/65649
+       * config/microblaze/microblaze.c (print_operand): Print value as long.
  
-       * dwarf2out.c (decl_scope_table): Remove.
-       (push_decl_scope): Likewise.
-       (pop_decl_scope): Likewise.
-       (gen_type_die_for_member): Do not call push/pop_decl_scope.
-       (gen_struct_or_union_type_die): Likewise.
-       (gen_tagged_type_die): Likewise.
-       (dwarf2out_init): Do not initialize decl_scope_table.
-       (dwarf2out_c_finalize): Do not free it.
+ 2019-11-15  Jan Hubicka  <hubicka@ucw.cz>
  
- 2018-06-28  Richard Biener  <rguenther@suse.de>
+       * ipa-inline.c (edge_badness, inline_small_functions): Revert
+       accidental commit.
  
-       * dwarf2out.c (gen_subprogram_die): Use is_unit_die when
-       deciding whether to not re-use a DIE.
- 2018-06-28  Richard Biener  <rguenther@suse.de>
+ 2019-11-15  Kwok Cheung Yeung  <kcy@codesourcery.com>
  
-       * dwarf2out.c (gen_subprogram_die): Always re-use DIEs with an
-       DW_AT_abstract_origin attribute.
+       * config/gcn/gcn.h (FIXED_REGISTERS): Unfix frame pointer.
+       (CALL_USED_REGISTERS): Make frame pointer callee-saved.
  
- 2018-06-28  Martin Liska  <mliska@suse.cz>
+ 2019-11-15  Kwok Cheung Yeung  <kcy@codesourcery.com>
  
-       * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
-         Use newly introduced constants.
-       * tree-switch-conversion.h (struct jump_table_cluster):
-         Define max_ratio_for_size and max_ratio_for_speed.
+       * 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.
  
- 2018-06-28  Martin Liska  <mliska@suse.cz>
+ 2019-11-15  Martin Jambor  <mjambor@suse.cz>
  
-       * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
-         Add new checking assert to catch invalid state.
-       (jump_table_cluster::can_be_handled): Handle single case
-         clusters.
-       (jump_table_cluster::is_beneficial): Bail out for such case.
-       (bit_test_cluster::find_bit_tests):
-         Add new checking assert to catch invalid state.
-       (bit_test_cluster::can_be_handled): Handle single case
-         clusters.
-       (bit_test_cluster::is_beneficial): Bail out for such case.
-       (switch_decision_tree::analyze_switch_statement):
-         Fix comment.
- 2018-06-28  Martin Liska  <mliska@suse.cz>
-       * common.opt: Introduce -completion option.
-       * gcc.c (driver_handle_option): Handle it.
-       (driver::main): Print completions if completion
-         is set.
-       * opt-suggestions.c (option_proposer::get_completions):
-         New function.
-       (option_proposer::suggest_completion): Likewise.
-       (option_proposer::find_param_completions): Likewise.
-       (verify_autocompletions): Likewise.
-       (test_completion_valid_options): Likewise.
-       (test_completion_valid_params): Likewise.
-       (in_completion_p): Likewise.
-       (empty_completion_p): Likewise.
-       (test_completion_partial_match): Likewise.
-       (test_completion_garbage): Likewise.
-       (opt_proposer_c_tests): Likewise.
-       * opt-suggestions.h: Declare new functions.
-       * opts.c (common_handle_option): Handle OPT__completion_.
-       * selftest-run-tests.c (selftest::run_tests): Add
-         opt_proposer_c_tests.
-       * selftest.c (assert_str_startswith): New.
-       * selftest.h (assert_str_startswith): Likewise.
-       (opt_proposer_c_tests): New.
-       (ASSERT_STR_STARTSWITH): Likewise.
- 2018-06-28  Martin Liska  <mliska@suse.cz>
-       * Makefile.in: Add opt-suggestions.o.
-       * gcc-main.c: Include opt-suggestions.h.
-       * gcc.c (driver::driver): Likewise.
-       (driver::~driver): Remove m_option_suggestions.
-       (driver::build_option_suggestions): Moved to option_proposer.
-       (driver::suggest_option): Likewise.
-       (driver::handle_unrecognized_options): Use option_proposer.
-       * gcc.h (class driver): Add new memver m_option_proposer.
-       * opt-suggestions.c: New file.
-       * opt-suggestions.h: New file.
- 2018-06-28  Martin Liska  <mliska@suse.cz>
-       * vec.h (class auto_string_vec): New (moved from auto_argvec).
-       (auto_string_vec::~auto_string_vec): Likewise.
- 2018-06-28  Eric Botcazou  <ebotcazou@adacore.com>
-       * tree-inline.h (struct copy_body_data): Move remapping_type_depth and
-       prevent_decl_creation_for_types fields up and add reset_location field.
-       * tree-inline.c (remap_gimple_stmt): Force input_location on the new
-       statement if id->reset_location is true.
-       (copy_edges_for_bb): Do not set goto_locus on the new edges if
-       id->reset_location is true.
-       (copy_phis_for_bb): Force input_location on the arguments if
-       id->reset_location is true.
-       (expand_call_inline): Set id->reset_location if DECL_IGNORED_P
-       is set on the function to be inlined.
- 2018-06-27  Stephan Bergmann  <sbergman@redhat.com>
-       * doc/invoke.texi (Debugging Options): Add -gsplit-dwarf.
- 2018-06-27  Dimitar Dimitrov  <dimitar@dinux.eu>
-       * lra-eliminations.c (update_reg_eliminate): Mark all spanning hard
-       registers for Pmode.
-       * lra-lives.c (check_pseudos_live_through_calls): Mark all spanning
-       hard registers for the clobbered pseudo.
- 2018-06-27  Paul Koning  <ni1d@arrl.net>
-       * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
-       mutually exclusive options.
-       * config/pdp11/constraints.md (h): New constraint.
-       (O): Update definition to match shift code generation.
-       (D): New constraint.
-       * config/pdp11/pdp11-modes.def (CCNZ): Define mode.
-       (CCFP): Remove.
-       * config/pdp11/pdp11-protos.h (int_no_side_effect_operand): New
+       * ipa-utils.h (ipa_remove_useless_jump_functions): Remove stray
+       declaration.
+ 2019-11-15  Kwok Cheung Yeung  <kcy@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  <fxue@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  <kcy@codesourcery.com>
+       * config/gcn/gcn.c (gcn_init_cumulative_args): Call reinit_regs.
+ 2019-11-15  Kwok Cheung Yeung  <kcy@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.sandiford@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.malcomson@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  <rguenther@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.sandiford@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  <kcy@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  <rguenther@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.malcomson@arm.com>
+       * passes.c (skip_pass): Set epilogue_completed if skipping the
+       pro_and_epilogue pass.
+ 2019-11-15  Matthew Malcomson  <matthew.malcomson@arm.com>
+       * passes.c (should_skip_pass_p): Always run "dfinish".
+ 2019-11-15  Richard Biener  <rguenther@suse.de>
+       * ipa-inline.c (inline_small_functions): Move assignment
+       to next before call destroying edge.
+ 2019-11-15  Richard Biener  <rguenther@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  <jakub@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  <luoxhu@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  <luoxhu@linux.ibm.com>
+       * ipa-inline.c (inline_small_functions): Update iterator of next.
+ 2019-11-14  Kwok Cheung Yeung  <kcy@codesourcery.com>
+       * lra-spills.c (assign_spill_hard_regs): Check that the spill
+       register is suitable for the mode.
+ 2019-11-14  Andrew MacLeod  <amacleod@redhat.com>
+       * range-op.h (range_operator::fold_range): Return a bool.
+       * range-op.cc (range_operator::wi_fold): Assert supported type.
+       (range_operator::fold_range): Assert supported type and return true.
+       (operator_equal::fold_range): Return true.
+       (operator_not_equal::fold_range): Same.
+       (operator_lt::fold_range): Same.
+       (operator_le::fold_range): Same.
+       (operator_gt::fold_range): Same.
+       (operator_ge::fold_range): Same.
+       (operator_plus::op1_range): Adjust call to fold_range.
+       (operator_plus::op2_range): Same.
+       (operator_minus::op1_range): Same.
+       (operator_minus::op2_range): Same.
+       (operator_exact_divide::op1_range): Same.
+       (operator_lshift::fold_range): Return true and adjust fold_range call.
+       (operator_rshift::fold_range): Same.
+       (operator_cast::fold_range): Return true.
+       (operator_logical_and::fold_range): Same.
+       (operator_logical_or::fold_range): Same.
+       (operator_logical_not::fold_range): Same.
+       (operator_bitwise_not::fold_range): Adjust call to fold_range.
+       (operator_bitwise_not::op1_range): Same.
+       (operator_cst::fold_range): Return true.
+       (operator_identity::fold_range): Return true.
+       (operator_negate::fold_range): Return true and adjust fold_range call.
+       (operator_addr_expr::fold_range): Return true.
+       (operator_addr_expr::op1_range): Adjust call to fold_range.
+       (range_cast): Same.
+       * tree-vrp.c (range_fold_binary_symbolics_p): Adjust call to fold_range.
+       (range_fold_unary_symbolics_p): Same.
+ 2019-11-14  Andrew MacLeod  <amacleod@redhat.com>
+       PR tree-optimization/92506
+       * range-op.cc (range_operator::fold_range): Start with range undefined.
+       (operator_abs::wi_fold): Fix wrong line copy... With wrapv, abs with
+       overflow is varying.
+ 2019-11-14  Aldy Hernandez  <aldyh@redhat.com>
+       * range-op.cc (*operator*::*range): Remove calls to
+       range_intersect, range_invert, and range_union in favor of calling
+       the in-place API methods.
+       (range_tests): Same.
+       * range.cc (range_intersect): Remove.
+       (range_union): Remove.
+       (range_invert): Remove.
+       * range.h (range_intersect): Remove.
+       (range_union): Remove.
+       (range_intersect): Remove.
+ 2019-11-14  Ilya Leoshkevich  <iii@linux.ibm.com>
+       PR rtl-optimization/92430
+       * cfgcleanup.c (pass_jump_after_combine::gate): New function.
+       (pass_jump_after_combine::execute): Perform jump threading
+       unconditionally.
+ 2019-11-14  Jerome Lambourg  <lambourg@adacore.com>
+           Doug Rupp <rupp@adacore.com>
+           Olivier Hainque  <hainque@adacore.com>
+       * config.gcc: Collapse the arm-vxworks entries into
+       a single arm-wrs-vxworks7* one, bpabi based.  Update
+       the default cpu from arm8 to armv7-a
+       * config/arm/vxworks.h (CC1_SPEC): Simplify, knowing that
+       we always use ARM_UNWIND_INFO.
+       (DWARF2_UNWIND_INFO): Remove redefinition.
+       (ARM_TARGET2_DWARF_FORMAT): Likewise.
+       (VXWORKS_PERSONALITY): Define, to "llvm".
+       (VXWORKS_EXTRA_LIBS_RTP): Define, to "-lllvm".
+ 2019-11-14  Jerome Lambourg  <lambourg@adacore.com>
+       * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
+       _VX_CPU instead of CPU and handle arm_arch8.
+ 2019-11-14  Doug Rupp  <rupp@adacore.com>
+           Olivier Hainque  <hainque@adacore.com>
+           Jerome Lambourg  <lambourg@adacore.com>
+       * config.gcc: Handle aarch64*-wrs-vxworks7*.
+       * config/aarch64/aarch64-vxworks.h: New file.
+       * config/aarch64/t-aarch64-vxworks: New file.
+ 2019-11-06  Jerome Lambourg  <lambourg@adacore.com>
+           Olivier Hainque  <hainque@adacore.com>
+       * config/vx-common.h (USE_TM_CLONE_REGISTRY): Remove
+       definition, pointless with a VxWorks specific version
+       of crtstuff.
+       (DWARF2_UNWIND_INFO): Conditionalize on !ARM_UNWIND_INFO.
+       * config/vxworks.h (VX_CRTBEGIN_SPEC, VX_CRTEND_SPEC):
+       New local macros, controlling the addition of vxworks specific
+       crtstuff objects depending on the EH mechanism and kind of
+       module being linked.
+       (VXWORKS_STARTFILE_SPEC, VXWORKS_ENDFILE_SPEC): Use them.
+ 2019-11-06  Pat Bernardi  <bernardi@adacore.com>
+             Jerome Lambourg  <lambourg@adacore.com>
+             Olivier Hainque  <hainque@adacore.com>
+       * config.gcc: Add comment to introduce the TARGET_VXWORKS
+       common macro definitions, conveying VXWORKS7 or 64bit general
+       variations.  Add a block to set gcc_cv_initfini_array
+       unconditionally to "yes" for VxWorks7.
+       config/vx-common.h (VXWORKS_CC1_SPEC): New macro, empty string
+       by default.  Update some comments.
+       config/vxworks.h (VXWORKS_EXTRA_LIBS_RTP): New macro, empty by
+       default, to be added the end of VXWORKS_LIBS_RTP.
+       (VXWORKS_LIBS_RTP): Replace hardcoded part by VXWORKS_BASE_LIBS_RTP
+       and append VXWORKS_EXTRA_LIBS_RTP, both of which specific ports may
+       redefine.
+       (VXWORKS_NET_LIBS_RTP): Account for VxWorks7 specificities.
+       (VXWORKS_CC1_SPEC): Common base definition, with VxWorks7 variation
+       to account for the now available TLS abilities.
+       (TARGET_LIBC_HAS_FUNCTION): Account for VxWorks7 abilities.
+       (VXWORKS_HAVE_TLS): Likewise.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-slp.c (vect_contains_pattern_stmt_p): New function.
+       (vect_slp_convert_to_external): Likewise.
+       (vect_slp_analyze_node_operations): If analysis fails, try building
+       the node from scalars instead.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-cfg.c (verify_gimple_assign_unary): Handle conversions
+       between vector types.
+       * tree-vect-stmts.c (vectorizable_conversion): Extend the
+       non-widening and non-narrowing path to handle standard
+       conversion codes, if the target supports them.
+       * expr.c (convert_move): Try using the extend and truncate optabs
+       for vectors.
+       * optabs-tree.c (supportable_convert_operation): Likewise.
+       * config/aarch64/iterators.md (Vnarroqw): New iterator.
+       * config/aarch64/aarch64-simd.md (<optab><Vnarrowq><mode>2)
+       (trunc<mode><Vnarrowq>2): New patterns.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-stmts.c (vect_get_vector_types_for_stmt): Don't
+       require vectype and nunits_vectype to have the same size;
+       instead assert that nunits_vectype has at least as many
+       elements as vectype.  Don't compute a separate nunits_vectype
+       if the scalar type is obviously the same as vectype's.
+       Tweak dump messages.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64.c (aarch64_vectorize_related_mode): New
        function.
-       (output_jump): Change arguments.
-       (pdp11_fixed_cc_regs): New function.
-       (pdp11_cc_mode): Ditto.
-       (pdp11_expand_shift): Ditto.
-       (pdp11_assemble_shift): Ditto.
-       (pdp11_small_shift): Ditto.
-       (pdp11_branch_cost): Remove.
-       * config/pdp11/pdp11.c (pdp11_assemble_integer): Remove comments
-       from output.
-       (pdp11_register_move_cost): Update for CC registers.
-       (pdp11_rtx_costs): Add case for LSHIFTRT.
-       (pdp11_output_jump): Add CCNZ mode conditional branches.
-       (notice_update_cc_on_set): Remove.
-       (pdp11_cc_mode): New function.
-       (simple_memory_operand): Correct pre/post decrement case.
-       (no_side_effect_operand): New function.
-       (pdp11_regno_reg_class): Add CC_REGS class.
-       (pdp11_fixed_cc_regs): New function.
-       (pdp11_small_shift): New function.
-       (pdp11_expand_shift): New function to expand shift insns.
-       (pdp11_assemble_shift): New function to output shifts.
-       (pdp11_branch_cost): Remove.
-       (pdp11_modes_tieable_p): Make QI/HI modes tieable.
-       * config/pdp11/pdp11.h (SIZE_TYPE): Ensure 16-bit type.
-       (WCHAR_TYPE): Ditto.
-       (PTRDIFF_TYPE): Ditto.
-       (ADJUST_INSN_LENGTH): New macro.
-       (FIXED_REGISTERS): Add CC registers.
-       (CALL_USED_REGISTERS): Ditto.
-       (reg_class): Ditto.
-       (REG_CLASS_NAMES): Ditto.
-       (REG_CLASS_CONTENTS): Ditto.
-       (SELECT_CC_MODE): Use new function.
-       (TARGET_FLAGS_REGNUM): New macro.
-       (TARGET_FIXED_CONDITION_CODE_REGS): Ditto.
-       (cc0_reg_rtx): Remove.
-       (CC_STATUS_MDEP): Remove.
-       (CC_STATUS_MDEFP_INIT): Remove.
-       (CC_IN_FPU): Remove.
-       (NOTICE_UPDATE_CC): Remove.
-       (REGISTER_NAMES): Add CC registers.
-       (BRANCH_COST): Change to constant 1.
-       * config/pdp11/pdp11.md: Rewrite for CCmode condition code
-       handling.
-       * config/pdp11/pdp11.opt (mbcopy): Remove.
-       (mbcopy-builtin): Remove.
-       (mbranch-cheap): Remove.
-       (mbranch-expensive): Remove.
-       * config/pdp11/predicates.md (expand_shift_operand): Update to
-       match shift code generation.
-       (ccnz_operator): New predicate.
-       * doc/invoke.texi (PDP-11 Options): Remove deleted options
-       -mbcopy, -mbcopy-builtin, -mbranch-cheap, -mbranch-expensive.
-       Remove non-existent option -mabshi, -mno-abshi.  Document mutually
-       exclusive options.
-       * doc/md.texi (PDP-11): Document new D and h constraints.  Update
-       description of O constraint.
- 2018-06-27  Jeff Law  <law@redhat.com>
-           Austin Law  <austinklaw@gmail.com>
-       * config/v850/v850.md (addsi3_set_flags): New pattern.
-       (subsi3_set_flags, negsi2_set_flags, andsi3_set_flags): Likewise.
-       (iorsi3_set_flags, xorsi3_set_flags, one_cmplsi2_set_flags): Likewise.
-       (zero_extendhisi2_v850_set_flags): Likewise.
-       (zero_extendqisi2_v850_set_flags): Likewise.
-       (ashlsi3_set_flags, ashlsi3_v850e2_set_flags): Likewise.
-       (lshrsi3_set_flags, lshrsi3_v850e2_set_flags): Likewise.
-       (ashrsi3_set_flags, ashrsi3_v850e2_set_flags): Likewise.
-       * config/v850/v850-protos.h (notice_update_cc): Remove.
-       * config/v850/v850.c (v850_compare_op0, v850_compare_op1): Remove.
-       (v850_print_operand): Handle 'D' and "d".
-       (v850_select_cc_mode): Remove ATTRIBUTE_UNUSED for last argument.
-       Add handling of arithmetic/logical operations compared against zero.
-       (v850_gen_float_compare): Remove ATTRIBUTE_UNUSED for last argument.
-       Do not look at v850_compare_op, instead get mode from last argument.
-       (v850_gen_compare): Remove
-       (increment_stack): Use addsi3_clobber_flags to avoid splitting failure
-       after reload for prologue insns.
-       (expand_prologue): Account for CLOBBER of CC_REGNUM in various
-       patterns.
-       (construct_save_jarl): Likewise.
-       (TARGET_FLAGS_REGNUM): Define.
-       * config/v850/v850.h (v850_compare_op0, v850_compare_op1): Remove.
-       (NOTICE_UPDATE_CC): Remove.
-       * config/v850/v850.md (v850_tst1): Use (reg:CCZ CC_REGNUM) rather
-       than cc0.  Conditionalize on reload_completed.
-       (cmpsi_insn, setfcc_insn): Likewise.
-       (tst1 splitter): Turn into define_and_split which sets the flags
-       after reload.
-       (cstoresi4, cbranchsf4, cbranchdf4, cbranchsi4_insn): Likewise.
-       (cbranchsi4, branch_normal, branch_invert): Do not expose cc0 here.
-       (cstoresf4, cstoredf4): Clobber the flags.
-       (cmpsi, cmpsf, cmpdf): Remove expanders.
-       (setf_insn): Remove pattern.
-       (addsi3): Turn into define_and_split which clobbers the flags after
-       reload and a suitable pattern (addsi3_clobber_flags) for use after
-       reload.
-       (subsi3, negsi2, andsi3, iorsi3, xorsi3, one_cmplsi2) Likewise.
-       (ashlsi3, ashlsi3_v850e2, lshrsi3, lsh4si3_v850e2): Likewise.
-       (ashrsi3, ashrsi3_v850e2): Likewise.
-       (bins): Clobber the flags.
-       (movsicc_normal_cc, movsicc_normal, movsicc_tst1): Likewise.
-       (movsicc_tst1_revesed, sasf, swap and rotate patterns): Likewise.
-       (fix_loop_counter, call_internal_short, call_internal_long): Likewise.
-       (call_value_internal_short, call_value_internal_long): Likewise.
-       (callt_save_interrupt, callt_return_interrupt): Likewise.
-       (save_interrupt, return_interrupt): Likewise.
-       (callt_save_all_interrupt, save_all_interrupt): Likewise.
-       (_save_all_interrupt, callt_restore_all_interrupt): Likewise.
-       (restore_all_interrupt, _restore_all_interrupt): Likewise.
-       (All FP comparisons): Only allow after reload has completed.
-       (trfsr): Likewise.
-       (divh, divhu): Tweak output template.
-       (branch_z_normal, branch_z_invert): Remove
-       (branch_nz_normal, branch_nz_invert): Likewise.
-       (extendhisi_insn, extendqisi_insn): Do not clobber flags.
-       * config/v850/v850-modes.def (CCZ, CCNZ): Add new modes.
-       * config/v850/v850.c (notice_update_cc): Remove.
-       * config/v850/v850.h  (CC_OVERFLOW_UNUSABLE): Remove
-       (CC_NO_CARRY): Likewise.
-       (NOTICE_UPDATE_CC): Define to nothing.
-       * config/v850/v850.md: Remove block comment on cc0 handling
-       Remove "cc" attribute from all patterns.  Remove cc_status handling
-       from all patterns.  Minor formatting fixes.
- 2018-06-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
-       * config/aarch64/aarch64-cores.def (cortex-a76): New entry.
-       (cortex-a76.cortex-a55): Likewise.
-       * config/aarch64/aarch64-tune.md: Regenerate.
-       * doc/invoke.texi (AArch64 Options): Document cortex-a76 and
-       cortex-a76.cortex-a55.
+       (aarch64_autovectorize_vector_modes): Also add V4HImode and V2SImode.
+       (TARGET_VECTORIZE_RELATED_MODE): Define.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vectorizer.h (vec_info::mode_set): New typedef.
+       (vec_info::used_vector_mode): New member variable.
+       (vect_chooses_same_modes_p): Declare.
+       * tree-vect-stmts.c (get_vectype_for_scalar_type): Record each
+       chosen vector mode in vec_info::used_vector_mode.
+       (vect_chooses_same_modes_p): New function.
+       * tree-vect-loop.c (vect_analyze_loop): Use it to avoid trying
+       the same vector statements multiple times.
+       * tree-vect-slp.c (vect_slp_bb_region): Likewise.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * machmode.h (opt_machine_mode::operator==): New function.
+       (opt_machine_mode::operator!=): Likewise.
+       * tree-vectorizer.h (vec_info::vector_mode): Update comment.
+       (get_related_vectype_for_scalar_type): Delete.
+       (get_vectype_for_scalar_type_and_size): Declare.
+       * tree-vect-slp.c (vect_slp_bb_region): Print dump messages to say
+       whether analysis passed or failed, and with what vector modes.
+       Use related_vector_mode to check whether trying a particular
+       vector mode would be redundant with the autodetected mode,
+       and print a dump message if we decide to skip it.
+       * tree-vect-loop.c (vect_analyze_loop): Likewise.
+       (vect_create_epilog_for_reduction): Use
+       get_related_vectype_for_scalar_type instead of
+       get_vectype_for_scalar_type_and_size.
+       * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Replace
+       with...
+       (get_related_vectype_for_scalar_type): ...this new function.
+       Take a starting/"prevailing" vector mode rather than a vector size.
+       Take an optional nunits argument, with the same meaning as for
+       related_vector_mode.  Use related_vector_mode when not
+       auto-detecting a mode, falling back to mode_for_vector if no
+       target mode exists.
+       (get_vectype_for_scalar_type): Update accordingly.
+       (get_same_sized_vectype): Likewise.
+       * tree-vectorizer.c (get_vec_alignment_for_array_type): Likewise.
  
- 2018-06-27  Jeff Law  <law@redhat.com>
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
  
-       * config/v850/t-v850 (MULTILIB_OPTIONS): Remove 8byte-align.
-       (MULTILIB_DIRNAMES): Similarly.
+       * tree-vect-stmts.c (vectorizable_call): Require the types
+       to have the same size.
  
- 2018-06-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
  
-       * gimple.h (gimple_return_retbnd): Delete.
-       (gimple_return_set_retbnd): Likewise.
-       * cgraphunit.c (cgraph_node::expand_thunk): Remove call to
-       gimple_return_set_retbnd.
-       * gimple-pretty-print.c (dump_gimple_return): Remove call to
-       gimple_return_retbnd and adjust.
-       * tree-inline.h (struct copy_body_data): Remove retbnd field.
-       * tree-inline.c (remap_gimple_stmt): Remove handling of retbnd.
-       Explicitly return NULL in a couple more cases.  Move assertion
-       on debug statements and remove unreachable code.
-       (reset_debug_binding): Do not test id->retbnd.
-       (expand_call_inline): Do not set it.
+       * tree-vect-stmts.c (vectorizable_call): If an operand is
+       constant or external, use get_vectype_for_scalar_type
+       rather than get_same_sized_vectype to get its vector type.
+       (vectorizable_conversion, vectorizable_shift): Likewise.
+       (vectorizable_operation): Likewise.
  
- 2018-06-27  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vectorizer.h (vec_info::vector_size): Replace with...
+       (vec_info::vector_mode): ...this new field.
+       * tree-vect-loop.c (vect_update_vf_for_slp): Update accordingly.
+       (vect_analyze_loop, vect_transform_loop): Likewise.
+       * tree-vect-loop-manip.c (vect_do_peeling): Likewise.
+       * tree-vect-slp.c (can_duplicate_and_interleave_p): Likewise.
+       (vect_make_slp_decision, vect_slp_bb_region): Likewise.
+       * tree-vect-stmts.c (get_vectype_for_scalar_type): Likewise.
+       * tree-vectorizer.c (try_vectorize_loop_1): Likewise.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * target.h (vector_sizes, auto_vector_sizes): Delete.
+       (vector_modes, auto_vector_modes): New typedefs.
+       * target.def (autovectorize_vector_sizes): Replace with...
+       (autovectorize_vector_modes): ...this new hook.
+       * doc/tm.texi.in (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES):
+       Replace with...
+       (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): ...this new hook.
+       * doc/tm.texi: Regenerate.
+       * targhooks.h (default_autovectorize_vector_sizes): Delete.
+       (default_autovectorize_vector_modes): New function.
+       * targhooks.c (default_autovectorize_vector_sizes): Delete.
+       (default_autovectorize_vector_modes): New function.
+       * omp-general.c (omp_max_vf): Use autovectorize_vector_modes instead
+       of autovectorize_vector_sizes.  Use the number of units in the mode
+       to calculate the maximum VF.
+       * omp-low.c (omp_clause_aligned_alignment): Use
+       autovectorize_vector_modes instead of autovectorize_vector_sizes.
+       Use a loop based on related_mode to iterate through all supported
+       vector modes for a given scalar mode.
+       * optabs-query.c (can_vec_mask_load_store_p): Use
+       autovectorize_vector_modes instead of autovectorize_vector_sizes.
+       * tree-vect-loop.c (vect_analyze_loop, vect_transform_loop): Likewise.
+       * tree-vect-slp.c (vect_slp_bb_region): Likewise.
+       * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
+       Replace with...
+       (aarch64_autovectorize_vector_modes): ...this new function.
+       (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES): Delete.
+       (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
+       * config/arc/arc.c (arc_autovectorize_vector_sizes): Replace with...
+       (arc_autovectorize_vector_modes): ...this new function.
+       (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES): Delete.
+       (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
+       * config/arm/arm.c (arm_autovectorize_vector_sizes): Replace with...
+       (arm_autovectorize_vector_modes): ...this new function.
+       (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES): Delete.
+       (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
+       * config/i386/i386.c (ix86_autovectorize_vector_sizes): Replace with...
+       (ix86_autovectorize_vector_modes): ...this new function.
+       (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES): Delete.
+       (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
+       * config/mips/mips.c (mips_autovectorize_vector_sizes): Replace with...
+       (mips_autovectorize_vector_modes): ...this new function.
+       (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES): Delete.
+       (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-stmts.c (vectorizable_shift): Check the number
+       of vector elements as well as the type mode when deciding
+       whether an op1_vectype is compatible.  Reuse the result of
+       this check when generating vector statements.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): If
+       targetm.vectorize.preferred_simd_mode returns an integer mode,
+       use mode_for_vector to decide what the vector type's mode
+       should actually be.  Use build_vector_type_for_mode instead
+       of build_vector_type.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * target.def (get_mask_mode): Take a vector mode itself as argument,
+       instead of properties about the vector mode.
+       * doc/tm.texi: Regenerate.
+       * targhooks.h (default_get_mask_mode): Update to reflect new
+       get_mode_mask interface.
+       * targhooks.c (default_get_mask_mode): Likewise.  Use
+       related_int_vector_mode.
+       * optabs-query.c (can_vec_mask_load_store_p): Update call
+       to get_mask_mode.
+       * tree-vect-stmts.c (check_load_store_masking): Likewise, checking
+       first that the original mode really is a vector.
+       * tree.c (build_truth_vector_type_for): Likewise.
+       * config/aarch64/aarch64.c (aarch64_get_mask_mode): Update for new
+       get_mode_mask interface.
+       (aarch64_expand_sve_vcond): Update call accordingly.
+       * config/gcn/gcn.c (gcn_vectorize_get_mask_mode): Update for new
+       get_mode_mask interface.
+       * config/i386/i386.c (ix86_get_mask_mode): Likewise.
  
-       * configure.ac: Add --disable-gcov option.
-       * configure: Regenerate.
-       * Makefile.in: Honour @enable_gcov@.
-       * doc/install.texi: Document --disable-gcov.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree.h (build_truth_vector_type): Delete.
+       (build_same_sized_truth_vector_type): Likewise.
+       * tree.c (build_truth_vector_type): Rename to...
+       (build_truth_vector_type_for): ...this.  Make static and take
+       a vector type as argument.
+       (truth_type_for): Update accordingly.
+       (build_same_sized_truth_vector_type): Delete.
+       * tree-vect-generic.c (expand_vector_divmod): Use truth_type_for
+       instead of build_same_sized_truth_vector_type.
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
+       (vect_record_loop_mask, vect_get_loop_mask): Likewise.
+       * tree-vect-patterns.c (build_mask_conversion): Likeise.
+       * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
+       * tree-vect-stmts.c (vect_get_vec_def_for_operand): Likewise.
+       (vect_build_gather_load_calls, vectorizable_call): Likewise.
+       (scan_store_can_perm_p, vectorizable_scan_store): Likewise.
+       (vectorizable_store, vectorizable_condition): Likewise.
+       (get_mask_type_for_scalar_type, get_same_sized_vectype): Likewise.
+       (vect_get_mask_type_for_stmt): Use truth_type_for instead of
+       build_truth_vector_type.
+       * config/aarch64/aarch64-sve-builtins.cc (gimple_folder::convert_pred):
+       Use truth_type_for instead of build_same_sized_truth_vector_type.
+       * config/rs6000/rs6000-call.c (fold_build_vec_cmp): Likewise.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree.h (build_truth_vector_type_for_mode): Declare.
+       * tree.c (build_truth_vector_type_for_mode): New function,
+       split out from...
+       (build_truth_vector_type): ...here.
+       (build_opaque_vector_type): Fix head comment.
+       * tree-vectorizer.h (supportable_narrowing_operation): Remove
+       vec_info parameter.
+       (vect_halve_mask_nunits): Replace vec_info parameter with the
+       mode of the new vector.
+       (vect_double_mask_nunits): Likewise.
+       * tree-vect-loop.c (vect_halve_mask_nunits): Likewise.
+       (vect_double_mask_nunits): Likewise.
+       * tree-vect-loop-manip.c: Include insn-config.h, rtl.h and recog.h.
+       (vect_maybe_permute_loop_masks): Remove vinfo parameter.  Update call
+       to vect_halve_mask_nunits, getting the required mode from the unpack
+       patterns.
+       (vect_set_loop_condition_masked): Update call accordingly.
+       * tree-vect-stmts.c (supportable_narrowing_operation): Remove vec_info
+       parameter and update call to vect_double_mask_nunits.
+       (vectorizable_conversion): Update call accordingly.
+       (simple_integer_narrowing): Likewise.  Remove vec_info parameter.
+       (vectorizable_call): Update call accordingly.
+       (supportable_widening_operation): Update call to
+       vect_halve_mask_nunits.
+       * config/aarch64/aarch64-sve-builtins.cc (register_builtin_types):
+       Use build_truth_vector_type_mode instead of build_truth_vector_type.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * machmode.h (mode_for_int_vector): Delete.
+       (related_int_vector_mode): Declare.
+       * stor-layout.c (mode_for_int_vector): Delete.
+       (related_int_vector_mode): New function.
+       * optabs.c (expand_vec_perm_1): Use related_int_vector_mode
+       instead of mode_for_int_vector.
+       (expand_vec_perm_const): Likewise.
+       * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Likewise.
+       (aarch64_evpc_sve_tbl): Likewise.
+       * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
+       (s390_expand_vcond): Likewise.
+ 2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * target.def (related_mode): New hook.
+       * doc/tm.texi.in (TARGET_VECTORIZE_RELATED_MODE): New hook.
+       * doc/tm.texi: Regenerate.
+       * targhooks.h (default_vectorize_related_mode): Declare.
+       * targhooks.c (default_vectorize_related_mode): New function.
+       * machmode.h (related_vector_mode): Declare.
+       * stor-layout.c (related_vector_mode): New function.
+       * expmed.c (extract_bit_field_1): Use it instead of mode_for_vector.
+       * optabs-query.c (qimode_for_vec_perm): Likewise.
+       * tree-vect-stmts.c (get_group_load_store_type): Likewise.
+       (vectorizable_store, vectorizable_load): Likewise
+ 2019-11-14  Richard Henderson  <richard.henderson@linaro.org>
+       * config/arm/aarch-common-protos.h (arm_md_asm_adjust): Declare.
+       * config/arm/aarch-common.c (arm_md_asm_adjust): New.
+       * config/arm/arm-c.c (arm_cpu_builtins): Define
+       __GCC_ASM_FLAG_OUTPUTS__.
+       * config/arm/arm.c (TARGET_MD_ASM_ADJUST): New.
+       * config/aarch64/aarch64-c.c (aarch64_define_unconditional_macros):
+       Define __GCC_ASM_FLAG_OUTPUTS__.
+       * config/aarch64/aarch64.c (TARGET_MD_ASM_ADJUST): New.
+       * doc/extend.texi (FlagOutputOperands): Add documentation
+       for ARM and AArch64.
+       * config/arm/arm-modes.def (CC_NZ): Rename from CC_NOOV.
+       * config/arm/predicates.md (nz_comparison_operator): Rename
+       from noov_comparison_operator.
+       * config/arm/arm.c (arm_select_cc_mode): Use CC_NZmode name.
+       (arm_gen_dicompare_reg): Likewise.
+       (maybe_get_arm_condition_code): Likewise.
+       (thumb1_final_prescan_insn): Likewise.
+       (arm_emit_coreregs_64bit_shift): Likewise.
+       * config/arm/arm.md (addsi3_compare0): Likewise.
+       (*addsi3_compare0_scratch, subsi3_compare0): Likewise.
+       (*mulsi3_compare0, *mulsi3_compare0_v6): Likewise.
+       (*mulsi3_compare0_scratch, *mulsi3_compare0_scratch_v6): Likewise.
+       (*mulsi3addsi_compare0, *mulsi3addsi_compare0_v6): Likewise.
+       (*mulsi3addsi_compare0_scratch): Likewise.
+       (*mulsi3addsi_compare0_scratch_v6): Likewise.
+       (*andsi3_compare0, *andsi3_compare0_scratch): Likewise.
+       (*zeroextractsi_compare0_scratch): Likewise.
+       (*ne_zeroextractsi, *ne_zeroextractsi_shifted): Likewise.
+       (*ite_ne_zeroextractsi, *ite_ne_zeroextractsi_shifted): Likewise.
+       (andsi_not_shiftsi_si_scc_no_reuse): Likewise.
+       (andsi_not_shiftsi_si_scc): Likewise.
+       (*andsi_notsi_si_compare0, *andsi_notsi_si_compare0_scratch): Likewise.
+       (*iorsi3_compare0, *iorsi3_compare0_scratch): Likewise.
+       (*xorsi3_compare0, *xorsi3_compare0_scratch): Likewise.
+       (*shiftsi3_compare0, *shiftsi3_compare0_scratch): Likewise.
+       (*not_shiftsi_compare0, *not_shiftsi_compare0_scratch): Likewise.
+       (*notsi_compare0, *notsi_compare0_scratch): Likewise.
+       (return_addr_mask, *check_arch2): Likewise.
+       (*arith_shiftsi_compare0, *arith_shiftsi_compare0_scratch): Likewise.
+       (*sub_shiftsi_compare0, *sub_shiftsi_compare0_scratch): Likewise.
+       (compare_scc splitters): Likewise.
+       (movcond_addsi): Likewise.
+       * config/arm/thumb2.md (thumb2_addsi3_compare0): Likewise.
+       (*thumb2_addsi3_compare0_scratch): Likewise.
+       (*thumb2_mulsi_short_compare0): Likewise.
+       (*thumb2_mulsi_short_compare0_scratch): Likewise.
+       (compare peephole2s): Likewise.
+       * config/arm/thumb1.md (thumb1_cbz): Use CC_NZmode and
+       nz_comparison_operator names.
+       (cbranchsi4_insn): Likewise.
+       * config/arm/constraints.md (c): Use cc_register predicate.
+       * config/aarch64/constraints.md (c): New constraint.
+ 2019-11-14  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-fnsummary.c (ipa_call_context::estimate_size_and_time,
+       ipa_merge_fn_summary_after_inlining): Micro optimize.
+ 2019-11-14  Jan Hubicka  <hubicka@ucw.cz>
+       * params.opt (max-inline-insns-single-O2): Set to 70 (instead of 30).
+ 2019-11-14  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-cp.c (ipa_vr_operation_and_type_effects): Move up in file.
+       (ipa_value_range_from_jfunc): New function.
+       * ipa-fnsummary.c (evaluate_conditions_for_known_args): Add
+       known_value_ranges parameter; use it to evalulate conditions.
+       (evaluate_properties_for_edge): Compute known value ranges.
+       (ipa_fn_summary_t::duplicate): Update use of
+       evaluate_conditions_for_known_args.
+       (estimate_ipcp_clone_size_and_time): Likewise.
+       (ipa_merge_fn_summary_after_inlining): Likewise.
+       * ipa-prop.h (ipa_value_range_from_jfunc): Declare.
  
- 2018-06-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 2019-11-14  Martin Liska  <mliska@suse.cz>
  
-       * config/arm/arm-cpus.in (cortex-a76): New entry.
-       (cortex-a76.cortex-a55): Likewise.
-       * config/arm/arm-tables.opt: Regenerate.
-       * config/arm/arm-tune.md: Likewise.
-       * config/arm/driver-arm.c (arm_cpu_table): Add Cortex-A76 entry.
-       * doc/invoke.texi (ARM Options): Document cortex-a76 and
-       cortex-a76.cortex-a55.
+       * ipa-inline.c (want_inline_small_function_p): Use
+       CIF_MAX_INLINE_INSNS_AUTO_LIMIT instead
+       of CIF_MAX_INLINE_INSNS_SINGLE_O2_LIMIT.
  
- 2018-06-27 Tamar Christina  <tamar.christina@arm.com>
+ 2019-11-14  Martin Liska  <mliska@suse.cz>
  
-       PR target/85769
-       * config/aarch64/aarch64.md (*movhf_aarch64): Add dup v0.4h pattern.
+       * ipa-cp.c (devirtualization_time_bonus): Use opt_for_fn
+       of a callee to get value of the param.
+       * ipa-inline.c (inline_insns_auto): Use proper
+       opt_for_fn.
+       * opts.c (maybe_default_option): Do not overwrite param
+       value if optimization level does not match.  Note that
+       params usually have default value set via Init() keyword.
+       * params.opt: Remove -param=max-inline-insns-auto-O2.
+       * cif-code.def (MAX_INLINE_INSNS_AUTO_O2_LIMIT): Remove.
+       * doc/invoke.texi: Remove documentation of
+       max-inline-insns-auto-O2.
  
- 2018-06-27  Siddhesh Poyarekar  <siddhesh@sourceware.org>
+ 2019-11-14  Martin Liska  <mliska@suse.cz>
  
-       * config/aarch64/aarch64.h (CALL_USE_REGISTERS): Fix obsolete
-       comment.
-       (EPILOGUE_USES): Likewise.
- 2018-06-26  Eric Botcazou  <ebotcazou@adacore.com>
-       * tree-inline.c (remap_location): New function extracted from...
-       (copy_edges_for_bb): Add ID parameter.  Remap goto_locus.
-       (copy_phis_for_bb): ...here.  Call remap_location.
-       (copy_cfg_body): Adjust call to copy_edges_for_bb.
- 2018-06-26  Aaron Sawdey  <acsawdey@linux.ibm.com>
-       * config/rs6000/rs6000-string.c (expand_block_clear): Don't use
-       unaligned vsx for 16B memset.
- 2018-06-26  Segher Boessenkool  <segher@kernel.crashing.org>
-       PR target/86285
-       * config/rs6000/rs6000.c (rs6000_init_builtins): Do not set
-       ieee128_float_type_node to long_double_type_node unless
-       TARGET_LONG_DOUBLE_128 is set.
- 2018-06-26  David Malcolm  <dmalcolm@redhat.com>
-       * cfgloop.c (get_loop_location): Convert return type from
-       location_t to dump_user_location_t, replacing INSN_LOCATION lookups
-       by implicit construction from rtx_insn *, and using
-       dump_user_location_t::from_function_decl for the fallback case.
-       * cfgloop.h (get_loop_location): Convert return type from
-       location_t to dump_user_location_t.
-       * cgraphunit.c (walk_polymorphic_call_targets): Update call to
-       dump_printf_loc to pass in a dump_location_t rather than a
-       location_t, via the gimple stmt.
-       * coverage.c (get_coverage_counts): Update calls to
-       dump_printf_loc to pass in dump_location_t rather than a
-       location_t.
-       * doc/optinfo.texi (Dump types): Convert example of
-       dump_printf_loc from taking "locus" to taking "insn".  Update
-       description of the "_loc" calls to cover dump_location_t.
-       * dumpfile.c: Include "backend.h", "gimple.h", "rtl.h", and
-       "selftest.h".
-       (dump_user_location_t::dump_user_location_t): New constructors,
-       from gimple *stmt and rtx_insn *.
-       (dump_user_location_t::from_function_decl): New function.
-       (dump_loc): Make static.
-       (dump_gimple_stmt_loc): Convert param "loc" from location_t to
-       const dump_location_t &.
-       (dump_generic_expr_loc): Delete.
-       (dump_printf_loc): Convert param "loc" from location_t to
-       const dump_location_t &.
-       (selftest::test_impl_location): New function.
-       (selftest::dumpfile_c_tests): New function.
-       * dumpfile.h: Include "profile-count.h".
-       (class dump_user_location_t): New class.
-       (struct dump_impl_location_t): New struct.
-       (class dump_location_t): New class.
-       (dump_printf_loc): Convert 2nd param from source_location to
-       const dump_location_t &.
-       (dump_generic_expr_loc): Delete.
-       (dump_gimple_stmt_loc): Convert 2nd param from source_location to
-       const dump_location_t &.
-       * gimple-fold.c (fold_gimple_assign): Update call to
-       dump_printf_loc to pass in a dump_location_t rather than a
-       location_t, via the gimple stmt.
-       (gimple_fold_call): Likewise.
-       * gimple-loop-interchange.cc
-       (loop_cand::analyze_iloop_reduction_var): Update for change to
-       check_reduction_path.
-       (tree_loop_interchange::interchange): Update for change to
-       find_loop_location.
-       * graphite-isl-ast-to-gimple.c (scop_to_isl_ast): Update for
-       change in return-type of find_loop_location.
-       (graphite_regenerate_ast_isl): Likewise.
-       * graphite-optimize-isl.c (optimize_isl): Likewise.
-       * graphite.c (graphite_transform_loops): Likewise.
-       * ipa-devirt.c (ipa_devirt): Update call to dump_printf_loc to
-       pass in a dump_location_t rather than a location_t, via the
-       gimple stmt.
-       * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
-       * ipa.c (walk_polymorphic_call_targets): Likewise.
-       * loop-unroll.c (report_unroll): Convert "locus" param from
-       location_t to dump_location_t.
-       (decide_unrolling): Update for change to get_loop_location's
-       return type.
-       * omp-grid.c (struct grid_prop): Convert field "target_loc" from
-       location_t to dump_user_location_t.
-       (grid_find_single_omp_among_assignments_1): Updates calls to
-       dump_printf_loc to pass in a dump_location_t rather than a
-       location_t, via the gimple stmt.
-       (grid_parallel_clauses_gridifiable): Convert "tloc" from
-       location_t to dump_location_t.  Updates calls to dump_printf_loc
-       to pass in a dump_location_t rather than a location_t, via the
-       gimple stmt.
-       (grid_inner_loop_gridifiable_p): Likewise.
-       (grid_dist_follows_simple_pattern): Likewise.
-       (grid_gfor_follows_tiling_pattern): Likewise.
-       (grid_target_follows_gridifiable_pattern): Likewise.
-       (grid_attempt_target_gridification): Convert initialization
-       of local "grid" from memset to zero-initialization; FIXME: does
-       this require C++11?  Update call to dump_printf_loc to pass in a
-       optinfo_location rather than a location_t, via the gimple stmt.
-       * profile.c (read_profile_edge_counts): Updates call to
-       dump_printf_loc to pass in a dump_location_t rather than a
-       location_t
-       (compute_branch_probabilities): Likewise.
-       * selftest-run-tests.c (selftest::run_tests): Call
-       dumpfile_c_tests.
-       * selftest.h (dumpfile_c_tests): New decl.
-       * tree-loop-distribution.c (pass_loop_distribution::execute):
-       Update for change in return type of find_loop_location.
-       * tree-parloops.c (parallelize_loops): Likewise.
-       * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Convert
-       "locus" from location_t to dump_user_location_t.
-       (canonicalize_loop_induction_variables): Likewise.
-       * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_loop): Update
-       for change in return type of find_loop_location.
-       * tree-ssa-loop-niter.c (number_of_iterations_exit): Update call
-       to dump_printf_loc to pass in a dump_location_t rather than a
-       location_t, via the stmt.
-       * tree-ssa-sccvn.c (eliminate_dom_walker::before_dom_children):
-       Likewise.
-       * tree-vect-loop-manip.c (find_loop_location): Convert return
-       type from source_location to dump_user_location_t.
-       (vect_do_peeling): Update for above change.
-       (vect_loop_versioning): Update for change in type of
-       vect_location.
-       * tree-vect-loop.c (check_reduction_path): Convert "loc" param
-       from location_t to dump_user_location_t.
-       (vect_estimate_min_profitable_iters): Update for change in type
-       of vect_location.
-       * tree-vect-slp.c (vect_print_slp_tree): Convert param "loc" from
-       location_t to dump_location_t.
-       (vect_slp_bb): Update for change in type of vect_location.
-       * tree-vectorizer.c (vect_location): Convert from source_location
-       to dump_user_location_t.
-       (try_vectorize_loop_1): Update for change in vect_location's type.
-       (vectorize_loops): Likewise.
-       (increase_alignment): Likewise.
-       * tree-vectorizer.h (vect_location): Convert from source_location
-       to dump_user_location_t.
-       (find_loop_location): Convert return type from source_location to
-       dump_user_location_t.
-       (check_reduction_path): Convert 1st param from location_t to
-       dump_user_location_t.
-       * value-prof.c (check_counter): Update call to dump_printf_loc to
-       pass in a dump_user_location_t rather than a location_t; update
-       call to error_at for change in type of "locus".
-       (check_ic_target): Update call to dump_printf_loc to
-       pass in a dump_user_location_t rather than a location_t, via the
-       call_stmt.
- 2018-06-26  Robin Dapp  <rdapp@linux.vnet.ibm.com>
-         * config/s390/s390.h (enum processor_flags): Do not use
-         default tune parameter when -march was specified.
- 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
-       PR target/86314
-       * config/i386/i386.md (setcc + movzbl to xor + setcc peephole2s):
-       Check reg_overlap_mentioned_p in addition to reg_set_p with the same
-       operands.
+       * tree-switch-conversion.c (switch_conversion::switch_conversion):
+       Do not initialize m_other_count.
+       (switch_conversion::collect): Do not count m_default_count and
+       m_other_count as we use frequencies for edges.
+       * tree-switch-conversion.h: Remove m_default_count and m_other_count.
  
- 2018-06-26  Richard Biener  <rguenther@suse.de>
+ 2019-11-14  Martin Liska  <mliska@suse.cz>
  
-       PR tree-optimization/86287
-       PR bootstrap/86316
-       * tree-vect-loop.c (vect_transform_loop_stmt): Fix read-after-free.
-       (vect_analyze_loop): Initialize n_stmts.
+       PR other/92329
+       * doc/invoke.texi: Document -fallocation-dce.
  
- 2018-06-26  Richard Biener  <rguenther@suse.de>
+ 2019-11-14  Martin Liska  <mliska@suse.cz>
  
-       PR middle-end/86271
-       * fold-const.c (fold_convertible_p): Pointer extension
-       isn't valid.
+       PR target/92389
+       * config/i386/i386.h: Add PTA_AVX512VPOPCNTDQ to
+       PTA_ICELAKE_CLIENT which is later interited by
+       PTA_ICELAKE_SERVER and PTA_TIGERLAKE.
  
- 2018-06-26  Alexandre Oliva <aoliva@redhat.com>
+ 2019-11-14  Martin Liska  <mliska@suse.cz>
  
-       PR debug/86064
-       * dwarf2out.c (loc_list_has_views): Adjust comments.
-       (dw_loc_list): Split single cross-partition range with
-       nonzero locview.
+       * ipa-icf.c (sem_item_optimizer::execute): Save
+       loaded_symbols.
+       (sem_item_optimizer::parse_nonsingleton_classes):
+       Return number of loaded symbols.
+       (sem_item_optimizer::merge_classes): Print
+       statistics about totally needed symbols.
+       * ipa-icf.h (parse_nonsingleton_classes): Change return
+       type.
+       (merge_classes): Add one argument.
+ 2019-11-14  Martin Liska  <mliska@suse.cz>
+       * ipa-icf-gimple.c (func_checker::hash_operand): Improve
+       func_checker::hash_operand by handling of FIELD_DECLs.
+ 2019-11-14  Martin Liska  <mliska@suse.cz>
+       * ipa-icf-gimple.h (func_checker::func_checker): Add
+       default constructor.
+       * ipa-icf.c (sem_function::init): Make operand_equal_p
+       and hash_operand public.
+       (sem_item::add_expr): Remove.
+       (sem_item::add_type): Remove.
+       (sem_function::hash_stmt): Use m_checker for hashing
+       of GIMPLE statements.
+       (sem_function::parse): Init with checker.
+       (sem_variable::parse): Pass NULL as checker.
+       (sem_item_optimizer::parse_funcs_and_vars):
+       Pass checker to ::parse function.
+       (sem_item_optimizer::parse_nonsingleton_classes): Likewise.
+       (sem_variable::parse): New function.
+       (sem_variable::get_hash): Only return computed hash value.
+       (sem_variable::init): Initialize hash of a variable.
+       * ipa-icf.h: Remove add_expr, add_type and add func_checker
+       to couple of functions as a new argument.
+ 2019-11-14  Martin Liska  <mliska@suse.cz>
+       * ipa-icf-gimple.c (func_checker::compare_gimple_call): Update
+       bail out reason.
+       (func_checker::compare_gimple_assign): Likewise.
+ 2019-11-14  Jakub Jelinek  <jakub@redhat.com>
+       * config/i386/i386-options.c (ix86_omp_device_kind_arch_isa): Don't
+       change sse4.2 to sse4_2 and sse4.1 to sse4.1.
+       * config/i386/t-omp-device (omp-device-properties-i386): Likewise.
+       * omp-general.c (omp_context_name_list_prop): New function.
+       (omp_context_selector_matches): Use it.  Return 0 if it returns
+       NULL.
+       (omp_context_selector_props_compare): Allow equivalency of an
+       identifier and a string literal containing no embedded zeros.
+ 2019-11-14  Aldy Hernandez  <aldyh@redhat.com>
+       * range-op.cc (RANGE3): Remove.
+       (range_tests): Remove all selftest that check for multi-ranges.
+       Put tests in namespace selftest.
+       * selftest.h: Move range_tests into namespace selftest.
+       * value-range.h (class value_range): Unfriend range_tests.
+ 2019-11-14  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.c (range_fold_binary_symbolics_p): Adapt for
+       normalize_symbolics and normalize_addresses working in place.
+       (range_fold_unary_symbolics_p): Same.
+       (range_fold_unary_symbolics_p): Same.
+       * value-range.cc (num_pairs): Same.
+       (lower_bound): Same.
+       (upper_bound): Same.
+       (contains_p): Same.
+       (normalize_addresses): Same.
+       (normalize_symbolics): Same.
+       * value-range.h (normalize_symbolics): Same.
+       (normalize_addresses): Same.
+ 2019-11-14  Feng Xue  <fxue@os.amperecomputing.com>
+       PR ipa/91682
+       * ipa-prop.h (jump_func_type): New value IPA_JF_LOAD_AGG.
+       (ipa_load_agg_data, ipa_agg_value, ipa_agg_value_set): New structs.
+       (ipa_agg_jf_item): Add new field jftype and type, redefine field value.
+       (ipa_agg_jump_function): Remove member function equal_to.
+       (ipa_agg_jump_function_p): Remove typedef.
+       (ipa_copy_agg_values, ipa_release_agg_values): New functions.
+       * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Dump
+       information for aggregate jump function.
+       (get_ssa_def_if_simple_copy): Add new parameter rhs_stmt to
+       record last definition statement.
+       (load_from_unmodified_param_or_agg): New function.
+       (ipa_known_agg_contents_list): Add new field type and value, remove
+       field constant.
+       (build_agg_jump_func_from_list): Rename parameter const_count to
+       value_count, build aggregate jump function from ipa_load_agg_data.
+       (analyze_agg_content_value): New function.
+       (extract_mem_content): Analyze memory store assignment to prepare
+       information for aggregate jump function generation.
+       (determine_known_aggregate_parts): Add new parameter fbi, remove
+       parameter aa_walk_budeget_p.
+       (update_jump_functions_after_inlining): Update aggregate jump function.
+       (ipa_find_agg_cst_for_param): Change type of parameter agg.
+       (try_make_edge_direct_simple_call): Add new parameter new_root.
+       (try_make_edge_direct_virtual_call): Add new parameter new_root and
+       new_root_info.
+       (update_indirect_edges_after_inlining): Pass new argument to
+       try_make_edge_direct_simple_call and try_make_edge_direct_virtual_call.
+       (ipa_write_jump_function): Write aggregate jump function to file.
+       (ipa_read_jump_function): Read aggregate jump function from file.
+       (ipa_agg_value::equal_to): Migrate from ipa_agg_jf_item::equal_to.
+       * ipa-cp.c (ipa_get_jf_arith_result): New function.
+       (ipa_agg_value_from_node): Likewise.
+       (ipa_agg_value_set_from_jfunc): Likewise.
+       (propagate_vals_across_arith_jfunc): Likewise.
+       (propagate_aggregate_lattice): Likewise.
+       (ipa_get_jf_pass_through_result): Call ipa_get_jf_arith_result.
+       (propagate_vals_across_pass_through): Call
+       propagate_vals_across_arith_jfunc.
+       (get_clone_agg_value): Move forward.
+       (propagate_aggs_across_jump_function): Handle value propagation for
+       aggregate jump function.
+       (agg_jmp_p_vec_for_t_vec): Remove.
+       (context_independent_aggregate_values): Replace vec<ipa_agg_jf_item>
+       with vec<ipa_agg_value>.
+       (copy_plats_to_inter, intersect_with_plats): Likewise.
+       (agg_replacements_to_vector, intersect_with_agg_replacements): Likewise.
+       (intersect_aggregate_with_edge): Likewise.
+       (find_aggregate_values_for_callers_subset): Likewise.
+       (cgraph_edge_brings_all_agg_vals_for_node): Likewise.
+       (estimate_local_effects): Replace vec<ipa_agg_jump_function> and
+       vec<ipa_agg_jump_function_p> with vec<ipa_agg_value_set>.
+       (gather_context_independent_values): Likewise.
+       (perform_estimation_of_a_value, decide_whether_version_node): Likewise.
+       * ipa-fnsummary.c (evaluate_conditions_for_known_args): Replace
+       vec<ipa_agg_jump_function_p> with vec<ipa_agg_value_set>.
+       (evaluate_properties_for_edge): Likewise.
+       (estimate_edge_devirt_benefit): Likewise.
+       (estimate_edge_size_and_time):  Likewise.
+       (estimate_calls_size_and_time): Likewise.
+       (ipa_call_context::ipa_call_context): Likewise.
+       (estimate_ipcp_clone_size_and_time):  Likewise.
+       * ipa-fnsummary.h (ipa_call_context): Replace
+       vec<ipa_agg_jump_function_p> with vec<ipa_agg_value_set>.
+       * ipa-inline-analysis.c (do_estimate_edge_time): Replace
+       vec<ipa_agg_jump_function_p> with vec<ipa_agg_value_set>.
+       (do_estimate_edge_size): Likewise.
+       (do_estimate_edge_hints): Likewise.
  
- 2018-06-25  Jeff Law  <law@redhat.com>
+ 2019-11-13  Jan Hubicka  <hubicka@ucw.cz>
  
-       * common/config/v850/v850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn
-       on -mbig-switch by default.
+       * ipa-cp.c (propagate_vr_across_jump_function): Propagate also across
+       binary operations.
  
-       * config/v850/predicates.md (const_float_1_operand): Fix match_code
-       test.
-       (const_float_0_operand): Remove unused predicate.
-       * config/v850/v850.md (define_constants): Remove UNSPEC_LOOP.
-       (define_c_enum unspec): Add LOOP, RCP and RSQRT constants.
-       (recipsf2): New expander.  Original pattern now called
-       (recipsf2_insn).
-       (recipdf2, recipdf2_insn): Similarly.
-       (rsqrtsf2, rsqrtsf2_insn): Similarly
-       (rsqrtdf2, rsqrtdf2_insn): Similarly
+ 2019-11-13  Jan Hubicka  <hubicka@ucw.cz>
  
- 2018-06-26  Gerald Pfeifer  <gerald@pfeifer.com>
+       * ipa-profile.c (check_argument_count): Check properly that e_info
+       is non-NULL; do not check descriptors.
  
-       * ginclude/stddef.h: Remove an obsolete comment on FreeBSD 5.
-       Simplify logic for FreeBSD (twice).
+ 2019-11-13  Jan Hubicka  <hubicka@ucw.cz>
  
- 2018-06-25  Martin Sebor  <msebor@redhat.com>
+       * ipa-inline-analysis.c (do_estimate_edge_time): Relax
+       check for ipa profiles.
  
-       PR tree-optimization/86204
-       * tree-ssa-strlen.c (handle_builtin_strlen): Avoid storing
-       a strnlen result if it's less than the length of the string.
+ 2019-11-13  Jan Hubicka  <hubicka@ucw.cz>
  
- 2018-06-25  Martin Sebor  <msebor@redhat.com>
+       PR c++/92421
+       * ipa-prop.c (update_indirect_edges_after_inlining):
+       Mark parameter as used.
+       * ipa-inline.c (recursive_inlining): Reset node cache
+       after inlining.
+       (inline_small_functions): Remove checking ifdef.
+       * ipa-inline-analysis.c (do_estimate_edge_time): Verify
+       cache consistency.
  
-       PR tree-optimization/85700
-       * gimple-fold.c (gimple_fold_builtin_strncat): Adjust comment.
-       * tree-ssa-strlen.c (is_strlen_related_p): Handle integer subtraction.
-       (maybe_diag_stxncpy_trunc): Distinguish strncat from strncpy.
+ 2019-11-13  Jan Hubicka  <hubicka@ucw.cz>
  
- 2018-06-25  Martin Sebor  <msebor@redhat.com>
+       PR ipa/92498
+       * ipa-profile.c (check_argument_count): Do not ICE when descriptors
+       is NULL.
+       (ipa_profile): Fix reversed test.
+ 2019-11-13  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-cp.c (ignore_edge_p): Do not check caller flags.
+       (propagate_constants_topo): Fix typo.
+ 2019-11-13  Aldy Hernandez  <aldyh@redhat.com>
+       * Makefile.in (OBJS): Add value-range.o.
+       (GTFILES): Add value-range.h.
+       * gengtype.c (open_base_files): Add value-range.h to list of
+       header files.
+       * tree-vrp.c: Move the following value_range related functions:
+       ranges_from_anti_range, value_range, check, equal_p, symbolic_p,
+       constant_p, set_undefined, set_varying, may_contain_p,
+       singleton_p, type, dump, dump_value_range, debug, vrp_val_max,
+       vrp_val_min, vrp_val_is_min, vrp_val_is_max, set, set_nonzero,
+       set_zero, vrp_operand_equal_p, range_has_numeric_bounds_p,
+       value_inside_range, ranges_from_anti_range, union_ranges,
+       intersect_ranges, intersect_helper, union_helper, union_,
+       normalize_addresses, normalize_symbolics, num_pairs, lower_bound,
+       upper_bound, contains_p, invert, intersect...
+       * value-range.cc: ...to here.
+       * tree-vrp.h: Move class value_range, enum_value_range_kind, and
+       associated inline methods from here...
+       * value-range.h: ...to here.
+ 2019-11-13  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+       * config/mips/mips.md (rotr<mode>3): Sanitize the constant argument
+       instead of asserting its value.
+ (2019-11-13  Aldy Hernandez  <aldyh@redhat.com>
+       * gimple-fold.c (size_must_be_zero_p): Rewrite use of value_range
+       constructors and set methods so value_range_kind is the last
+       argument and defaults to VR_RANGE.
+       * gimple-ssa-evrp-analyze.c (record_ranges_from_stmt): Same.
+       * ipa-cp.c (propagate_vr_across_jump_function): Same.
+       * ipa-prop.c (ipa_get_value_range): Same.
+       (ipa_compute_jump_functions_for_edge): Same.
+       * range-op.cc (value_range_from_overflowed_bounds): Same.
+       (operator_cast::op1_range): Same.
+       (range_tests): Same.
+       * range.cc (range_nonzero): Same.
+       * tree-ssanames.c (get_range_info): Same.
+       * tree-vrp.c (value_range_equiv::set): Same.
+       (value_range::value_range): Same.
+       (value_range_equiv::value_range_equiv): Same.
+       (value_range_equiv::update): Same.
+       (value_range_equiv::deep_copy): Same.
+       (value_range_equiv::move): Same.
+       (value_range_equiv::set_undefined): Same.
+       (value_range::set): Same.
+       (value_range::set_nonzero): Same.
+       (ranges_from_anti_range): Same.
+       (extract_range_from_plus_minus_expr): Same.
+       (value_range::intersect_helper): Same.
+       (value_range_equiv::intersect): Same.
+       (value_range::union_helper): Same.
+       (value_range_equiv::union_): Same.
+       (value_range::normalize_symbolics): Same.
+       (value_range::invert): Same.
+       (determine_value_range_1): Same.
+       * tree-vrp.h (class value_range): Same.
+       (class value_range_equiv): Same.
+       * vr-values.c (set_value_range_to_nonnegative): Same.
+       (set_value_range_to_truthvalue): Same.
+       (vr_values::update_value_range): Same.
+       (vr_values::extract_range_for_var_from_comparison_expr): Same.
+       (vr_values::extract_range_from_binary_expr): Same.
+       (vr_values::extract_range_from_comparison): Same.
+       (vr_values::extract_range_basic): Same.
+       (vr_values::adjust_range_with_scev): Same.
+       (vr_values::vrp_evaluate_conditional_warnv_with_ops): Same.
+       (vr_values::extract_range_from_phi_node): Same.
+ 2019-11-13  Ulrich Drepper  <drepper@redhat.com>
+       * tree-dump.c (dequeue_and_dump): Print first tree operand
+       for VIEW_CONVERT_EXPR.
+ 2019-11-13  Joseph Myers  <joseph@codesourcery.com>
+       * ginclude/float.c [__STDC_VERSION__ > 201710L] (FLT_NORM_MAX,
+       DBL_NORM_MAX, LDBL_NORM_MAX): Define.
+       * real.c (get_max_float): Add norm_max argument.
+       * real.h (get_max_float): Update prototype.
+       * builtins.c (fold_builtin_interclass_mathfn): Update calls to
+       get_max_float.
+ 2019-11-13  Martin Liska  <mliska@suse.cz>
+       * dbgcnt.c (test_sorted_dbg_counters): New.
+       (dbgcnt_c_tests): Likewise.
+       * selftest-run-tests.c (selftest::run_tests): Likewise.
+       * selftest.h (dbgcnt_c_tests): Likewise.
+ 2019-11-13  Jan Hubicka  <hubicka@ucw.cz>
+           Martin Jambor  <mjambor@suse.cz>
  
-       * doc/extend.texi (Zero-length arrays): Update and clarify.
+       PR ipa/92454
+       * ipa-cp.c (spread_undeadness): Check that IPA_NODE_REF exists.
+       (identify_dead_nodes): Likewise.
  
- 2018-06-25  Michael Meissner  <meissner@linux.ibm.com>
+ 2019-11-13  Martin Liska  <mliska@suse.cz>
  
-       * config.gcc (powerpc64le*): Revert January 16th, 2018 patch that
-       added IEEE/IBM long double multilib support on PowerPC little
-       endian Linux systems.
-       * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Likewise.
-       (MULTILIB_DEFAULTS): Likewise.
-       * config/rs6000/rs6000.c (rs6000_option_override_internal):
-       Likewise.
-       * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise.
-       * config/rs6000/t-ldouble-linux64le-ibm: Delete, no longer used.
-       * config/rs6000/t-ldouble-linux64le-ieee: Delete, no longer used.
- 2018-06-25  Alexander Monakov  <amonakov@ispras.ru>
-       PR middle-end/86311
-       * sort.cc (REORDER_23): Avoid memcpy with same destination and source.
-       (REORDER_45): Likewise.
- 2018-06-25  Jeff Law  <law@redhat.com>
-       * config/v850/v850.md (divmodhi4): Make sure to sign extend the
-       dividend to 32 bits.  Adjust length.
-       (udivmodhi4): Cleanup output template.  Fix length.
- 2018-06-25  Carl Love  <cel@us.ibm.com>
-       * config/rs6000/vsx.md: Change word selector to prefered location.
- 2018-06-25  Richard Biener  <rguenther@suse.de>
-       PR tree-optimization/86304
-       * tree-vectorizer.c (vectorize_loops): Walk over new possibly
-       epilogue-if-converted loops as well.
- 2018-06-25  Jan Hubicka  <hubicka@ucw.cz>
-       * lto-section-out.c (lto_begin_section): Do not print section
-       name for noaddr and unnumbered dumps.
- 2018-06-25  Richard Biener  <rguenther@suse.de>
-       * tree-vectorizer.h (struct vec_info_shared): New structure
-       with parts split out from struct vec_info and loop_nest from
-       struct _loop_vec_info.
-       (struct vec_info): Adjust accordingly.
-       (struct _loop_vec_info): Likewise.
-       (LOOP_VINFO_LOOP_NEST): Adjust.
-       (LOOP_VINFO_DATAREFS): Likewise.
-       (LOOP_VINFO_DDRS): Likewise.
-       (struct _bb_vec_info): Likewise.
-       (BB_VINFO_DATAREFS): Likewise.
-       (BB_VINFO_DDRS): Likewise.
-       (struct _stmt_vec_info): Add dr_aux member.
-       (DR_VECT_AUX): Adjust to refer to member of DR_STMTs vinfo.
-       (DR_MISALIGNMENT_UNINITIALIZED): New.
-       (set_dr_misalignment): Adjust.
-       (dr_misalignment): Assert misalign isn't DR_MISALIGNMENT_UNINITIALIZED.
-       (vect_analyze_loop): Adjust prototype.
-       (vect_analyze_loop_form): Likewise.
-       * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
-       Compute dependences lazily.
-       (vect_record_base_alignments): Use shared datarefs/ddrs.
-       (vect_verify_datarefs_alignment): Likewise.
-       (vect_analyze_data_refs_alignment): Likewise.
-       (vect_analyze_data_ref_accesses): Likewise.
-       (vect_analyze_data_refs): Likewise.
-       * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Add
-       constructor parameter for shared part.
-       (vect_analyze_loop_form): Pass in shared part and adjust.
-       (vect_analyze_loop_2): Pass in storage for the number of
-       stmts.  Move loop nest finding to the caller.  Compute
-       datarefs lazily.
-       (vect_analyze_loop): Pass in shared part.
-       (vect_transform_loop): Verify shared datarefs are unchanged.
-       * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Add
-       constructor parameter for shared part.
-       (vect_slp_analyze_bb_1): Pass in shared part and adjust.
-       (vect_slp_bb): Verify shared datarefs are unchanged before
-       transform.
-       * tree-vect-stmts.c (ensure_base_align): Adjust for DR_AUX
-       change.
-       (new_stmt_vec_info): Initialize DR_AUX misalignment to
-       DR_MISALIGNMENT_UNINITIALIZED.
-       * tree-vectorizer.c (vec_info::vec_info): Add constructor
-       parameter for shared part.
-       (vec_info::~vec_info): Adjust.
-       (vec_info_shared::vec_info_shared): New.
-       (vec_info_shared::~vec_info_shared): Likewise.
-       (vec_info_shared::save_datarefs): Likewise.
-       (vec_info_shared::check_datarefs): Likewise.
-       (try_vectorize_loop_1): Construct shared part live for analyses
-       of a single loop for multiple vector sizes.
-       * tree-parloops.c (gather_scalar_reductions): Adjust.
+       * ipa-icf.c (sem_function::equals_private): Do not overuse
+       push/pop_cfun functions.
  
- 2018-06-25  Richard Biener  <rguenther@suse.de>
+ 2019-11-13  Martin Liska  <mliska@suse.cz>
  
-       * tree-vect-data-refs.c (vect_find_stmt_data_reference): Modify
-       DR for SIMD lane accesses here and mark DR with (void *)-1 aux.
-       (vect_analyze_data_refs): Remove similar code from here and
-       simplify accordingly.
+       * common.opt: Document change of -fdbg-cnt option.
+       * dbgcnt.c (DEBUG_COUNTER): Remove.
+       (dbg_cnt_is_enabled): Remove.
+       (dbg_cnt): Work with new intervals.
+       (dbg_cnt_set_limit_by_index): Set to new
+       list of intervals.
+       (dbg_cnt_set_limit_by_name): Likewise.
+       (dbg_cnt_process_single_pair): Process new format.
+       (dbg_cnt_process_opt): Likewise.
+       (dbg_cnt_list_all_counters): Likewise.
+       * doc/invoke.texi: Document change of -fdbg-cnt option.
+       (cmp_tuples): New.
  
- 2018-06-25  Richard Biener  <rguenther@suse.de>
+ 2019-11-13  Jan Hubicka  <hubicka@ucw.cz>
  
-       * tree-vect-data-refs.c (vect_check_gather_scatter): Fail
-       for reverse storage order accesses rather than asserting
-       they cannot happen here.
+       * ipa-inline.c (ipa_inline): Check that function is defined before
+       flattening.
  
- 2018-06-25  Tom de Vries  <tdevries@suse.de>
+ 2019-11-13  Andrew Stubbs  <ams@codesourcery.com>
+           Julian Brown  <julian@codesourcery.com>
  
-       PR debug/86257
-       * config/i386/i386.md (define_insn "*tls_global_dynamic_64_<mode>"):
-       Use data16 instead of .byte for insn prefix.
+       * config/gcn/gcn.c (gcn_goacc_validate_dims): Ensure
+       flag_worker_partitioning is not set.
+       (TARGET_GOACC_WORKER_PARTITIONING): Remove target hook definition.
+       * config/gcn/gcn.opt (macc-experimental-workers): Default to off.
  
- 2018-06-25  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 2019-11-13  Andrew Stubbs  <ams@codesourcery.com>
  
-       PR C++/86082
-       * parser.c (make_char_string_pack): Pass this literal chars
-       through cpp_interpret_string.
-       (cp_parser_userdef_numeric_literal): Check the result of
-       make_char_string_pack.
+       * config/gcn/gcn-run.c (heap_region): New global variable.
+       (struct hsa_runtime_fn_info): Add hsa_memory_assign_agent_fn.
+       (init_hsa_runtime_functions): Initialize hsa_memory_assign_agent.
+       (get_kernarg_region): Move contents to ....
+       (get_memory_region): .... here.
+       (get_heap_region): New function.
+       (init_device): Initialize the heap_region.
+       (device_malloc): Add region parameter.
+       (struct kernargs): Move heap ....
+       (heap): ... to global scope.
+       (main): Allocate heap separate to kernargs.
  
- 2018-06-24  Maya Rashish  <coypu@sdf.org>
+ 2019-11-13  Jan Hubicka  <hubicka@ucw.cz>
  
-       * ginclude/stddef.h: Simplify conditions around avoiding
-       re-definition of __size_t.
+       * ipa-prop.c (ipa_print_node_jump_functions,
+       ipa_print_node_params): Print info about missing summaries.
  
- 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
+ 2019-11-13  Richard Sandiford  <richard.sandiford@arm.com>
  
-       * lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable
-       unless it is forced or nonlocal; assert that we stream no IMPORTED_DECL.
+       * tree-vect-loop.c (vect_estimate_min_profitable_iters): Include
+       the cost of generating loop masks.
  
- 2018-06-22  Maya Rashish  <coypu@sdf.org>
+ 2019-11-13  Richard Sandiford  <richard.sandiford@arm.com>
  
-       * doc/invoke.texi (mno-fancy-math-387): Update for changes
-       made to OpenBSD and NetBSD through the years.
+       * tree-vectorizer.h (vect_apply_runtime_profitability_check_p):
+       New function.
+       * tree-vect-loop-manip.c (vect_loop_versioning): Use it.
+       * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
+       (vect_transform_loop): Likewise.
+       (vect_analyze_loop_costing): Don't take the cost of versioning
+       into account for the static profitability threshold if it turns
+       out that no versioning is needed.
  
- 2018-06-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 2019-11-13  Jan Hubicka  <hubicka@ucw.cz>
  
-       * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
-       behavior of vec_pack (vector double, vector double) to match
-       behavior of vec_float2 (vector double, vector double).
+       * ipa.c (cgraph_build_static_cdtor): Pass optimization_default_node
+       and target_option_default_node to get -fprofile-generate ctors working
+       right with LTO.
  
- 2018-06-22  Olivier Hainque  <hainque@adacore.com>
+ 2019-11-13  Richard Sandiford  <richard.sandiford@arm.com>
  
-       * gimplify.c (gimplify_function_tree): Prevent creation
-       of a trampoline for the address of the current function
-       passed to entry/exit instrumentation hooks.
+       * tree-vectorizer.h (vect_nop_conversion_p): Declare.
+       * tree-vect-stmts.c (vect_nop_conversion_p): New function.
+       (vectorizable_assignment): Don't add a cost for nop conversions.
+       * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
+       Likewise.
+       * tree-vect-slp.c (vect_bb_slp_scalar_cost): Likewise.
  
- 2018-06-22  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 2019-11-13  Richard Sandiford  <richard.sandiford@arm.com>
  
-       PR target/86222
-       * config/rs6000/rs6000-string.c (expand_strn_compare): Handle -m32
-       correctly.
+       * tree-vect-stmts.c (vect_model_promotion_demotion_cost): Take the
+       number of ncopies as an additional argument.
+       (vectorizable_conversion): Update call accordingly.  Use "modifier"
+       to check whether a conversion is between vectors with the same
+       numbers of units.
  
- 2018-06-22  Martin Liska  <mliska@suse.cz>
+ 2019-11-13  Richard Sandiford  <richard.sandiford@arm.com>
  
-         PR tree-optimization/86263
-       * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
-         Bail out if is_enabled is false.
-       * tree-switch-conversion.h (jump_table_cluster::is_enabled):
-         New declaration.
-       (jump_table_cluster::is_enabled): New function.
+       * config/aarch64/aarch64-sve-builtins-functions.h
+       (unary_count::expand): Use aarch64_sve_int_mode instead of
+       mode_for_int_vector.
  
- 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
+ 2019-11-13  Martin Liska  <mliska@suse.cz>
  
-       * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
-       BINFO_BASE_ACCESSES and BINFO_VPTR_FIELD.
-       * tree-streamer-in.c (streamer_read_tree_bitfields): Likewise.
-       (lto_input_ts_binfo_tree_pointers): Likewise.
-       * tree-streamer-out.c (streamer_write_tree_bitfields,
-       write_ts_binfo_tree_pointers): Likewise.
-       * tree.c (free_lang_data_in_binfo): Clear BINFO_VPTR_FIELD.
+       * opts.c: Update comment about OPT_LEVELS_2_PLUS_SPEED_ONLY.
  
- 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
+ 2019-11-13  Martin Liska  <mliska@suse.cz>
  
-       * tree.c (free_lang_data_in_type): Free all TYPE_VFIELDs.
+       * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers):
+       Remove call to finalize_options_struct.
  
- 2018-06-22  Martin Liska  <mliska@suse.cz>
+ 2019-11-13  Georg-Johann Lay  <avr@gjlay.de>
  
-       * symbol-summary.h (get): Make it pure and inline move
-         functionality from ::get function.
-         (get): Remove and inline into ::get and ::get_create.
-         (get_create): Move code from ::get function.
+       PR target/92055
+       * config/avr/t-avr (avr-mcus): Do not depend on
+       $(srcdir)/config/avr/t-multilib.
  
- 2018-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 2019-11-13  Richard Biener  <rguenther@suse.de>
  
-       PR target/85994
-       * config/i386/sol2.h (CPP_SPEC): Don't pass -P for
-       -x assembler-with-cpp.
+       PR tree-optimization/92473
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Perform
+       direct optab reduction in the correct type.
  
- 2018-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 2019-11-12  Segher Boessenkool  <segher@kernel.crashing.org>
  
-       * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define
-       _FILE_OFFSET_BITS=64 for C++.
+       * config/rs6000/rs6000.md (rs6000_set_fpscr_drn): Use ULL on big
+       hexadecimal literal.
  
- 2018-06-21  Michael Meissner  <meissner@linux.ibm.com>
+ 2019-11-12  Segher Boessenkool  <segher@kernel.crashing.org>
  
-       * config/rs6000/rs6000.md (extendtfif2): Add missing 128-bit
-       conversion insn that shows up when pr85657-3.c is compiled using
-       IEEE 128-bit long double.
-       (neg<mode>2_internal): Use the correct mode to check whether the
-       mode is IBM extended.
-       * config/rs6000/rs6000.c (init_float128_ieee): Prevent complex
-       multiply and divide external functions from being created more
-       than once.
+       * config/rs6000/vsx.md (xscmpexpdp_<code> for CMP_TEST): Handle
+       UNORDERED if !HONOR_NANS (DFmode).
+       (xscmpexpqp_<code>_<mode> for CMP_TEST and IEEE128): Handle UNORDERED
+       if !HONOR_NANS (<MODE>mode).
  
- 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 2019-11-12  Jan Hubicka  <hubicka@ucw.cz>
  
-       * cfgrtl.c (fixup_reorder_chain): Do not emit NOPs in DECL_IGNORED_P
-       functions.
-       (rtl_merge_blocks): Likewise.  Do not emit a NOP if the location of
-       the edge can be forwarded.
-       (cfg_layout_merge_blocks): Likewise.
+       * ipa-cp.c (ignore_edge_p): Also look for optimize flag.
+       (ipcp_verify_propagated_values): Likewise.
+       (propagate_constants_across_call): Likewise.
+       (propagate_constants_topo): Likewise.
+       (ipcp_propagate_stage): Likewise.
  
- 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 2019-11-12  Jan Hubicka  <hubicka@ucw.cz>
  
-       * except.c (finish_eh_generation): Commit edge insertions only after
-       the EH edges have been redirected from post-landing to landing pads.
+       PR ipa/92471
+       * ipa-profile.c (check_argument_count): Break out from ...;
+       watch for missing summaries.
+       (ipa_profile): Here.
  
- 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 2019-11-12  Martin Sebor  <msebor@redhat.com>
  
-       * tree-nested.c (get_frame_type): Use create_tmp_var_raw instead of
-       create_tmp_var_for to create the FRAME decl.
-       (finalize_nesting_tree_1): Do not unchain the FRAME decl.
+       PR tree-optimization/92412
+       * targhooks.c (default_ref_may_alias_errno): Errono can only alias
+       extern variables.
  
- 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 2019-11-12  Martin Sebor  <msebor@redhat.com>
  
-       * tree-inline.c (copy_edges_for_bb): Minor tweak.
-       (maybe_move_debug_stmts_to_successors): Also reset the locus of the
-       debug statement when resetting its value.
-       (expand_call_inline): Copy the locus of the call onto the assignment
-       of the return value, if any.  Use local variable in more cases.
+       PR middle-end/83688
+       * gimple-ssa-sprintf.c (format_result::alias_info): New struct.
+       (directive::argno): New member.
+       (format_result::aliases, format_result::alias_count): New data members.
+       (format_result::append_alias): New member function.
+       (fmtresult::dst_offset): New data member.
+       (pass_sprintf_length::call_info::dst_origin): New data member.
+       (pass_sprintf_length::call_info::dst_field, dst_offset): Same.
+       (char_type_p, array_elt_at_offset, field_at_offset): New functions.
+       (get_origin_and_offset): Same.
+       (format_string): Call it.
+       (format_directive): Call append_alias and set directive argument
+       number.
+       (maybe_warn_overlap): New function.
+       (pass_sprintf_length::compute_format_length): Call it.
+       (pass_sprintf_length::handle_gimple_call): Initialize new members.
+       * gcc/tree-ssa-strlen.c (): Also enable when -Wrestrict is on.
  
- 2018-06-21  Martin Liska  <mliska@suse.cz>
+ 2019-11-12  Ilya Leoshkevich  <iii@linux.ibm.com>
  
-       * ipa-pure-const.c (propagate_nothrow): Use
-         funct_state_summaries->get.
-       (dump_malloc_lattice): Likewise.
-       (propagate_malloc): Likewise.
+       PR rtl-optimization/92430
+       * cfgcleanup.c (pass_jump_after_combine::execute): Free
+       dominance info at the beginning.
  
- 2018-06-21  Richard Biener  <rguenther@suse.de>
+ 2019-11-12  Richard Biener  <rguenther@suse.de>
  
-       * lto-streamer-out.c (DFS::DFS_write_tree_body): Update outdated
-       comment.  Follow BLOCK_ABSTRACT_ORIGIN unconditionally.
-       * tree-streamer-in.c (lto_input_ts_block_tree_pointers): Update
-       comment.
-       * tree-streamer-out.c (write_ts_block_tree_pointers): Stream
-       BLOCK_ABSTRACT_ORIGIN unconditionally.
+       PR tree-optimization/92460
+       * tree-vect-stmts.c (vectorizable_simd_clone_call): Unshare
+       expression before gimplifying.
  
- 2018-06-21  David Malcolm  <dmalcolm@redhat.com>
+ 2019-11-12  Richard Biener  <rguenther@suse.de>
  
-       * ipa-cp.c (ipcp_driver): Set edge_clone_summaries to NULL after
-       deleting it.
-       * ipa-reference.c (ipa_reference_c_finalize): Delete
-       ipa_ref_opt_sum_summaries and set it to NULL.
+       PR tree-optimization/92461
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Update
+       stmt after propagation.
  
- 2018-06-21  Tom de Vries  <tdevries@suse.de>
+ 2019-11-12  Martin Liska  <mliska@suse.cz>
  
-       PR tree-optimization/85859
-       * tree-ssa-tail-merge.c (stmt_local_def): Copy gimple_is_call
-       test with comment from bb_no_side_effects_p.
+       * config/i386/i386-options.c (ix86_recompute_optlev_based_flags):
+       Use SET_OPTION_IF_UNSET.
+       (ix86_option_override_internal): Likewise.
+       * opts.c (default_options_optimization): Likewise.
+       (finish_options): Likewise.
+       (enable_fdo_optimizations): Likewise.
+       (common_handle_option): Likewise.
  
- 2018-06-21  Richard Biener  <rguenther@suse.de>
+ 2019-11-12  Martin Liska  <mliska@suse.cz>
  
-       PR tree-optimization/86232
-       * tree-ssa-loop-niter.c (number_of_iterations_popcount): Adjust
-       max for constant niter.
+       * common/common-target.def: Remove option_validate_param and
+       option_default_params.
+       * common/common-targhooks.c (default_option_validate_param):
+       Remove.
+       * common/common-targhooks.h (default_option_validate_param):
+       Remove.
+       * common/config/aarch64/aarch64-common.c (TARGET_OPTION_DEFAULT_PARAMS):
+       Remove usage of this.
+       (TARGET_OPTION_VALIDATE_PARAM): Likewise.
+       (aarch64_option_validate_param): Likewise.
+       (aarch64_option_default_params): Likewise
+       * common/config/bpf/bpf-common.c (bpf_option_default_params): Likewise.
+       (TARGET_OPTION_DEFAULT_PARAMS): Likewise.
+       * common/config/ia64/ia64-common.c (ia64_option_default_params): Likewise.
+       (TARGET_OPTION_DEFAULT_PARAMS): Likewise.
+       * common/config/powerpcspe/powerpcspe-common.c (rs6000_option_default_params): Likewise.
+       (TARGET_OPTION_DEFAULT_PARAMS): Likewise.
+       * common/config/rs6000/rs6000-common.c (rs6000_option_default_params): Likewise.
+       (TARGET_OPTION_DEFAULT_PARAMS): Likewise.
+       * common/config/sh/sh-common.c (sh_option_default_params): Likewise.
+       (TARGET_OPTION_DEFAULT_PARAMS): Likewise.
+       * config/aarch64/aarch64.c (aarch64_override_options_internal): Validate
+       guard_size here.
+       * doc/tm.texi: Remove option_default_params and option_validate_param.
+       * doc/tm.texi.in: Likewise.
  
- 2018-06-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 2019-11-12  Martin Liska  <mliska@suse.cz>
  
-       * config/aarch64/aarch64-simd.md
-       (*aarch64_crypto_aes<aes_op>v16qi_xor_combine): New.
- 2018-06-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
-       * config/aarch64/aarch64-simd.md (aarch64_crypto_aes<aes_op>v16qi):
-       Make opernads of the unspec commutative.
- 2018-06-21  Richard Biener  <rguenther@suse.de>
-       * tree-data-ref.c (dr_step_indicator): Handle NULL DR_STEP.
-       * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
-       Avoid calling vect_mark_for_runtime_alias_test with gathers or scatters.
-       (vect_analyze_data_ref_dependence): Re-order checks to deal with
-       NULL DR_STEP.
-       (vect_record_base_alignments): Do not record base alignment
-       for gathers or scatters.
-       (vect_compute_data_ref_alignment): Drop return value that is always
-       true.  Bail out early for gathers or scatters.
-       (vect_enhance_data_refs_alignment): Bail out early for gathers
-       or scatters.
-       (vect_find_same_alignment_drs): Likewise.
-       (vect_analyze_data_refs_alignment): Remove dead code.
-       (vect_slp_analyze_and_verify_node_alignment): Likewise.
-       (vect_analyze_data_refs): For possible gathers or scatters do
-       not create an alternate DR, just check their possible validity
-       and mark them.  Adjust DECL_NONALIASED handling to not rely
-       on DR_BASE_ADDRESS.
-       * tree-vect-loop-manip.c (vect_update_inits_of_drs): Do not
-       update inits of gathers or scatters.
-       * tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
-       Also copy gather/scatter flag to pattern vinfo.
- 2018-06-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
-       * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
-       behavior of vec_packsu (vector unsigned long long, vector unsigned
-       long long) to match behavior of vec_packs with same signature.
- 2018-06-20  Chung-Lin Tang <cltang@codesourcery.com>
-           Thomas Schwinge <thomas@codesourcery.com>
-           Cesar Philippidis  <cesar@codesourcery.com>
-       * gimplify.c (gimplify_scan_omp_clauses): Add support for
-       OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
+       * common/common-target.def:
+       Do not mention set_default_param_value
+       and set_param_value.
+       * doc/tm.texi: Likewise.
+ 2019-11-12  Martin Liska  <mliska@suse.cz>
+       * common.opt: Remove param_values.
+       * config/i386/i386-options.c (ix86_valid_target_attribute_p):
+       Remove finalize_options_struct.
+       * gcc.c (driver::decode_argv): Do not call global_init_params
+       and finish_params.
+       (driver::finalize): Do not call params_c_finalize
+       and finalize_options_struct.
+       * opt-suggestions.c (option_proposer::get_completions): Remove
+       special casing of params.
+       (option_proposer::find_param_completions): Remove.
+       (test_completion_partial_match): Update expected output.
+       * opt-suggestions.h: Remove find_param_completions.
+       * opts-common.c (add_misspelling_candidates): Add
+       --param with a space.
+       * opts.c (handle_param): Remove.
+       (init_options_struct):. Remove init_options_struct and
+       similar calls.
+       (finalize_options_struct): Remove.
+       (common_handle_option): Use SET_OPTION_IF_UNSET.
+       * opts.h (finalize_options_struct): Remove.
+       * toplev.c (general_init): Do not call global_init_params.
+       (toplev::finalize): Do not call params_c_finalize and
+       finalize_options_struct.
+ 2019-11-12  Martin Liska  <mliska@suse.cz>
+       * Makefile.in: Remove PARAMS_H and params.list
+       and params.options.
+       * params-enum.h: Remove.
+       * params-list.h: Remove.
+       * params-options.h: Remove.
+       * params.c: Remove.
+       * params.def: Remove.
+       * params.h: Remove.
+       * asan.c: Do not include params.h.
+       * auto-profile.c: Likewise.
+       * bb-reorder.c: Likewise.
+       * builtins.c: Likewise.
+       * cfgcleanup.c: Likewise.
+       * cfgexpand.c: Likewise.
+       * cfgloopanal.c: Likewise.
+       * cgraph.c: Likewise.
+       * combine.c: Likewise.
+       * common/config/aarch64/aarch64-common.c: Likewise.
+       * common/config/gcn/gcn-common.c: Likewise.
+       * common/config/ia64/ia64-common.c: Likewise.
+       * common/config/powerpcspe/powerpcspe-common.c: Likewise.
+       * common/config/rs6000/rs6000-common.c: Likewise.
+       * common/config/sh/sh-common.c: Likewise.
+       * config/aarch64/aarch64.c: Likewise.
+       * config/alpha/alpha.c: Likewise.
+       * config/arm/arm.c: Likewise.
+       * config/avr/avr.c: Likewise.
+       * config/csky/csky.c: Likewise.
+       * config/i386/i386-builtins.c: Likewise.
+       * config/i386/i386-expand.c: Likewise.
+       * config/i386/i386-features.c: Likewise.
+       * config/i386/i386-options.c: Likewise.
+       * config/i386/i386.c: Likewise.
+       * config/ia64/ia64.c: Likewise.
+       * config/rs6000/rs6000-logue.c: Likewise.
+       * config/rs6000/rs6000.c: Likewise.
+       * config/s390/s390.c: Likewise.
+       * config/sparc/sparc.c: Likewise.
+       * config/visium/visium.c: Likewise.
+       * coverage.c: Likewise.
+       * cprop.c: Likewise.
+       * cse.c: Likewise.
+       * cselib.c: Likewise.
+       * dse.c: Likewise.
+       * emit-rtl.c: Likewise.
+       * explow.c: Likewise.
+       * final.c: Likewise.
+       * fold-const.c: Likewise.
+       * gcc.c: Likewise.
+       * gcse.c: Likewise.
+       * ggc-common.c: Likewise.
+       * ggc-page.c: Likewise.
+       * gimple-loop-interchange.cc: Likewise.
+       * gimple-loop-jam.c: Likewise.
+       * gimple-loop-versioning.cc: Likewise.
+       * gimple-ssa-split-paths.c: Likewise.
+       * gimple-ssa-sprintf.c: Likewise.
+       * gimple-ssa-store-merging.c: Likewise.
+       * gimple-ssa-strength-reduction.c: Likewise.
+       * gimple-ssa-warn-alloca.c: Likewise.
+       * gimple-ssa-warn-restrict.c: Likewise.
+       * graphite-isl-ast-to-gimple.c: Likewise.
+       * graphite-optimize-isl.c: Likewise.
+       * graphite-scop-detection.c: Likewise.
+       * graphite-sese-to-poly.c: Likewise.
+       * graphite.c: Likewise.
+       * haifa-sched.c: Likewise.
+       * hsa-gen.c: Likewise.
+       * ifcvt.c: Likewise.
+       * ipa-cp.c: Likewise.
+       * ipa-fnsummary.c: Likewise.
+       * ipa-inline-analysis.c: Likewise.
+       * ipa-inline.c: Likewise.
+       * ipa-polymorphic-call.c: Likewise.
+       * ipa-profile.c: Likewise.
+       * ipa-prop.c: Likewise.
+       * ipa-split.c: Likewise.
+       * ipa-sra.c: Likewise.
+       * ira-build.c: Likewise.
+       * ira-conflicts.c: Likewise.
+       * loop-doloop.c: Likewise.
+       * loop-invariant.c: Likewise.
+       * loop-unroll.c: Likewise.
+       * lra-assigns.c: Likewise.
+       * lra-constraints.c: Likewise.
+       * modulo-sched.c: Likewise.
+       * opt-suggestions.c: Likewise.
+       * opts.c: Likewise.
+       * postreload-gcse.c: Likewise.
+       * predict.c: Likewise.
+       * reload.c: Likewise.
+       * reorg.c: Likewise.
+       * resource.c: Likewise.
+       * sanopt.c: Likewise.
+       * sched-deps.c: Likewise.
+       * sched-ebb.c: Likewise.
+       * sched-rgn.c: Likewise.
+       * sel-sched-ir.c: Likewise.
+       * sel-sched.c: Likewise.
+       * shrink-wrap.c: Likewise.
+       * stmt.c: Likewise.
+       * targhooks.c: Likewise.
+       * toplev.c: Likewise.
+       * tracer.c: Likewise.
+       * trans-mem.c: Likewise.
+       * tree-chrec.c: Likewise.
+       * tree-data-ref.c: Likewise.
+       * tree-if-conv.c: Likewise.
+       * tree-inline.c: Likewise.
+       * tree-loop-distribution.c: Likewise.
+       * tree-parloops.c: Likewise.
+       * tree-predcom.c: Likewise.
+       * tree-profile.c: Likewise.
+       * tree-scalar-evolution.c: Likewise.
+       * tree-sra.c: Likewise.
+       * tree-ssa-ccp.c: Likewise.
+       * tree-ssa-dom.c: Likewise.
+       * tree-ssa-dse.c: Likewise.
+       * tree-ssa-ifcombine.c: Likewise.
+       * tree-ssa-loop-ch.c: Likewise.
+       * tree-ssa-loop-im.c: Likewise.
+       * tree-ssa-loop-ivcanon.c: Likewise.
+       * tree-ssa-loop-ivopts.c: Likewise.
+       * tree-ssa-loop-manip.c: Likewise.
+       * tree-ssa-loop-niter.c: Likewise.
+       * tree-ssa-loop-prefetch.c: Likewise.
+       * tree-ssa-loop-unswitch.c: Likewise.
+       * tree-ssa-math-opts.c: Likewise.
+       * tree-ssa-phiopt.c: Likewise.
+       * tree-ssa-pre.c: Likewise.
+       * tree-ssa-reassoc.c: Likewise.
+       * tree-ssa-sccvn.c: Likewise.
+       * tree-ssa-scopedtables.c: Likewise.
+       * tree-ssa-sink.c: Likewise.
+       * tree-ssa-strlen.c: Likewise.
+       * tree-ssa-structalias.c: Likewise.
+       * tree-ssa-tail-merge.c: Likewise.
+       * tree-ssa-threadbackward.c: Likewise.
+       * tree-ssa-threadedge.c: Likewise.
+       * tree-ssa-uninit.c: Likewise.
+       * tree-switch-conversion.c: Likewise.
+       * tree-vect-data-refs.c: Likewise.
+       * tree-vect-loop.c: Likewise.
+       * tree-vect-slp.c: Likewise.
+       * tree-vrp.c: Likewise.
+       * tree.c: Likewise.
+       * value-prof.c: Likewise.
+       * var-tracking.c: Likewise.
+ 2019-11-12  Martin Liska  <mliska@suse.cz>
+       * asan.c (asan_sanitize_stack_p): Replace old parameter syntax
+       with the new one, include opts.h if needed.  Use SET_OPTION_IF_UNSET
+       macro.
+       (asan_sanitize_allocas_p): Likewise.
+       (asan_emit_stack_protection): Likewise.
+       (asan_protect_global): Likewise.
+       (instrument_derefs): Likewise.
+       (instrument_builtin_call): Likewise.
+       (asan_expand_mark_ifn): Likewise.
+       * auto-profile.c (auto_profile): Likewise.
+       * bb-reorder.c (copy_bb_p): Likewise.
+       (duplicate_computed_gotos): Likewise.
+       * builtins.c (inline_expand_builtin_string_cmp): Likewise.
+       * cfgcleanup.c (try_crossjump_to_edge): Likewise.
+       (try_crossjump_bb): Likewise.
+       * cfgexpand.c (defer_stack_allocation): Likewise.
+       (stack_protect_classify_type): Likewise.
+       (pass_expand::execute): Likewise.
+       * cfgloopanal.c (expected_loop_iterations_unbounded): Likewise.
+       (estimate_reg_pressure_cost): Likewise.
+       * cgraph.c (cgraph_edge::maybe_hot_p): Likewise.
+       * combine.c (combine_instructions): Likewise.
+       (record_value_for_reg): Likewise.
+       * common/config/aarch64/aarch64-common.c (aarch64_option_validate_param): Likewise.
+       (aarch64_option_default_params): Likewise.
+       * common/config/ia64/ia64-common.c (ia64_option_default_params): Likewise.
+       * common/config/powerpcspe/powerpcspe-common.c (rs6000_option_default_params): Likewise.
+       * common/config/rs6000/rs6000-common.c (rs6000_option_default_params): Likewise.
+       * common/config/sh/sh-common.c (sh_option_default_params): Likewise.
+       * config/aarch64/aarch64.c (aarch64_output_probe_stack_range): Likewise.
+       (aarch64_allocate_and_probe_stack_space): Likewise.
+       (aarch64_expand_epilogue): Likewise.
+       (aarch64_override_options_internal): Likewise.
+       * config/alpha/alpha.c (alpha_option_override): Likewise.
+       * config/arm/arm.c (arm_option_override): Likewise.
+       (arm_valid_target_attribute_p): Likewise.
+       * config/i386/i386-options.c (ix86_option_override_internal): Likewise.
+       * config/i386/i386.c (get_probe_interval): Likewise.
+       (ix86_adjust_stack_and_probe_stack_clash): Likewise.
+       (ix86_max_noce_ifcvt_seq_cost): Likewise.
+       * config/ia64/ia64.c (ia64_adjust_cost): Likewise.
+       * config/rs6000/rs6000-logue.c (get_stack_clash_protection_probe_interval): Likewise.
+       (get_stack_clash_protection_guard_size): Likewise.
+       * config/rs6000/rs6000.c (rs6000_option_override_internal): Likewise.
+       * config/s390/s390.c (allocate_stack_space): Likewise.
+       (s390_emit_prologue): Likewise.
+       (s390_option_override_internal): Likewise.
+       * config/sparc/sparc.c (sparc_option_override): Likewise.
+       * config/visium/visium.c (visium_option_override): Likewise.
+       * coverage.c (get_coverage_counts): Likewise.
+       (coverage_compute_profile_id): Likewise.
+       (coverage_begin_function): Likewise.
+       (coverage_end_function): Likewise.
+       * cse.c (cse_find_path): Likewise.
+       (cse_extended_basic_block): Likewise.
+       (cse_main): Likewise.
+       * cselib.c (cselib_invalidate_mem): Likewise.
+       * dse.c (dse_step1): Likewise.
+       * emit-rtl.c (set_new_first_and_last_insn): Likewise.
+       (get_max_insn_count): Likewise.
+       (make_debug_insn_raw): Likewise.
+       (init_emit): Likewise.
+       * explow.c (compute_stack_clash_protection_loop_data): Likewise.
+       * final.c (compute_alignments): Likewise.
+       * fold-const.c (fold_range_test): Likewise.
+       (fold_truth_andor): Likewise.
+       (tree_single_nonnegative_warnv_p): Likewise.
+       (integer_valued_real_single_p): Likewise.
+       * gcse.c (want_to_gcse_p): Likewise.
+       (prune_insertions_deletions): Likewise.
+       (hoist_code): Likewise.
+       (gcse_or_cprop_is_too_expensive): Likewise.
+       * ggc-common.c: Likewise.
+       * ggc-page.c (ggc_collect): Likewise.
+       * gimple-loop-interchange.cc (MAX_NUM_STMT): Likewise.
+       (MAX_DATAREFS): Likewise.
+       (OUTER_STRIDE_RATIO): Likewise.
+       * gimple-loop-jam.c (tree_loop_unroll_and_jam): Likewise.
+       * gimple-loop-versioning.cc (loop_versioning::max_insns_for_loop): Likewise.
+       * gimple-ssa-split-paths.c (is_feasible_trace): Likewise.
+       * gimple-ssa-store-merging.c (imm_store_chain_info::try_coalesce_bswap): Likewise.
+       (imm_store_chain_info::coalesce_immediate_stores): Likewise.
+       (imm_store_chain_info::output_merged_store): Likewise.
+       (pass_store_merging::process_store): Likewise.
+       * gimple-ssa-strength-reduction.c (find_basis_for_base_expr): Likewise.
+       * graphite-isl-ast-to-gimple.c (class translate_isl_ast_to_gimple): Likewise.
+       (scop_to_isl_ast): Likewise.
+       * graphite-optimize-isl.c (get_schedule_for_node_st): Likewise.
+       (optimize_isl): Likewise.
+       * graphite-scop-detection.c (build_scops): Likewise.
+       * haifa-sched.c (set_modulo_params): Likewise.
+       (rank_for_schedule): Likewise.
+       (model_add_to_worklist): Likewise.
+       (model_promote_insn): Likewise.
+       (model_choose_insn): Likewise.
+       (queue_to_ready): Likewise.
+       (autopref_multipass_dfa_lookahead_guard): Likewise.
+       (schedule_block): Likewise.
+       (sched_init): Likewise.
+       * hsa-gen.c (init_prologue): Likewise.
+       * ifcvt.c (bb_ok_for_noce_convert_multiple_sets): Likewise.
+       (cond_move_process_if_block): Likewise.
+       * ipa-cp.c (ipcp_lattice::add_value): Likewise.
+       (merge_agg_lats_step): Likewise.
+       (devirtualization_time_bonus): Likewise.
+       (hint_time_bonus): Likewise.
+       (incorporate_penalties): Likewise.
+       (good_cloning_opportunity_p): Likewise.
+       (ipcp_propagate_stage): Likewise.
+       * ipa-fnsummary.c (decompose_param_expr): Likewise.
+       (set_switch_stmt_execution_predicate): Likewise.
+       (analyze_function_body): Likewise.
+       (compute_fn_summary): Likewise.
+       * ipa-inline-analysis.c (estimate_growth): Likewise.
+       * ipa-inline.c (caller_growth_limits): Likewise.
+       (inline_insns_single): Likewise.
+       (inline_insns_auto): Likewise.
+       (can_inline_edge_by_limits_p): Likewise.
+       (want_early_inline_function_p): Likewise.
+       (big_speedup_p): Likewise.
+       (want_inline_small_function_p): Likewise.
+       (want_inline_self_recursive_call_p): Likewise.
+       (edge_badness): Likewise.
+       (recursive_inlining): Likewise.
+       (compute_max_insns): Likewise.
+       (early_inliner): Likewise.
+       * ipa-polymorphic-call.c (csftc_abort_walking_p): Likewise.
+       * ipa-profile.c (ipa_profile): Likewise.
+       * ipa-prop.c (determine_known_aggregate_parts): Likewise.
+       (ipa_analyze_node): Likewise.
+       (ipcp_transform_function): Likewise.
+       * ipa-split.c (consider_split): Likewise.
+       * ipa-sra.c (allocate_access): Likewise.
+       (process_scan_results): Likewise.
+       (ipa_sra_summarize_function): Likewise.
+       (pull_accesses_from_callee): Likewise.
+       * ira-build.c (loop_compare_func): Likewise.
+       (mark_loops_for_removal): Likewise.
+       * ira-conflicts.c (build_conflict_bit_table): Likewise.
+       * loop-doloop.c (doloop_optimize): Likewise.
+       * loop-invariant.c (gain_for_invariant): Likewise.
+       (move_loop_invariants): Likewise.
+       * loop-unroll.c (decide_unroll_constant_iterations): Likewise.
+       (decide_unroll_runtime_iterations): Likewise.
+       (decide_unroll_stupid): Likewise.
+       (expand_var_during_unrolling): Likewise.
+       * lra-assigns.c (spill_for): Likewise.
+       * lra-constraints.c (EBB_PROBABILITY_CUTOFF): Likewise.
+       * modulo-sched.c (sms_schedule): Likewise.
+       (DFA_HISTORY): Likewise.
+       * opts.c (default_options_optimization): Likewise.
+       (finish_options): Likewise.
+       (common_handle_option): Likewise.
+       * postreload-gcse.c (eliminate_partially_redundant_load): Likewise.
+       (if): Likewise.
+       * predict.c (get_hot_bb_threshold): Likewise.
+       (maybe_hot_count_p): Likewise.
+       (probably_never_executed): Likewise.
+       (predictable_edge_p): Likewise.
+       (predict_loops): Likewise.
+       (expr_expected_value_1): Likewise.
+       (tree_predict_by_opcode): Likewise.
+       (handle_missing_profiles): Likewise.
+       * reload.c (find_equiv_reg): Likewise.
+       * reorg.c (redundant_insn): Likewise.
+       * resource.c (mark_target_live_regs): Likewise.
+       (incr_ticks_for_insn): Likewise.
+       * sanopt.c (pass_sanopt::execute): Likewise.
+       * sched-deps.c (sched_analyze_1): Likewise.
+       (sched_analyze_2): Likewise.
+       (sched_analyze_insn): Likewise.
+       (deps_analyze_insn): Likewise.
+       * sched-ebb.c (schedule_ebbs): Likewise.
+       * sched-rgn.c (find_single_block_region): Likewise.
+       (too_large): Likewise.
+       (haifa_find_rgns): Likewise.
+       (extend_rgns): Likewise.
+       (new_ready): Likewise.
+       (schedule_region): Likewise.
+       (sched_rgn_init): Likewise.
+       * sel-sched-ir.c (make_region_from_loop): Likewise.
+       * sel-sched-ir.h (MAX_WS): Likewise.
+       * sel-sched.c (process_pipelined_exprs): Likewise.
+       (sel_setup_region_sched_flags): Likewise.
+       * shrink-wrap.c (try_shrink_wrapping): Likewise.
+       * targhooks.c (default_max_noce_ifcvt_seq_cost): Likewise.
+       * toplev.c (print_version): Likewise.
+       (process_options): Likewise.
+       * tracer.c (tail_duplicate): Likewise.
+       * trans-mem.c (tm_log_add): Likewise.
+       * tree-chrec.c (chrec_fold_plus_1): Likewise.
+       * tree-data-ref.c (split_constant_offset): Likewise.
+       (compute_all_dependences): Likewise.
+       * tree-if-conv.c (MAX_PHI_ARG_NUM): Likewise.
+       * tree-inline.c (remap_gimple_stmt): Likewise.
+       * tree-loop-distribution.c (MAX_DATAREFS_NUM): Likewise.
+       * tree-parloops.c (MIN_PER_THREAD): Likewise.
+       (create_parallel_loop): Likewise.
+       * tree-predcom.c (determine_unroll_factor): Likewise.
+       * tree-scalar-evolution.c (instantiate_scev_r): Likewise.
+       * tree-sra.c (analyze_all_variable_accesses): Likewise.
+       * tree-ssa-ccp.c (fold_builtin_alloca_with_align): Likewise.
+       * tree-ssa-dse.c (setup_live_bytes_from_ref): Likewise.
+       (dse_optimize_redundant_stores): Likewise.
+       (dse_classify_store): Likewise.
+       * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
+       * tree-ssa-loop-ch.c (ch_base::copy_headers): Likewise.
+       * tree-ssa-loop-im.c (LIM_EXPENSIVE): Likewise.
+       * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
+       (try_peel_loop): Likewise.
+       (tree_unroll_loops_completely): Likewise.
+       * tree-ssa-loop-ivopts.c (avg_loop_niter): Likewise.
+       (CONSIDER_ALL_CANDIDATES_BOUND): Likewise.
+       (MAX_CONSIDERED_GROUPS): Likewise.
+       (ALWAYS_PRUNE_CAND_SET_BOUND): Likewise.
+       * tree-ssa-loop-manip.c (can_unroll_loop_p): Likewise.
+       * tree-ssa-loop-niter.c (MAX_ITERATIONS_TO_TRACK): Likewise.
+       * tree-ssa-loop-prefetch.c (PREFETCH_BLOCK): Likewise.
+       (L1_CACHE_SIZE_BYTES): Likewise.
+       (L2_CACHE_SIZE_BYTES): Likewise.
+       (should_issue_prefetch_p): Likewise.
+       (schedule_prefetches): Likewise.
+       (determine_unroll_factor): Likewise.
+       (volume_of_references): Likewise.
+       (add_subscript_strides): Likewise.
+       (self_reuse_distance): Likewise.
+       (mem_ref_count_reasonable_p): Likewise.
+       (insn_to_prefetch_ratio_too_small_p): Likewise.
+       (loop_prefetch_arrays): Likewise.
+       (tree_ssa_prefetch_arrays): Likewise.
+       * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Likewise.
+       * tree-ssa-math-opts.c (gimple_expand_builtin_pow): Likewise.
+       (convert_mult_to_fma): Likewise.
+       (math_opts_dom_walker::after_dom_children): Likewise.
+       * tree-ssa-phiopt.c (cond_if_else_store_replacement): Likewise.
+       (hoist_adjacent_loads): Likewise.
+       (gate_hoist_loads): Likewise.
+       * tree-ssa-pre.c (translate_vuse_through_block): Likewise.
+       (compute_partial_antic_aux): Likewise.
+       * tree-ssa-reassoc.c (get_reassociation_width): Likewise.
+       * tree-ssa-sccvn.c (vn_reference_lookup_pieces): Likewise.
+       (vn_reference_lookup): Likewise.
+       (do_rpo_vn): Likewise.
+       * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Likewise.
+       * tree-ssa-sink.c (select_best_block): Likewise.
+       * tree-ssa-strlen.c (new_stridx): Likewise.
+       (new_addr_stridx): Likewise.
+       (get_range_strlen_dynamic): Likewise.
+       (class ssa_name_limit_t): Likewise.
+       * tree-ssa-structalias.c (push_fields_onto_fieldstack): Likewise.
+       (create_variable_info_for_1): Likewise.
+       (init_alias_vars): Likewise.
+       * tree-ssa-tail-merge.c (find_clusters_1): Likewise.
+       (tail_merge_optimize): Likewise.
+       * tree-ssa-threadbackward.c (thread_jumps::profitable_jump_thread_path): Likewise.
+       (thread_jumps::fsm_find_control_statement_thread_paths): Likewise.
+       (thread_jumps::find_jump_threads_backwards): Likewise.
+       * tree-ssa-threadedge.c (record_temporary_equivalences_from_stmts_at_dest): Likewise.
+       * tree-ssa-uninit.c (compute_control_dep_chain): Likewise.
+       * tree-switch-conversion.c (switch_conversion::check_range): Likewise.
+       (jump_table_cluster::can_be_handled): Likewise.
+       * tree-switch-conversion.h (jump_table_cluster::case_values_threshold): Likewise.
+       (SWITCH_CONVERSION_BRANCH_RATIO): Likewise.
+       (param_switch_conversion_branch_ratio): Likewise.
+       * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Likewise.
+       (vect_enhance_data_refs_alignment): Likewise.
+       (vect_prune_runtime_alias_test_list): Likewise.
+       * tree-vect-loop.c (vect_analyze_loop_costing): Likewise.
+       (vect_get_datarefs_in_loop): Likewise.
+       (vect_analyze_loop): Likewise.
+       * tree-vect-slp.c (vect_slp_bb): Likewise.
+       * tree-vectorizer.h: Likewise.
+       * tree-vrp.c (find_switch_asserts): Likewise.
+       (vrp_prop::check_mem_ref): Likewise.
+       * tree.c (wide_int_to_tree_1): Likewise.
+       (cache_integer_cst): Likewise.
+       * var-tracking.c (EXPR_USE_DEPTH): Likewise.
+       (reverse_op): Likewise.
+       (vt_find_locations): Likewise.
+ 2019-11-12  Martin Liska  <mliska@suse.cz>
+       * Makefile.in: Include params.opt.
+       * flag-types.h (enum parloops_schedule_type): Add
+       parloops_schedule_type used in params.opt.
+       * params.opt: New file.
+ 2019-11-12  Martin Liska  <mliska@suse.cz>
+       * common.opt: Remove --param and --param= options.
+       * opt-functions.awk: Mark CL_PARAMS for options
+       that have Param keyword.
+       * opts-common.c (decode_cmdline_options_to_array):
+       Replace --param key=value with --param=key=value.
+       * opts.c (print_filtered_help): Remove special
+       printing of params.
+       (print_specific_help): Update title for params.
+       (common_handle_option): Do not handle OPT__param.
+       opts.h (SET_OPTION_IF_UNSET): New macro.
+       * doc/options.texi: Document Param keyword.
+ 2019-11-12  Maciej W. Rozycki  <macro@codesourcery.com>
+           Frederik Harwath  <frederik@codesourcery.com>
+           Thomas Schwinge  <thomas@codesourcery.com>
+       gcc/
+       * gimple.h (gf_mask): Add GF_OMP_TARGET_KIND_OACC_SERIAL
+       enumeration constant.
+       (is_gimple_omp_oacc): Handle GF_OMP_TARGET_KIND_OACC_SERIAL.
+       (is_gimple_omp_offloaded): Likewise.
+       * gimplify.c (omp_region_type): Add ORT_ACC_SERIAL enumeration
+       constant.  Adjust the value of ORT_NONE accordingly.
+       (is_gimple_stmt): Handle OACC_SERIAL.
+       (oacc_default_clause): Handle ORT_ACC_SERIAL.
+       (gomp_needs_data_present): Likewise.
        (gimplify_adjust_omp_clauses): Likewise.
-       (gimplify_oacc_declare_1): Add support for GOMP_MAP_RELEASE, remove
-       support for GOMP_MAP_FORCE_{ALLOC,TO,FROM,TOFROM}.
-       (gimplify_omp_target_update): Update handling of acc update and
-       enter/exit data.
-       * omp-low.c (install_var_field): Remove unused parameter
-       base_pointers_restrict.
-       (scan_sharing_clauses): Remove base_pointers_restrict parameter.
-       Update call to install_var_field. Handle OMP_CLAUSE_{IF_PRESENT,
-       FINALIZE}
-       (omp_target_base_pointers_restrict_p): Delete.
-       (scan_omp_target): Update call to scan_sharing_clauses.
-       * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_{IF_PRESENT,
-       FINALIZE}.
-       * tree-nested.c (convert_nonlocal_omp_clauses): Handle
-       OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
-       (convert_local_omp_clauses): Likewise.
-       * tree-pretty-print.c (dump_omp_clause): Likewise.
-       * tree.c (omp_clause_num_ops): Add entries for  OMP_CLAUSE_{IF_PRESENT,
-       FINALIZE}.
-       (omp_clause_code_name): Likewise.
+       (gimplify_omp_workshare): Handle OACC_SERIAL.
+       (gimplify_expr): Likewise.
+       * omp-expand.c (expand_omp_target):
+       Handle GF_OMP_TARGET_KIND_OACC_SERIAL.
+       (build_omp_regions_1, omp_make_gimple_edges): Likewise.
+       * omp-low.c (is_oacc_parallel): Rename function to...
+       (is_oacc_parallel_or_serial): ... this.
+       Handle GF_OMP_TARGET_KIND_OACC_SERIAL.
+       (scan_sharing_clauses): Adjust accordingly.
+       (scan_omp_for): Likewise.
+       (lower_oacc_head_mark): Likewise.
+       (convert_from_firstprivate_int): Likewise.
+       (lower_omp_target): Likewise.
+       (check_omp_nesting_restrictions): Handle
+       GF_OMP_TARGET_KIND_OACC_SERIAL.
+       (lower_oacc_reductions): Likewise.
+       (lower_omp_target): Likewise.
+       * tree.def (OACC_SERIAL): New tree code.
+       * tree-pretty-print.c (dump_generic_node): Handle OACC_SERIAL.
+       * doc/generic.texi (OpenACC): Document OACC_SERIAL.
+ 2019-11-12  Jakub Jelinek  <jakub@redhat.com>
+       PR target/92449
+       * tree-complex.c (expand_complex_multiplication): If !HONOR_NANS,
+       don't emit UNORDERED_EXPR guarded libcall.  Formatting fixes.
+       PR tree-optimization/92452
+       * tree-vrp.c (vrp_prop::check_array_ref): If TRUNC_DIV_EXPR folds
+       into NULL_TREE, set up_bound to NULL_TREE instead of computing
+       MINUS_EXPR on it.
+ 2019-11-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       * tree-vect-loop.c (vect_transform_loop): Don't overwrite epilogues
+       safelen with 0.
+ 2019-11-12  Alan Modra  <amodra@gmail.com>
+       * config/rs6000/predicates.md (unspec_tls): Allow const0_rtx for got
+       element of unspec vec.
+       * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Support
+       PC-relative TLS.
+       * config/rs6000/rs6000.md (UNSPEC_TLSTLS_PCREL): New unspec.
+       (tls_gd_pcrel, tls_ld_pcrel): New insns.
+       (tls_dtprel, tls_tprel): Set attr prefixed when tls_size is not 16.
+       (tls_got_tprel_pcrel, tls_tls_pcrel): New insns.
+ 2019-11-12  Alan Modra  <amodra@gmail.com>
+       * config/rs6000/rs6000.opt (mtls-markers): Delete.
+       * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Don't define.
+       (IS_NOMARK_TLSGETADDR): Likewise.
+       * config/rs6000/rs6000-protos.h (rs6000_output_tlsargs): Delete.
+       * config/rs6000/rs6000.c (rs6000_output_tlsargs): Delete.
+       (rs6000_legitimize_tls_address): Remove !TARGET_TLS_MARKERS code.
+       (rs6000_call_template_1): Delete TARGET_TLS_MARKERS test and
+       allow other UNSPECs besides UNSPEC_TLSGD and UNSPEC_TLSLD.
+       (rs6000_indirect_call_template_1): Likewise.
+       (rs6000_pltseq_template): Likewise.
+       (rs6000_opt_vars): Remove "tls-markers" entry.
+       * config/rs6000/rs6000.md (tls_gd<bits>): Replace TARGET_TLS_MARKERS
+       with TARGET_ELF.
+       (tls_gd_high<bits>, tls_gd_low<bits>): Likewise.
+       (tls_ld<bits>, tls_ld_high<bits>, tls_ld_low<bits>): Likewise.
+       (pltseq_plt_pcrel<mode>): Likewise.
+       (call_value_local32): Remove IS_NOMARK_TLSGETADDR predicate test.
+       (call_value_local64): Likewise.
+       (call_value_indirect_nonlocal_sysv<mode>): Remove IS_NOMARK_TLSGETADDR
+       output and length attribute sub-expression.
+       (call_value_nonlocal_sysv<mode>),
+       (call_value_nonlocal_sysv_secure<mode>),
+       (call_value_local_aix<mode>, call_value_nonlocal_aix<mode>),
+       (call_value_indirect_aix<mode>, call_value_indirect_elfv2<mode>),
+       (call_value_indirect_pcrel<mode>): Likewise.
+       * doc/install.texi (powerpc-*-*): Require binutils-2.20.
+       * configure.ac (HAVE_AS_TLS_MARKERS): Delete test.
+       * configure: Regenerate.
+       * config.in: Regenerate.
  
- 2018-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 2019-11-11  Michael Meissner  <meissner@linux.ibm.com>
  
-       PR debug/86194
-       * var-tracking.c (use_narrower_mode_test): Check if shift amount can
-       be narrowed.
+       * config/rs6000/predicates.md (prefixed_memory): New predicate.
+       * config/rs6000/rs6000.md (stack_protect_setdi): Deal with either
+       address being a prefixed load/store.
+       (stack_protect_testdi): Deal with either address being a prefixed
+       load.
  
-       PR tree-optimization/86231
-       * tree-vrp.c (union_ranges): For (  [  )  ] or (   )[   ] range and
-       anti-range don't overwrite *vr0min before using it to compute *vr0max.
+ 2019-11-11  Jakub Jelinek  <jakub@redhat.com>
  
- 2018-06-20  Tom de Vries  <tdevries@suse.de>
+       PR bootstrap/92433
+       * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Guard
+       ALTIVEC_BUILTIN_VEC_VCMPGE_P argument swapping with n == 3 check.  Use
+       std::swap.
  
-       PR tree-optimization/86097
-       * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Also convert *nit to
-       iv type if signedness of iv type is not the same as that of *nit.
+ 2019-11-11  Richard Sandiford  <richard.sandiford@arm.com>
  
- 2018-06-20  Jakub Jelinek  <jakub@redhat.com>
+       PR tree-optimization/92420
+       * tree-vect-stmts.c (get_negative_load_store_type): Move further
+       up file.
+       (get_group_load_store_type): Use it for reversed SLP accesses.
  
-       * cfgrtl.c (rtl_verify_edges): Formatting fix.  If bb->preds has any
-       EDGE_EH edges, verify they are all EDGE_EH.
+ 2019-11-11  Jan Hubicka  <hubcika@ucw.cz>
  
- 2018-06-20  Maya Rashish  <coypu@sdf.org>
+       * ipa-prop.c (ipa_propagate_indirect_call_infos): Remove ipcp
+       summary.
+       (ipcp_transformation_t::duplicate): Break out from ...
+       (ipa_node_params_t::duplicate): ... here; add copying of agg
+       replacements.
+       * ipa-prop.h (ipcp_transformation): Add constructor and destructor.
+       (ipcp_transformation_t): Add duplicate.
  
-       * ginclude/stddef.h: Limit #include <machine/ansi.h> to NetBSD.
+ 2019-11-11  Janne Blomqvist  <jb@gcc.gnu.org>
  
- 2018-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+         PR fortran/91828
+         * doc/install.texi: Document that the minimum MPFR version is
+         3.1.0.
  
-       * config/aarch64/aarch64-tuning-flags.def (no_ldp_stp_qregs): New.
-       * config/aarch64/aarch64.c (xgene1_tunings): Add
-       AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS to tune_flags.
-       (aarch64_mode_valid_for_sched_fusion_p):
-       Allow 16-byte modes.
-       (aarch64_classify_address): Allow 16-byte modes for load_store_pair_p.
-       * config/aarch64/aarch64-ldpstp.md: Add peepholes for LDP STP of
-       128-bit modes.
-       * config/aarch64/aarch64-simd.md (load_pair<VQ:mode><VQ2:mode>):
-       New pattern.
-       (vec_store_pair<VQ:mode><VQ2:mode>): Likewise.
-       * config/aarch64/iterators.md (VQ2): New mode iterator.
+ 2019-11-11  Claudiu Zissulescu <claziss@gmail.com>
  
- 2018-06-20  Martin Liska  <mliska@suse.cz>
+       * config/arc/arc.md (movsi_ne): Reorder instruction variants and
+       use new register constraint letters.
  
-       * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
-         Change default ratio from 10 to 8.
+ 2019-11-11  Claudiu Zissulescu <claziss@gmail.com>
  
- 2018-06-20  Martin Liska  <mliska@suse.cz>
+       * config/arc/arc.c (arc_legitimize_pic_address): Consider UNSPECs
+       as well, if interesting recover the symbol and re-legitimize the
+       pic address.
  
-       * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
-         New.
-       (bit_test_cluster::find_bit_tests): Likewise.
-       (switch_decision_tree::analyze_switch_statement): Find clusters.
-       * tree-switch-conversion.h (struct jump_table_cluster): Document
-         hierarchy.
- 2018-06-20  Martin Liska  <mliska@suse.cz>
-       * tree-switch-conversion.c (switch_conversion::collect):
-         Record m_uniq property.
-       (switch_conversion::expand): Bail out for special conditions.
-       (group_cluster::~group_cluster): New.
-       (group_cluster::group_cluster): Likewise.
-       (group_cluster::dump): Likewise.
-       (jump_table_cluster::emit): New.
-       (switch_decision_tree::fix_phi_operands_for_edges): New.
-       (struct case_node): Remove struct.
-       (jump_table_cluster::can_be_handled): New.
-       (case_values_threshold): Moved to header.
-       (reset_out_edges_aux): Likewise.
-       (jump_table_cluster::is_beneficial): New.
-       (bit_test_cluster::can_be_handled): Likewise.
-       (add_case_node): Remove.
-       (bit_test_cluster::is_beneficial): New.
-       (case_bit_test::cmp): New.
-       (bit_test_cluster::emit): New.
-       (expand_switch_as_decision_tree_p): Remove.
-       (bit_test_cluster::hoist_edge_and_branch_if_true): New.
-       (fix_phi_operands_for_edge): Likewise.
-       (switch_decision_tree::analyze_switch_statement): New.
-       (compute_cases_per_edge): Move ...
-       (switch_decision_tree::compute_cases_per_edge): ... here.
-       (try_switch_expansion): Likewise.
-       (switch_decision_tree::try_switch_expansion): Likewise.
-       (record_phi_operand_mapping): Likewise.
-       (switch_decision_tree::record_phi_operand_mapping): Likewise.
-       (emit_case_decision_tree): Likewise.
-       (switch_decision_tree::emit): Likewise.
-       (balance_case_nodes): Likewise.
-       (switch_decision_tree::balance_case_nodes): Likewise.
-       (dump_case_nodes): Likewise.
-       (switch_decision_tree::dump_case_nodes): Likewise.
-       (emit_jump): Likewise.
-       (switch_decision_tree::emit_jump): Likewise.
-       (emit_cmp_and_jump_insns): Likewise.
-       (switch_decision_tree::emit_cmp_and_jump_insns): Likewise.
-       (emit_case_nodes): Likewise.
-       (switch_decision_tree::emit_case_nodes): Likewise.
-       (conditional_probability): Remove.
-       * tree-switch-conversion.h (enum cluster_type): New.
-       (PRINT_CASE): New.
-       (struct cluster): Likewise.
-       (cluster::cluster): Likewise.
-       (struct simple_cluster): Likewise.
-       (simple_cluster::simple_cluster): Likewise.
-       (struct group_cluster): Likewise.
-       (struct jump_table_cluster): Likewise.
-       (struct bit_test_cluster): Likewise.
-       (struct min_cluster_item): Likewise.
-       (struct case_tree_node): Likewise.
-       (case_tree_node::case_tree_node): Likewise.
-       (jump_table_cluster::case_values_threshold): Likewise.
-       (struct case_bit_test): Likewise.
-       (struct switch_decision_tree): Likewise.
-       (struct switch_conversion): Likewise.
-       (switch_decision_tree::reset_out_edges_aux): Likewise.
- 2018-06-20  Martin Liska  <mliska@suse.cz>
-       * tree-switch-conversion.c (MAX_CASE_BIT_TESTS): Remove.
-       (hoist_edge_and_branch_if_true): Likewise.
-       (expand_switch_using_bit_tests_p): Likewise.
-       (struct case_bit_test): Likewise.
-       (case_bit_test_cmp): Likewise.
-       (emit_case_bit_tests): Likewise.
-       (switch_conversion::switch_conversion): New class.
-       (struct switch_conv_info): Remove old struct.
-       (collect_switch_conv_info): More to ...
-       (switch_conversion::collect): ... this.
-       (check_range): Likewise.
-       (switch_conversion::check_range): Likewise.
-       (check_all_empty_except_final): Likewise.
-       (switch_conversion::check_all_empty_except_final): Likewise.
-       (check_final_bb): Likewise.
-       (switch_conversion::check_final_bb): Likewise.
-       (create_temp_arrays): Likewise.
-       (switch_conversion::create_temp_arrays): Likewise.
-       (free_temp_arrays): Likewise.
-       (gather_default_values): Likewise.
-       (switch_conversion::gather_default_values): Likewise.
-       (build_constructors): Likewise.
-       (switch_conversion::build_constructors): Likewise.
-       (constructor_contains_same_values_p): Likewise.
-       (switch_conversion::contains_same_values_p): Likewise.
-       (array_value_type): Likewise.
-       (switch_conversion::array_value_type): Likewise.
-       (build_one_array): Likewise.
-       (switch_conversion::build_one_array): Likewise.
-       (build_arrays): Likewise.
-       (switch_conversion::build_arrays): Likewise.
-       (gen_def_assigns): Likewise.
-       (switch_conversion::gen_def_assigns): Likewise.
-       (prune_bbs): Likewise.
-       (switch_conversion::prune_bbs): Likewise.
-       (fix_phi_nodes): Likewise.
-       (switch_conversion::fix_phi_nodes): Likewise.
-       (gen_inbound_check): Likewise.
-       (switch_conversion::gen_inbound_check): Likewise.
-       (process_switch): Use the newly created class.
-       (switch_conversion::expand): New.
-       (switch_conversion::~switch_conversion): New.
-       * tree-switch-conversion.h: New file.
- 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vectorizer.h (NUM_PATTERNS, vect_recog_func_ptr): Move to
-       tree-vect-patterns.c.
-       * tree-vect-patterns.c (vect_supportable_direct_optab_p): New function.
-       (vect_recog_dot_prod_pattern): Use it.  Remove the type_in argument.
-       (vect_recog_sad_pattern): Likewise.
-       (vect_recog_widen_sum_pattern): Likewise.
-       (vect_recog_pow_pattern): Likewise.  Check for a null vectype.
-       (vect_recog_widen_shift_pattern): Remove the type_in argument.
-       (vect_recog_rotate_pattern): Likewise.
-       (vect_recog_mult_pattern): Likewise.
-       (vect_recog_vector_vector_shift_pattern): Likewise.
-       (vect_recog_divmod_pattern): Likewise.
-       (vect_recog_mixed_size_cond_pattern): Likewise.
-       (vect_recog_bool_pattern): Likewise.
-       (vect_recog_mask_conversion_pattern): Likewise.
-       (vect_try_gather_scatter_pattern): Likewise.
-       (vect_recog_widen_mult_pattern): Likewise.  Check for a null vectype.
-       (vect_recog_over_widening_pattern): Likewise.
-       (vect_recog_gather_scatter_pattern): Likewise.
-       (vect_recog_func_ptr): Move from tree-vectorizer.h
-       (vect_vect_recog_func_ptrs): Move further down the file.
-       (vect_recog_func): Likewise.  Remove the third argument.
-       (NUM_PATTERNS): Define based on vect_vect_recog_func_ptrs.
-       (vect_pattern_recog_1): Expect the pattern function to do any
-       necessary target tests.  Also expect it to provide a vector type.
-       Remove the type_in handling.
- 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
-       * tree-vect-patterns.c (vect_pattern_detected): New function.
-       (vect_recog_dot_prod_patternm, vect_recog_sad_pattern)
-       (vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern)
-       (vect_recog_over_widening_pattern, vect_recog_widen_shift_pattern
-       (vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern)
-       (vect_recog_mult_pattern, vect_recog_divmod_pattern)
-       (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
-       (vect_recog_mask_conversion_pattern)
-       (vect_try_gather_scatter_pattern): Likewise.
+ 2019-11-11  Martin Liska  <mliska@suse.cz>
  
- 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
+       * dbgcnt.def (DEBUG_COUNTER): Sort counters
+       alphabetically.
  
-       * tree-vect-patterns.c (vect_get_internal_def): New function.
-       (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
-       (vect_recog_vector_vector_shift_pattern, check_bool_pattern)
-       (search_type_for_mask_1): Use it.
+ 2019-11-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
- 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-loop-manip.c (vect_do_peeling): Take epilogue gaps into
+       account when checking if there are enough iterations to vectorize
+       epilogue.
  
-       * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
-       redundant WIDEN_SUM_EXPR handling.
-       (vect_recog_sad_pattern): Likewise.
+ 2019-11-11  Tobias Burnus  <tobias@codesourcery.com>
+           Kwok Cheung Yeung  <kcy@codesourcery.com>
  
- 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
+       * langhooks-def.h (LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT):
+       Renamed from LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT; update define.
+       (LANG_HOOKS_DECLS): Rename also here.
+       * langhooks.h (lang_hooks_for_decls): Rename
+       omp_is_optional_argument to omp_check_optional_argument; take
+       additional bool argument.
+       * omp-general.h (omp_check_optional_argument): Likewise.
+       * omp-general.h (omp_check_optional_argument): Likewise.
+       * omp-low.c (lower_omp_target): Update calls; handle absent
+       Fortran optional arguments with USE_DEVICE_ADDR/USE_DEVICE_PTR.
  
-       * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
-       redundant check that the types of a PLUS_EXPR or MULT_EXPR agree.
-       (vect_recog_sad_pattern): Likewise PLUS_EXPR, ABS_EXPR and MINUS_EXPR.
-       (vect_recog_widen_mult_pattern): Likewise MULT_EXPR.
-       (vect_recog_widen_sum_pattern): Likewise PLUS_EXPR.
+ 2019-11-11  H.J. Lu  <hjl.tools@gmail.com>
  
- 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
+       PR target/87833
+       * config/i386/intelmic-mkoffload.c (prepare_target_image): Put
+       -fPIC and -shared the last to create offload image.
  
-       * tree-vect-stmts.c (vectorizable_call): Make sure that we
-       use the stmt_vec_info of the original bb statement for the
-       new zero assignment, even if the call is part of a pattern.
+ 2019-11-11  Thomas Schwinge  <thomas@codesourcery.com>
  
- 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
+       * gimplify.c (gimplify_scan_omp_clauses): Assert 'offset2' instead
+       of 'offset'.
  
-       * tree-vectorizer.h (_stmt_vec_info): Note above pattern_def_seq
-       that the sequence is attached to the original statement rather
-       than the pattern statement.
-       * tree-vect-loop.c (vect_determine_vf_for_stmt): Take the
-       PATTERN_DEF_SEQ from the original statement rather than
-       the main pattern statement.
-       * tree-vect-stmts.c (free_stmt_vec_info): Likewise.
-       * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise.
-       (vect_mark_pattern_stmts): Don't copy the PATTERN_DEF_SEQ.
+       * Makefile.in (LANG_CONFIGUREFRAGS): Define.
+       (config.status): Use/depend on it.
+       * configure.ac (all_lang_configurefrags): Track, 'AC_SUBST'.
+       * configure: Regenerate.
  
- 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 2019-11-11  Jiufu Guo  <guojiufu@linux.ibm.com>
  
-       * tree-vect-stmts.c (vect_analyze_stmt): Move the handling of pattern
-       definition statements before the early exit for statements that aren't
-       live or relevant.
-       * tree-vect-loop.c (vect_transform_loop_stmt): New function,
-       split out from...
-       (vect_transform_loop): ...here.  Process pattern definition
-       statements without first checking whether the main pattern
-       statement is live or relevant.
+       PR tree-optimization/88760
+       * gcc/config/rs6000/rs6000.opt (-munroll-only-small-loops): New option.
+       * gcc/common/config/rs6000/rs6000-common.c
+       (rs6000_option_optimization_table) [OPT_LEVELS_2_PLUS_SPEED_ONLY]:
+       Turn on -funroll-loops and -munroll-only-small-loops.
+       [OPT_LEVELS_ALL]: Turn off -fweb and -frename-registers.
+       * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
+       set of PARAM_MAX_UNROLL_TIMES and PARAM_MAX_UNROLLED_INSNS.
+       Turn off -munroll-only-small-loops for explicit -funroll-loops.
+       (TARGET_LOOP_UNROLL_ADJUST): Add loop unroll adjust hook.
+       (rs6000_loop_unroll_adjust): Define it.  Use -munroll-only-small-loops.
  
- 2018-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 2019-11-11  Kewen Lin  <linkw@gcc.gnu.org>
  
-       * tree-cfgcleanup.c (tree_forwarder_block_p): Do not return false at
-       -O0 if the locus represent UNKNOWN_LOCATION but have different values.
+       * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
+       Make scalar_load, vector_load, unaligned_load and
+       vector_gather_load cost more to conform hardware latency and
+       insn cost settings.
  
- 2018-06-19  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 2019-11-10  Iain Sandoe  <iain@sandoe.co.uk>
  
-       * config/rs6000/rs6000-string.c (select_block_compare_mode): Check
-       TARGET_EFFICIENT_OVERLAPPING_UNALIGNED here instead of in caller.
-       (do_and3, do_and3_mask, do_compb3, do_rotl3): New functions.
-       (expand_block_compare): Change select_block_compare_mode call.
-       (expand_strncmp_align_check): Use new functions, fix comment.
-       (emit_final_str_compare_gpr): New function.
-       (expand_strn_compare): Refactor and clean up code.
-       * config/rs6000/vsx.md (vsx_mov<mode>_64bit): Remove *.
+       * config/darwin.h (MACHO_SYMBOL_FLAG_LINKER_VIS): New.
+       (MACHO_SYMBOL_LINKER_VIS_P): New.
  
- 2018-06-19  Tony Reix  <tony.reix@atos.com>
-           Damien Bergamini  <damien.bergamini@atos.com>
-           David Edelsohn  <dje.gcc@gmail.com>
+ 2019-11-10  Kwok Cheung Yeung  <kcy@codesourcery.com>
  
-       * collect2.c (static_obj): New variable.
-       (static_libs): New variable.
-       (is_in_list): Uncomment declaration.
-       (main): Track AIX libraries linked statically.
-       (is_in_list): Uncomment definition.
-       (scan_prog_file): Don't add AIX shared libraries initializer
-       to constructor list if linking statically.
+       * lra-spills.c (assign_spill_hard_regs): Do not spill into
+       registers in eliminable_regset.
  
- 2018-06-19  Max Filippov  <jcmvbkbc@gmail.com>
+ 2019-11-10  Jan Hubicka  <hubicka@ucw.cz>
  
-       * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec
-       constant.
-       (allocate_stack, frame_blockage, *frame_blockage): New patterns.
+       * ipa-inline.c (compute_uninlined_call_time,
+       compute_inlined_call_time): Take edge frequency as
+       parameter rather than computing it by itself.
+       (big_speedup_p, edge_badness): Manually CSE sreal
+       frequency calculations.
  
- 2018-06-19  Jan Hubicka  <hubicka@ucw.cz>
+ 2019-11-10  Jan Hubicka  <hubicka@ucw.cz>
  
-       * tree.c (find_decls_types_r): Remove all non-VAR_DECLs from
-       blocks.
+       * profile-count.c (profile_count::to_sreal_scale): Short circuit
+       case where profiles are same.
  
- 2018-06-19  Martin Liska  <mliska@suse.cz>
+ 2019-11-10  Jan Hubicka  <hubicka@ucw.cz>
  
-       * config/i386/i386.c (ix86_can_inline_p): Do not use
-         ipa_fn_summaries::get_create.
-       * ipa-cp.c (ipcp_cloning_candidate_p): Replace get_create with
-         get.
-       (devirtualization_time_bonus): Likewise.
-       (ipcp_propagate_stage): Likewise.
-       * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
-       (edge_set_predicate): Likewise.
-       (evaluate_conditions_for_known_args): Likewise.
-       (evaluate_properties_for_edge): Likewise.
-       (ipa_call_summary::reset): Tranform to ...
-       (ipa_call_summary::~ipa_call_summary): ... this.
-       (ipa_fn_summary::reset): Transform to ...
-       (ipa_fn_summary::~ipa_fn_summary): ... this.
-       (ipa_fn_summary_t::remove): Rename to ...
-       (ipa_fn_summary_t::remove_callees): ... this.
-       (ipa_fn_summary_t::duplicate): Use placement new
-         instead of memory copy.
-       (ipa_call_summary_t::duplicate): Likewise.
-       (ipa_call_summary_t::remove): Remove.
-       (dump_ipa_call_summary): Change get_create to get.
-       (ipa_dump_fn_summary): Dump only when summary exists.
-       (analyze_function_body): Use symbol_summary::get instead
-         of get_create.
-       (compute_fn_summary): Likewise.
-       (estimate_edge_devirt_benefit): Likewise.
-       (estimate_edge_size_and_time): Likewise.
-       (inline_update_callee_summaries): Likewise.
-       (remap_edge_change_prob): Likewise.
-       (remap_edge_summaries): Likewise.
-       (ipa_merge_fn_summary_after_inlining): Likewise.
-       (write_ipa_call_summary): Likewise.
-       (ipa_fn_summary_write): Likewise.
-       (ipa_free_fn_summary): Likewise.
-       * ipa-fnsummary.h (struct GTY): Add new ctor and copy ctor.
-       (struct ipa_call_summary): Likewise.
-       * ipa-icf.c (sem_function::merge): Use symbol_summary::get instead
-         of get_create.
-       * ipa-inline-analysis.c (do_estimate_edge_time): Likewise.
-       (estimate_size_after_inlining): Likewise.
-       (estimate_growth): Likewise.
-       (growth_likely_positive): Likewise.
-       * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
-       (inline_call): Likewise.
-       * ipa-inline.c (caller_growth_limits): Likewise.
-       (can_inline_edge_p): Likewise.
-       (can_inline_edge_by_limits_p): Likewise.
-       (compute_uninlined_call_time): Likewise.
-       (compute_inlined_call_time): Likewise.
-       (want_inline_small_function_p): Likewise.
-       (edge_badness): Likewise.
-       (update_caller_keys): Likewise.
-       (update_callee_keys): Likewise.
-       (inline_small_functions): Likewise.
-       (inline_to_all_callers_1): Likewise.
-       (dump_overall_stats): Likewise.
-       (early_inline_small_functions): Likewise.
-       (early_inliner): Likewise.
-       * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
-       * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
-       * ipa-pure-const.c (malloc_candidate_p): Likewise.
-       * ipa-split.c (execute_split_functions): Likewise.
-       * symbol-summary.h: Likewise.
-       * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
- 2018-06-19  Richard Biener  <rguenther@suse.de>
-       * tree-vectorizer.c (try_vectorize_loop_1): Split out of ...
-       (vectorize_loops): ... here.  Fix dbgcnt handling.
-       (try_vectorize_loop): Wrap try_vectorize_loop_1.
- 2018-06-19  Segher Boessenkool  <segher@kernel.crashing.org>
-       PR target/86197
-       * config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An
-       ieee128 argument takes up only one (vector) register, not two (floating
-       point) registers.
- 2018-06-19  Eric Botcazou  <ebotcazou@adacore.com>
-       * gimplify.c (gimplify_init_constructor): Really never clear for an
-       incomplete constructor if CONSTRUCTOR_NO_CLEARING is set.
- 2018-06-19  Richard Biener  <rguenther@suse.de>
-       PR tree-optimization/86179
-       * tree-vect-patterns.c (vect_pattern_recog_1): Clean up
-       after failed recognition.
- 2018-06-18  Martin Sebor  <msebor@redhat.com>
-       PR middle-end/85602
-       * calls.c (maybe_warn_nonstring_arg): Handle strncat.
-       * tree-ssa-strlen.c (is_strlen_related_p): Make extern.
-       Handle integer subtraction.
-       (maybe_diag_stxncpy_trunc): Handle nonstring source arguments.
-       * tree-ssa-strlen.h (is_strlen_related_p): Declare.
- 2018-06-18  David Malcolm  <dmalcolm@redhat.com>
-       * config/frv/frv-protos.h (frv_ifcvt_modify_insn): Strengthen 3rd
-       param from rtx to rtx_insn *.
-       * config/frv/frv.c (frv_ifcvt_add_insn): Likewise for "insn"
-       param.
-       (frv_ifcvt_modify_insn): Likwise.
-       (frv_ifcvt_modify_final): Likwise for local "existing_insn",
-       adding an as_a <rtx_insn *> cast.  Likewise for local "insn".
-       * config/mips/mips.c (r10k_insert_cache_barriers): Add an
-       as_a <rtx_insn *> cast to local "unprotected_region" once
-       it's been established that it's not NULL or pc_rtx.
-       * config/nds32/nds32-relax-opt.c (nds32_group_insns): Strengthen
-       param "sethi" from rtx to rtx_insn *.
-       (nds32_group_float_insns): Likewise for param "insn".
-       * config/vax/vax-protos.h (vax_output_int_add): Likewise for 1st
-       param.
-       (vax_output_int_subtract): Likewise.
-       * config/vax/vax.c (vax_output_int_add): Likewise for param
-       "insn".
-       (vax_output_int_subtract): Likewise.
-       * emit-rtl.c (set_insn_deleted): Likewise, removing cast.
-       (emit_pattern_after): Likewise for param "after".
-       (emit_insn_after): Likewise.
-       (emit_jump_insn_after): Likewise.
-       (emit_call_insn_after): Likewise.
-       (emit_debug_insn_after): Likewise.
-       (emit_pattern_before): Likewise for param "before".
-       (emit_insn_before): Likewise.
-       (emit_jump_insn_before): Likewise.
-       * final.c (get_insn_template): Likewise for param "insn", removing
-       a cast.
-       * output.h (get_insn_template): Likewise for 2nd param.
-       * rtl.h (emit_insn_before): Likewise.
-       (emit_jump_insn_before): Likewise.
-       (emit_debug_insn_before_noloc): Likewise.
-       (emit_insn_after): Likewise.
-       (emit_jump_insn_after): Likewise.
-       (emit_call_insn_after): Likewise.
-       (emit_debug_insn_after): Likewise.
-       (set_insn_deleted): Likewise for param.
- 2018-06-18  Michael Meissner  <meissner@linux.ibm.com>
-       PR target/85358
-       * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit
-       floating point modes, so that IFmode is numerically greater than
-       TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE
-       to declare the ordering.  This prevents IFmode from being
-       converted to TFmode when long double is IEEE 128-bit on an ISA 3.0
-       machine.  Include rs6000-modes.h to share the fractional values
-       between genmodes* and the rest of the compiler.
-       (IFmode): Likewise.
-       (KFmode): Likewise.
-       (TFmode): Likewise.
-       * config/rs6000/rs6000-modes.h: New file.
-       * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the
-       meaning of rs6000_long_double_size so that 126..128 selects an
-       appropriate 128-bit floating point type.
-       (rs6000_option_override_internal): Likewise.
-       * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h.
-       (TARGET_LONG_DOUBLE_128): Change the meaning of
-       rs6000_long_double_size so that 126..128 selects an appropriate
-       128-bit floating point type.
-       (LONG_DOUBLE_TYPE_SIZE): Update comment.
-       * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the
-       source and destination to match the standard usage.
-       (truncifkf2): Likewise.
-       (copysign<mode>3, IEEE iterator): Rework copysign of float128 on
-       ISA 2.07 to use an explicit clobber, instead of passing in a
-       temporary.
-       (copysign<mode>3_soft): Likewise.
+       * cgraph.c (cgraph_edge::maybe_hot_p): Do not use sreal_frequency.
  
- 2018-06-18  David Malcolm  <dmalcolm@redhat.com>
+ 2019-11-10  Jan Hubicka  <hubicka@ucw.cz>
  
-       * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
-       Replace dump_printf_loc call with DUMP_VECT_SCOPE.
-       (vect_slp_analyze_instance_dependence): Likewise.
-       (vect_enhance_data_refs_alignment): Likewise.
-       (vect_analyze_data_refs_alignment): Likewise.
-       (vect_slp_analyze_and_verify_instance_alignment
-       (vect_analyze_data_ref_accesses): Likewise.
-       (vect_prune_runtime_alias_test_list): Likewise.
-       (vect_analyze_data_refs): Likewise.
-       * tree-vect-loop-manip.c (vect_update_inits_of_drs): Likewise.
-       * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
-       (vect_analyze_scalar_cycles_1): Likewise.
-       (vect_get_loop_niters): Likewise.
-       (vect_analyze_loop_form_1): Likewise.
-       (vect_update_vf_for_slp): Likewise.
-       (vect_analyze_loop_operations): Likewise.
-       (vect_analyze_loop): Likewise.
-       (vectorizable_induction): Likewise.
-       (vect_transform_loop): Likewise.
-       * tree-vect-patterns.c (vect_pattern_recog): Likewise.
-       * tree-vect-slp.c (vect_analyze_slp): Likewise.
-       (vect_make_slp_decision): Likewise.
-       (vect_detect_hybrid_slp): Likewise.
-       (vect_slp_analyze_operations): Likewise.
-       (vect_slp_bb): Likewise.
-       * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise.
-       (vectorizable_bswap): Likewise.
-       (vectorizable_call): Likewise.
-       (vectorizable_simd_clone_call): Likewise.
-       (vectorizable_conversion): Likewise.
-       (vectorizable_assignment): Likewise.
-       (vectorizable_shift): Likewise.
-       (vectorizable_operation): Likewise.
-       * tree-vectorizer.h (DUMP_VECT_SCOPE): New macro.
- 2018-06-18  Martin Sebor  <msebor@redhat.com>
-       PR tree-optimization/81384
-       * builtin-types.def (BT_FN_SIZE_CONST_STRING_SIZE): New.
-       * builtins.c (expand_builtin_strnlen): New function.
-       (expand_builtin): Call it.
-       (fold_builtin_n): Avoid setting TREE_NO_WARNING.
-       * builtins.def (BUILT_IN_STRNLEN): New.
-       * calls.c (maybe_warn_nonstring_arg): Handle BUILT_IN_STRNLEN.
-       Warn for bounds in excess of maximum object size.
-       * tree-ssa-strlen.c (maybe_set_strlen_range): Return tree representing
-       single-value ranges.  Handle strnlen.
-       (handle_builtin_strlen): Handle strnlen.
-       (strlen_check_and_optimize_stmt): Same.
-       * doc/extend.texi (Other Builtins): Document strnlen.
- 2018-06-18  Maya Rashish  <coypu@sdf.org>
-       * config/alpha/openbsd.h (TARGET_DEFAULT): Define.
-       (LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
-       (INTMAX_TYPE, UINTMAX_TYPE, WINT_TYPE): Likewise.
-       * config/alpha/elf.h (STARTFILE_SPEC, ENDFILE_SPEC): Move from
-       here to ...
-       * config/alpha/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Here.
- 2018-06-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
-       * tree.c (escaped_string::escape): Replace cast to char * by
-       const_cast<char *> (unescaped).
- 2018-06-18  Nick Clifton  <nickc@redhat.com>
-       PR 84195
-       * tree.c (escaped_string): New class.  Converts an unescaped
-       string into its escaped equivalent.
-       (warn_deprecated_use): Use the new class to convert the
-       deprecation message, if present.
-       (test_escaped_strings): New self test.
-       (test_c_tests): Add test_escaped_strings.
-       * doc/extend.texi (deprecated): Add a note that the
-       deprecation message is affected by the -fmessage-length
-       option, and that control characters will be escaped.
-       (#pragma GCC error): Document this pragma.
-       (#pragma GCC warning): Likewise.
-       * doc/invoke.texi (-fmessage-length): Document this option's
-       effect on the #warning and #error preprocessor directives and
-       the deprecated attribute.
- 2018-06-18  Eric Botcazou  <ebotcazou@adacore.com>
-       * tree.c (decl_value_expr_lookup): Revert latest change.
-       (decl_value_expr_insert): Likewise.
- 2018-06-17  Eric Botcazou  <ebotcazou@adacore.com>
-       * gimplify.c (nonlocal_vlas): Delete.
-       (nonlocal_vla_vars): Likewise.
-       (gimplify_var_or_parm_decl): Do not add debug VAR_DECLs for non-local
-       referenced VLAs.
-       (gimplify_body): Do not create and destroy nonlocal_vlas.
-       * tree-nested.c: Include diagnostic.h.
-       (use_pointer_in_frame): Tweak.
-       (lookup_field_for_decl): Add assertion and declare the transformation.
-       (convert_nonlocal_reference_op) <PARM_DECL>: Rework and issue an
-       internal error when the reference is in a wrong context.  Do not
-       create a debug decl by default.
-       (note_nonlocal_block_vlas): Delete.
-       (convert_nonlocal_reference_stmt) <GIMPLE_BIND>: Do not call it.
-       (convert_local_reference_op) <PARM_DECL>: Skip the frame decl.  Do not
-       create a debug decl by default.
-       (convert_gimple_call) <GIMPLE_CALL>: Issue an internal error when the
-       call is in a wrong context.
-       (fixup_vla_decls): New function.
-       (finalize_nesting_tree_1): Adjust comment.  Call fixup_vla_decls if no
-       debug variables were created.
-       * tree.c (decl_value_expr_lookup): Add checking assertion.
-       (decl_value_expr_insert): Likewise.
- 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
-       PR middle-end/82479
-       * ipa-fnsummary.c (will_be_nonconstant_expr_predicate): Handle CALL_EXPR.
-       * tree-scalar-evolution.c (interpret_expr): Likewise.
-       (expression_expensive_p): Likewise.
-       * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Likewise.
-       * tree-ssa-loop-niter.c (number_of_iterations_popcount): New.
-       (number_of_iterations_exit_assumptions): Use number_of_iterations_popcount.
-       (ssa_defined_by_minus_one_stmt_p): New.
- 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
-       PR middle-end/64946
-       * cfgexpand.c (expand_debug_expr): Hande ABSU_EXPR.
-       * config/i386/i386.c (ix86_add_stmt_cost): Likewise.
-       * dojump.c (do_jump): Likewise.
-       * expr.c (expand_expr_real_2): Check operand type's sign.
-       * fold-const.c (const_unop): Handle ABSU_EXPR.
-       (fold_abs_const): Likewise.
-       * gimple-pretty-print.c (dump_unary_rhs): Likewise.
-       * gimple-ssa-backprop.c (backprop::process_assign_use): Likesie.
-       (strip_sign_op_1): Likesise.
-       * match.pd: Add new pattern to generate ABSU_EXPR.
-       * optabs-tree.c (optab_for_tree_code): Handle ABSU_EXPR.
-       * tree-cfg.c (verify_gimple_assign_unary): Likewise.
-       * tree-eh.c (operation_could_trap_helper_p): Likewise.
-       * tree-inline.c (estimate_operator_cost): Likewise.
-       * tree-pretty-print.c (dump_generic_node): Likewise.
-       * tree-vect-patterns.c (vect_recog_sad_pattern): Likewise.
-       * tree.def (ABSU_EXPR): New.
- 2018-06-16  Jakub Jelinek  <jakub@redhat.com>
-       PR middle-end/86095
-       * common.opt (Wunsafe-loop-optimizations): Add Ignore, remove Var,
-       documented as preserved for backward compatibility only.
-       * doc/invoke.texi: Remove -Wunsafe-loop-optimizations documentation.
-       PR rtl-optimization/86108
-       * bb-reorder.c (create_forwarder_block): Renamed to ...
-       (create_eh_forwarder_block): ... this.  Split OLD_BB after labels and
-       jump from new landing pad to the second part.
-       (sjlj_fix_up_crossing_landing_pad, dw2_fix_up_crossing_landing_pad):
-       Adjust callers.
- 2018-06-15  Jakub Jelinek  <jakub@redhat.com>
-       PR middle-end/85878
-       * expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P
-       check from first store_expr, use to_mode instead of GET_MODE (to_rtx).
-       Only call store_expr for halves if the mode is the same.
-       PR middle-end/86123
-       * match.pd ((X / Y) == 0 -> X < Y): Don't transform complex divisions.
-       Fix up comment formatting.
- 2018-06-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
-       * typed-splay-tree.h (typed_splay_tree::remove): New function.
-       (typed_splay_tree::closure,
-       typed_splay_tree::inner_foreach_fn, typed_splay_tree::m_inner): Deleted.
-       (typed_splay_tree::typed_splay_tree,
-       typed_splay_tree::operator =): Declared private.
-       (typed_splay_tree::splay_tree_key, typed_splay_tree::splay_tree_value,
-       typed_splay_tree::splay_tree_node_s, typed_splay_tree::KDEL,
-       typed_splay_tree::VDEL, typed_splay_tree::splay_tree_delete_helper,
-       typed_splay_tree::rotate_left, typed_splay_tree::rotate_right,
-       typed_splay_tree::splay_tree_splay,
-       typed_splay_tree::splay_tree_foreach_helper,
-       typed_splay_tree::splay_tree_insert,
-       typed_splay_tree::splay_tree_remove,
-       typed_splay_tree::splay_tree_lookup,
-       typed_splay_tree::splay_tree_predecessor,
-       typed_splay_tree::splay_tree_successor,
-       typed_splay_tree::splay_tree_min,
-       typed_splay_tree::splay_tree_max): Took over from splay-tree.c/.h.
-       (typed_splay_tree::root, typed_splay_tree::comp,
-       typed_splay_tree::delete_key,
-       typed_splay_tree::delete_value): New data members.
-       * typed-splay-tree.c (selftest::test_str_to_int): Add a test for
-       typed_splay_tree::remove.
- 2018-06-15  Matthew Fortune  <matthew.fortune@mips.com>
-       * config/mips/mips.h (ASM_SPEC): Pass through -mcrc, -mno-crc,
-       -mginv and -mno-ginv to the assembler.
-       * config/mips/mips.opt (-mcrc): New option.
-       (-mginv): Likewise.
-       * doc/invoke.text (-mcrc): Document.
-       (-mginv): Likewise.
- 2018-06-15  Nick Clifton  <nickc@redhat.com>
-       PR 84195
-       * tree.c (escaped_string): New class.  Converts an unescaped
-       string into its escaped equivalent.
-       (warn_deprecated_use): Use the new class to convert the
-       deprecation message, if present.
-       (test_escaped_strings): New self test.
-       (test_c_tests): Add test_escaped_strings.
-       * doc/extend.texi (deprecated): Add a note that the
-       deprecation message is affected by the -fmessage-length
-       option, and that control characters will be escaped.
-       (#pragma GCC error): Document this pragma.
-       (#pragma GCC warning): Likewise.
-       * doc/invoke.texi (-fmessage-length): Document this option's
-       effect on the #warning and #error preprocessor directives and
-       the deprecated attribute.
- 2018-06-15  Richard Biener  <rguenther@suse.de>
-       * tree-vect-slp.c (vect_slp_bb): Dump MSG_OPTIMIZED_LOCATIONS
-       here, also noting vector size used.
-       * tree-vectorizer.c (vectorize_loops): Adjust.  Note vector
-       size used in MSG_OPTIMIZED_LOCATIONS dump.
-       (pass_slp_vectorize::execute): Adjust.
- 2018-06-15  Claudiu Zissulescu  <claziss@synopsys.com>
-       PR target/85968
-       * config/arc/arc.c (arc_return_address_register): Fix
-       if-condition.
- 2018-06-15  Richard Biener  <rguenther@suse.de>
-       PR middle-end/86159
-       * tree-cfg.c (gimplify_build3): Do not strip sign conversions,
-       leave useless conversion stripping to force_gimple_operand_gsi.
-       (gimplify_build2): Likewise.
-       (gimplify_build1): Likewise.
- 2018-06-15  Richard Biener  <rguenther@suse.de>
-       PR middle-end/86076
-       * tree-cfg.c (move_stmt_op): unshare invariant addresses
-       before adjusting their block.
- 2018-06-15  Sebastian Huber  <sebastian.huber@embedded-brains.de>
-       * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom
-       multilibs for *-*-rtems*.
-       * config/riscv/t-rtems: New file.
- 2018-06-14  Jakub Jelinek  <jakub@redhat.com>
-       PR middle-end/86122
-       * match.pd ((A +- CST1) +- CST2): Punt if last resort
-       unsigned_type_for returns NULL.
-       PR target/85945
-       * lower-subreg.c (find_decomposable_subregs): Don't decompose float
-       subregs of multi-word pseudos unless the float mode has word size.
- 2018-06-14  Richard Biener  <rguenther@suse.de>
-       PR middle-end/86139
-       * tree-vect-generic.c (build_word_mode_vector_type): Remove
-       duplicate and harmful type_hash_canon.
-       * tree.c (type_hash_canon): Assert we didn't find ourselves.
- 2018-06-14  Richard Biener  <rguenther@suse.de>
-       PR ipa/86124
-       * tree-ssa-struct-alias.c (create_variable_info_for): Handle
-       NULL cgraph_node.
- 2018-06-14  Sebastian Huber  <sebastian.huber@embedded-brains.de>
-       * config/rtems.h (STDINT_LONG32): Define.
- 2018-06-13  Matthew Fortune  <matthew.fortune@mips.com>
-           Prachi Godbole  <prachi.godbole@imgtec.com>
-       * config/mips/mips-cpus.def: Define P6600.
-       * config/mips/mips-tables.opt: Regenerate.
-       * config/mips/mips.c (mips_ucbranch_type): New enum.
-       (mips_rtx_cost_data): Add support for P6600.
-       (mips_issue_rate): Likewise.
-       (mips_multipass_dfa_lookahead): Likewise.
-       (mips_avoid_hazard): Likewise.
-       (mips_reorg_process_insns): Likewise.
-       (mips_classify_branch_p6600): New function.
-       * config/mips/mips.h (TUNE_P6600): New define.
-       (MIPS_ISA_LEVEL_SPEC): Infer mips64r6 from p6600.
-       (ENABLE_LD_ST_PAIRS): Enable load/store bonding for p6600.
-       * config/mips/mips.md: Include p6600.md.
-       (processor): Add p6600.
-       * config/mips/p6600.md: New file.
-       * doc/invoke.texi: Add p6600 to supported architectures.
- 2018-06-13  Martin Sebor  <msebor@redhat.com>
-       PR tree-optimization/86114
-       * gimple-fold.c (gimple_fold_builtin_strlen): Only handle LHS
-       of integer types.
-       * tree-ssa-strlen.c (maybe_set_strlen_range): Same.
- 2018-06-13  Richard Biener  <rguenther@suse.de>
-       * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern):
-       Properly set vector type of the intermediate stmt.
-       * tree-vect-stmts.c (vectorizable_operation): The destination
-       var always has vectype_out type.
- 2018-06-13  Jeff Law  <law@redhat.com>
-       * config/rl78/rl78.c (move_elim_pass): Use TDF_NONE rather than
-       integer 0 for argument to print_rtl_with_bb.
-       (rl78_reorg): Likewise.
- 2018-06-13  David Malcolm  <dmalcolm@redhat.com>
-       * config/arc/arc.c (hwloop_optimize): Strengthen local "end_label"
-       from rtx to rtx_insn *.
-       * config/bfin/bfin.c (hwloop_optimize): Likewise for local
-       "label".
-       (add_sched_insns_for_speculation): Likewise for local "target",
-       converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
-       * config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels"
-       from rtx_insn ** to rtx_code_label **.
-       (reorg_emit_nops): Likewise.
-       (c6x_reorg): Likewise for local "call_labels".
-       * config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from
-       rtx to rtx_insn *.
-       * config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to
-       rtx_code_label *, adding safe_as_a <rtx_code_label *> casts to
-       the loops over LABEL_REFS.
-       (fixup_addr_diff_vecs): Add as_a <rtx_insn *> to usage of
-       braf_label.
-       (barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
-       (get_dest_uid): Strengthen param "label" from rtx to rtx_insn *.
-       (split_branches): Strengthen local "olabel" from rtx to
-       rtx_insn *, adding a safe_as_a cast.
-       * emit-rtl.c (next_real_insn): Strengthen param from "rtx"
-       to "rtx_insn *".
-       (add_insn_after): Likewise for first two params.
-       (add_insn_before): Likewise.
-       (remove_insn): Likewise for param.
-       (emit_pattern_before_noloc): Likewise for second and third params.
-       (emit_jump_insn_before_noloc): Convert NULL_RTX to NULL.
-       (emit_call_insn_before_noloc): Likewise.
-       (emit_debug_insn_before_noloc): Strengthen "before" param from "rtx"
-       to "rtx_insn *".
-       (emit_barrier_before): Likewise.
-       (emit_label_before): Strengthen "label" param from "rtx" to
-       "rtx_code_label *".  Strengthen "before" param from "rtx" to
-       "rtx_insn *".
-       (emit_insn_after_1): Strengthen "after" param from "rtx" to
-       "rtx_insn *".
-       (emit_pattern_after_noloc): Likewise.
-       (emit_insn_after_noloc): Likewise.
-       (emit_jump_insn_after_noloc): Likewise.
-       (emit_call_insn_after_noloc): Likewise.
-       (emit_debug_insn_after_noloc): Likewise.
-       (emit_barrier_after): Likewise.
-       (emit_label_after): Likewise for both params.
-       (emit_pattern_after_setloc): Likewise for "after" param.  Convert
-       "loc" param from "int" to "location_t".
-       (emit_insn_after_setloc): Likewise.
-       (emit_jump_insn_after_setloc): Likewise.
-       (emit_call_insn_after_setloc): Likewise.
-       (emit_debug_insn_after_setloc): Likewise.
-       (emit_pattern_before_setloc): Likewise for "before" param.  Convert
-       "loc" param from "int" to "location_t".
-       (emit_pattern_before): Convert NULL_RTX to NULL.
-       (emit_insn_before_setloc): Convert "loc" param from "int" to
-       "location_t".
-       (emit_jump_insn_before_setloc): Likewise.
-       (emit_call_insn_before_setloc): Likewise.
-       (emit_debug_insn_before_setloc): Strengthen "before" param from rtx to
-       rtx_insn *.  Convert "loc" param from "int" to "location_t".
-       * rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc,
-       emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
-       Convert 3rd param from "int" to "location_t".
-       (emit_barrier_before, emit_barrier_after, next_real_insn):
-       Strengthen param from rtx to rtx_insn *.
-       (emit_label_before): Strengthen 1st param from "rtx" to
-       "rtx_code_label *".  Strengthen 2nd param from "rtx" to
-       "rtx_insn *".
-       (emit_insn_after_noloc, emit_jump_insn_after_noloc,
-       emit_call_insn_after_noloc, emit_debug_insn_after_noloc):
-       Strengthen 2nd param from "rtx" to "rtx_insn *".
-       (emit_insn_after_setloc, emit_jump_insn_after_setloc)
-       emit_call_insn_after_setloc, emit_debug_insn_after_setloc):
-       Likewise. Convert 3rd param from "int" to "location_t".
-       (emit_label_after): Strengthen 1st param from "rtx" to
-       "rtx_code_label *".
-       (next_real_insn, remove_insn): Strengthen param from "rtx" to
-       "rtx_insn *".
-       (add_insn_before, add_insn_after): Strengthen 1st and 2nd params
-       from "rtx" to "rtx_insn *".
- 2018-06-13  Jan Hubicka  <hubicka@gcc.gnu.org>
-       * cgraph.c (cgraph_node::get_untransformed_body): Dump function
-       bodies streamed in with -Q.
-       * dumpfile.c (dump_files): Add lto-stream-out dump file.
-       * dumpfile.h (tree_dump_index): Add lto_stream_out.
-       * gimple-streamer-out.c: Include gimple-pretty-print.h
-       (output_bb): Dump stmts streamed.
-       * lto-section-out.c: Include print-tree.h
-       (lto_begin_section): Dump sections created.
-       (lto_output_decl_index): Dump decl encoded.
-       * lto-streamer-out.c: Include print-tree.h
-       (create_output_block): Dump output block created.
-       (DFS::DFS_write_tree_body): Dump DFS SCCs streamed.
-       (output_function): Dump function output.
-       (output_constructor): Dump constructor streamed.
-       (write_global_stream): Output indexes encoded.
-       (produce_asm_for_decls): Dump streams encoded.
-       * lto-streamer.c (streamer_dump_file): New global var.
-       * lto-streamer.h (streamer_dump_file): Declare.
-       * passes.c (ipa_write_summaries): Initialize streamer dump.
-       * varpool.c (varpool_node::get_constructor): Dump constructors streamed
-       in.
- 2018-06-13  Eric Botcazou  <ebotcazou@adacore.com>
-       PR target/86048
-       * config/i386/winnt.c (i386_pe_seh_cold_init): Do not emit negative
-       offsets for register save directives.  Emit a second batch of save
-       directives, if need be, when the function accesses prior frames.
- 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
-       * config/arc/fpu.md (fmasf4): Force operand to register.
-       (fnmasf4): Likewise.
- 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
-       * config/arc/arc-protos.h (arc_pad_return): Remove.
-       * config/arc/arc.c (machine_function): Remove force_short_suffix
-       and size_reason.
-       (arc_print_operand): Adjust printing of '&'.
-       (arc_verify_short): Remove conditional printing of short suffix.
-       (arc_final_prescan_insn): Remove reference to size_reason.
-       (pad_return): New function.
-       (arc_reorg): Call pad_return.
-       (arc_pad_return): Remove.
-       (arc_init_machine_status): Remove reference to force_short_suffix.
-       * config/arc/arc.md (vunspec): Add VUNSPEC_ARC_BLOCKAGE.
-       (attr length): When attribute iscompact is true force to 2
-       regardless; in the case of maybe check if we want to force the
-       instruction to have 4 bytes length.
-       (nopv): Change it to generate 4 byte long nop as well.
-       (blockage): New pattern.
-       (simple_return): Remove call to arc_pad_return.
-       (p_return_i): Likewise.
- 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
-       * config/arc/elf.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
- 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
-       * config/arc/builtins.def (SYNC): SYNC instruction is valid on all
-       ARC cores.
- 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
-       * config/arc/arc.c (atomic_exchangesi): EX instruction is default
-       for ARC700 and ARCv2.
- 2018-06-13  Chenghua Xu <paul.hua.gm@gmail.com>
-       PR target/86076
-       * config/mips/loongson.md (vec_setv4hi): Gen_lowpart for
-       operands[2] instead of operands[1].
- 2018-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
-       * lra-constraints.c (simplify_operand_subreg): In the paradoxical
-       case, check whether the outer register overlaps an unallocatable
-       register, not just whether it fits the required class.
- 2018-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
-       * poly-int.h (can_div_trunc_p): Add new overload in which all values
-       are poly_ints.
-       * alias.c (get_addr): Extend CONST_INT handling to poly_int_rtx_p.
-       (memrefs_conflict_p): Likewise.
-       (init_alias_analysis): Likewise.
-       * cfgexpand.c (expand_debug_expr): Likewise.
-       * combine.c (combine_simplify_rtx, force_int_to_mode): Likewise.
-       * cse.c (fold_rtx): Likewise.
-       * explow.c (adjust_stack, anti_adjust_stack): Likewise.
-       * expr.c (emit_block_move_hints): Likewise.
-       (clear_storage_hints, push_block, emit_push_insn): Likewise.
-       (store_expr_with_bounds, reduce_to_bit_field_precision): Likewise.
-       (emit_group_load_1): Use rtx_to_poly_int64 for group offsets.
-       (emit_group_store): Likewise.
-       (find_args_size_adjust): Use strip_offset.  Use rtx_to_poly_int64
-       to read the PRE/POST_MODIFY increment.
-       * calls.c (store_one_arg): Use strip_offset.
-       * rtlanal.c (rtx_addr_can_trap_p_1): Extend CONST_INT handling to
-       poly_int_rtx_p.
-       (set_noop_p): Use rtx_to_poly_int64 for the elements selected
-       by a VEC_SELECT.
-       * simplify-rtx.c (avoid_constant_pool_reference): Use strip_offset.
-       (simplify_binary_operation_1): Extend CONST_INT handling to
-       poly_int_rtx_p.
-       * var-tracking.c (compute_cfa_pointer): Take a poly_int64 rather
-       than a HOST_WIDE_INT.
-       (hard_frame_pointer_adjustment): Change from HOST_WIDE_INT to
-       poly_int64.
-       (adjust_mems, add_stores): Update accodingly.
-       (vt_canonicalize_addr): Track polynomial offsets.
-       (emit_note_insn_var_location): Likewise.
-       (vt_add_function_parameter): Likewise.
-       (vt_initialize): Likewise.
- 2018-06-12  Jeff Law  <law@redhat.com>
-       * config.gcc (alpha*-*-freebsd*): Remove.
-       * config/alpha/freebsd.h: Remove.
- 2018-06-12  David Malcolm  <dmalcolm@redhat.com>
-       PR other/69968
-       * spellcheck-tree.c (levenshtein_distance): Rename to...
-       (get_edit_distance): ...this, and update for underlying renaming.
-       * spellcheck-tree.h (levenshtein_distance): Rename to...
-       (get_edit_distance): ...this.
-       * spellcheck.c (levenshtein_distance): Rename to...
-       (get_edit_distance): ...this.  Convert from Levenshtein distance
-       to Damerau-Levenshtein distance by supporting transpositions of
-       adjacent characters.  Rename "v1" to "v_next" and "v0" to
-       "v_one_ago".
-       (selftest::levenshtein_distance_unit_test_oneway): Rename to...
-       (selftest::test_edit_distance_unit_test_oneway): ...this, and
-       update for underlying renaming.
-       (selftest::levenshtein_distance_unit_test): Rename to...
-       (selftest::test_get_edit_distance_unit): ...this, and update for
-       underlying renaming.
-       (selftest::test_find_closest_string): Add example from PR 69968
-       where transposition helps
-       (selftest::test_metric_conditions): Update for renaming.
-       (selftest::test_metric_conditions): Likewise.
-       (selftest::spellcheck_c_tests): Likewise.
-       * spellcheck.h (levenshtein_distance): Rename both overloads to...
-       (get_edit_distance): ...this.
-       (best_match::consider): Update for renaming.
- 2018-06-12  Martin Sebor  <msebor@redhat.com>
-       PR tree-optimization/85259
-       * builtins.c (compute_objsize): Handle constant offsets.
-       * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return
-       true iff a warning has been issued.
-       * gimple.h (gimple_nonartificial_location): New function.
-       * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Call
-       gimple_nonartificial_location and handle -Wno-system-headers.
-       (handle_builtin_stxncpy): Same.
+       * ipa-prop.c (ipa_propagate_indirect_call_infos): Remove ipa edge
+       args summaries of inlined edge unless it holds info about
+       described reference.
  
- 2018-06-12  Martin Sebor  <msebor@redhat.com>
+ 2019-11-10  Segher Boessenkool  <segher@kernel.crashing.org>
  
-       PR c/85931
-       * fold-const.c (operand_equal_p): Handle SAVE_EXPR.
+       * config/rs6000/rs6000.md (CC_any): New mode iterator.
+       (*movcc_internal1): Rename to...
+       (*movcc_<mode> for CC_any): ... this.  Support moves of all CC modes.
  
- 2018-06-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 2019-11-09  Jan Hubicka  <hubicka@ucw.cz>
  
-       * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
-       BUILTIN_VEC_XST entries for pointer to double and long long.
+       * cgraph.h (struct cgraph_node): Add ipcp_clone flag.
+       (cgraph_node::create_virtual_clone): Copy it.
+       * ipa-cp.c (ipcp_versionable_function_p): Watch for missing
+       summaries.
+       (ignore_edge_p): If caller has ipa-cp disabled, skip the edge, too.
+       (ipcp_verify_propagated_values): Do not verify nodes where ipcp
+       is disabled.
+       (propagate_constants_across_call): If callee is not analyzed, give up.
+       (propagate_constants_topo): Lower to bottom latties of all callees of
+       functions with ipa-cp disabled.
+       (ipcp_propagate_stage): Skip functions with ipa-cp disabled.
+       (cgraph_edge_brings_value_p): Check for availability first.
+       (create_specialized_node): Set ipcp_clone.
+       (ipcp_store_bits_results): Check that info is present.
+       * ipa-fnsummary.c (evaluate_properties_for_edge): Do not analyze
+       thunks.
+       (ipa_call_context::duplicate_from, ipa_call_context::equal_to): Be
+       conservative when callee summary is missing.
+       (remap_edge_summaries): Lookup call summary only when needed.
+       * ipa-icf.c (sem_function::param_used_p): Be ready for missing summary.
+       * ipa-prpo.c (ipa_alloc_node_params, ipa_initialize_node_params):
+       Use get_create.
+       (ipa_analyze_node): Use get_create.
+       (propagate_controlled_uses): Do not propagate when function is not
+       analyzed.
+       (ipa_propagate_indirect_call_infos): Remove summary of inline clone.
+       (ipa_read_node_info): Use get_create.
+       * ipa-prop.h (IPA_NODE_REF): Use get.
+       (IPA_NODE_REF_GET_CREATE): New.
+ 2019-11-09  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-fnsummary.c (evaluate_properties_for_edge): Call IPA_NODE_REF
+       on function symbol.
+ 2019-11-09  Jan Hubicka  <hubicka@ucw.cz>
+       * tree.c (fld_incomplete_type_of): Clear TYPE_FINAL_P, TYPE_EMPTY_P,
+       ENUM_IS_OPAQUE and ENUM_IS_SCOPED.
+       (free_lang_data_in_binfo): Clear TREE_PUBLIC in BINFO
+       (free_lang_data_in_type): Clear ENUM_IS_OPAQUE and ENUM_IS_SCOPED.
+ 2019-11-09  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-inline-analysis.c (do_estimate_growth_1): Add support for
+       capping the growth cumulated.
+       (offline_size): Break out from ...
+       (estimate_growth): ... here.
+       (check_callers): Add N, OFFLINE and MIN_SIZE and KNOWN_EDGE
+       parameters.
+       (growth_likely_positive): Turn to ...
+       (growth_positive_p): Re-implement.
+       * ipa-inline.h (growth_likely_positive): Remove.
+       (growth_positive_p): Declare.
+       * ipa-inline.c (want_inline_small_function_p): Use
+       growth_positive_p.
+       (want_inline_function_to_all_callers_p): Likewise.
+ 2019-11-09  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-fnsummary.c (ipa_call_context::estimate_size_and_time): Fix
+       calculation of min_size.
+       (ipa_update_overall_fn_summary): Likewise.
  
- 2018-06-12  H.J. Lu  <hongjiu.lu@intel.com>
+ 2019-11-09  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-fnsummary.c (estimate_edge_size_and_time): Do not call
+       estimate_edge_devirt_benefit when not computing hints;
+       do not compute time when not asked for.
+       (estimate_calls_size_and_time): Pass NULL hints and time when
+       these are not computed; do not evaluate hint predicates when these are
+       not computed.
+       (ipa_merge_fn_summary_after_inlining): Do not re-evaluate edge
+       frequency.
+ 2019-11-09  Jakub Jelinek  <jakub@redhat.com>
+       PR tree-optimization/92401
+       * gimple-match-head.c (gimple_resimplify1): Call const_unop only
+       if res_op->code is an expression with code length 1.
+       * gimple-match-head.c (gimple_resimplify2): Call const_binop only
+       if res_op->code is an expression with code length 2.
+       * gimple-match-head.c (gimple_resimplify3): Call fold_ternary only
+       if res_op->code is an expression with code length 3.
+ 2019-11-09  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (machopic_mcount_stub_name): Validate the
+       symbol stub name when it is created.
+       * config/i386/darwin.h (FUNCTION_PROFILER): Remove the symbol
+       stub validation.
+ 2019-11-09  Jakub Jelinek  <jakub@redhat.com>
+       * symtab.c: Fix comment typos.
+       * cgraphunit.c: Likewise.
+       * cgraph.h: Likewise.
+       * cgraphclones.c: Likewise.
+       * cgraph.c: Likewise.
+       * varpool.c: Likewise.
+       * tree-ssa-strlen.c: Likewise.
+       * ipa-sra.c: Likewise.
+       (scan_expr_access, check_all_callers_for_issues): Fix typo
+       in a dump message.
+ 2019-11-08  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin-protos.h: Add include quard.
+ 2019-11-08  Andrew MacLeod  <amacleod@redhat.com>
+       * range-op.h (range_operator::fold_range): Return result in a
+       reference parameter instead of by value.
+       (range_operator::wi_fold): Same.
+       * range-op.cc (range_operator::wi_fold): Return result in a reference
+       parameter instead of by value.
+       (range_operator::fold_range): Same.
+       (value_range_from_overflowed_bounds): Same.
+       (value_range_with_overflow): Same
+       (create_possibly_reversed_range): Same.
+       (operator_equal::fold_range): Same.
+       (operator_not_equal::fold_range): Same.
+       (operator_lt::fold_range): Same.
+       (operator_le::fold_range): Same.
+       (operator_gt::fold_range): Same.
+       (operator_ge::fold_range): Same.
+       (operator_plus::wi_fold): Same.
+       (operator_plus::op1_range): Change call to fold_range.
+       (operator_plus::op2_range): Change call to fold_range.
+       (operator_minus::wi_fold): Return result via reference parameter.
+       (operator_minus::op1_range): Change call to fold_range.
+       (operator_minus::op2_range): Change call to fold_range.
+       (operator_min::wi_fold): Return result via reference parameter.
+       (operator_max::wi_fold): Same.
+       (cross_product_operator::wi_cross_product): Same.
+       (operator_mult::wi_fold): Same.
+       (operator_div::wi_fold): Same.
+       (operator_div op_floor_div): Fix whitespace.
+       (operator_exact_divide::op1_range): Change call to fold_range.
+       (operator_lshift::fold_range): Return result via reference parameter.
+       (operator_lshift::wi_fold): Same.
+       (operator_rshift::fold_range): Same.
+       (operator_rshift::wi_fold): Same.
+       (operator_cast::fold_range): Same.
+       (operator_cast::op1_range): Change calls to fold_range.
+       (operator_logical_and::fold_range): Return result via reference.
+       (wi_optimize_and_or): Adjust call to value_range_with_overflow.
+       (operator_bitwise_and::wi_fold): Return result via reference.
+       (operator_logical_or::fold_range): Same.
+       (operator_bitwise_or::wi_fold): Same.
+       (operator_bitwise_xor::wi_fold): Same.
+       (operator_trunc_mod::wi_fold): Same.
+       (operator_logical_not::fold_range): Same.
+       (operator_bitwise_not::fold_range): Same.
+       (operator_bitwise_not::op1_range): Change call to fold_range.
+       (operator_cst::fold_range): Return result via reference.
+       (operator_identity::fold_range): Same.
+       (operator_abs::wi_fold): Same.
+       (operator_absu::wi_fold): Same.
+       (operator_negate::fold_range): Same.
+       (operator_negate::op1_range): Change call to fold_range.
+       (operator_addr_expr::fold_range): Return result via reference.
+       (operator_addr_expr::op1_range): Change call to fold_range.
+       (operator_pointer_plus::wi_fold): Return result via reference.
+       (operator_pointer_min_max::wi_fold): Same.
+       (operator_pointer_and::wi_fold): Same.
+       (operator_pointer_or::wi_fold): Same.
+       (range_op_handler): Change call to fold_range.
+       (range_cast): Same.
+       * tree-vrp.c (range_fold_binary_symbolics_p): Change call to
+       fold_range.
+       (range_fold_unary_symbolics_p): Same.
+       (range_fold_binary_expr): Same.
+       (range_fold_unary_expr): Same.
+ 2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-loop.c (neutral_op_for_slp_reduction): Take the
+       vector type as an argument rather than reading it from the
+       stmt_vec_info.
+       (vect_create_epilog_for_reduction): Update accordingly.
+       (vectorizable_reduction): Likewise.
+       (vect_transform_cycle_phi): Likewise.
+ 2019-11-08  Segher Boessenkool  <segher@kernel.crashing.org>
+       * config/rs6000/predicates.md (branch_comparison_operator): Allow only
+       the comparison codes that make sense for the mode used, and only the
+       codes that can be done with a single branch instruction.
+ 2019-11-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       PR tree-optimization/92351
+       * tree-vect-data-refs.c (vect_compute_data_ref_alignment): When we are
+       peeling the main loop for alignment, make sure to set the misalignment
+       of the epilogue's data references to DR_MISALIGNMENT_UNKNOWN.
+ 2019-11-08  Richard Biener  <rguenther@suse.de>
+       * dbgcnt.def (ivopts_loop): Add.
+       * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Check
+       ivopts_loop before optimizing a loop.
+ 2019-11-08  Richard Biener  <rguenther@suse.de>
+       PR ipa/92409
+       * tree-inline.c (declare_return_variable): Properly handle
+       type mismatches for the return slot.
+ 2019-11-08  Eric Botcazou  <ebotcazou@adacore.com>
+       PR target/92095
+       * config/sparc/sparc-protos.h (output_load_pcrel_sym): Declare.
+       * config/sparc/sparc.c (sparc_cannot_force_const_mem): Revert latest
+       change.
+       (got_helper_needed): New static variable.
+       (output_load_pcrel_sym): New function.
+       (get_pc_thunk_name): Remove after inlining...
+       (load_got_register): ...here.  Rework the initialization of the GOT
+       register and of the GOT helper.
+       (save_local_or_in_reg_p): Test the REGNO of the GOT register.
+       (sparc_file_end): Test got_helper_needed to decide whether the GOT
+       helper must be emitted.  Use output_asm_insn instead of fprintf.
+       (sparc_init_pic_reg): In PIC mode, always initialize the PIC register
+       if optimization is enabled.
+       * config/sparc/sparc.md (load_pcrel_sym<P:mode>): Emit the assembly
+       by calling output_load_pcrel_sym.
+ 2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-sra.c (create_access): Delay disqualifying the base
+       for poly_int values until we know we have a base.
+ 2019-11-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       * tree-vect-loop.c (vect_analyze_loop): Disable epilogue vectorization
+       for loops with SIMDUID set.  Enable epilogue vectorization for loops
+       with SIMDLEN set after finding a main loop with a VF that matches it.
+ 2019-11-08  Jakub Jelinek  <jakub@redhat.com>
+       PR target/92038
+       * gimple-ssa-store-merging.c (find_constituent_stores): For return
+       value only, return non-NULL if there is a single non-clobber
+       constituent store even if there are constituent clobbers and return
+       one of clobber constituent stores if all constituent stores are
+       clobbers.
+       (split_group): Handle clobbers.
+       (imm_store_chain_info::output_merged_store): When computing
+       bzero_first, look after all clobbers at the start.  Don't count
+       clobber stmts in orig_num_stmts, except if the first orig store is
+       a clobber covering the whole area and split_stores cover the whole
+       area, consider equal number of stmts ok.  Punt if split_stores
+       contains only ->orig stores and their number plus number of original
+       clobbers is equal to original number of stmts.  For ->orig, look past
+       clobbers in the constituent stores.
+       (imm_store_chain_info::output_merged_stores): Don't remove clobber
+       stmts.
+       (rhs_valid_for_store_merging_p): Don't return false for clobber stmt
+       rhs.
+       (store_valid_for_store_merging_p): Allow clobber stmts.
+       (verify_clear_bit_region_be): Fix up a thinko in function comment.
+       PR c++/92384
+       * function.c (assign_parm_setup_block, assign_parm_setup_stack): Don't
+       copy TYPE_EMPTY_P arguments from data->entry_parm to data->stack_parm
+       slot.
+       (assign_parms): For TREE_ADDRESSABLE parms with TYPE_EMPTY_P type
+       force creation of a unique data.stack_parm slot.
+ 2019-11-08  Richard Biener  <rguenther@suse.de>
+       * genmatch.c (expr::gen_transform): Use the resimplify
+       member function instead of hard-coding the gimple_resimplifyN variant.
+       (dt_simplify::gen_1): Likewise.
+ 2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
+       POLY_INT_CST.
  
-       PR target/85990
-       * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
-       Update comments.
-       * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
-       Likewise.
+ 2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-inline.c (declare_return_variable): Check for poly_int_tree_p
+       instead of INTEGER_CST.
+ 2019-11-08  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92324
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
+       STMT_VINFO_REDUC_VECTYPE for all computations, inserting
+       sign-conversions as necessary.
+       (vectorizable_reduction): Reject conversions in the chain
+       that are not sign-conversions, base analysis on a non-converting
+       stmt and its operation sign.  Set STMT_VINFO_REDUC_VECTYPE.
+       * tree-vect-stmts.c (vect_stmt_relevant_p): Don't dump anything
+       for debug stmts.
+       * tree-vectorizer.h (_stmt_vec_info::reduc_vectype): New.
+       (STMT_VINFO_REDUC_VECTYPE): Likewise.
+ 2019-11-08  Georg-Johann Lay  <avr@gjlay.de>
+       PR target/92055
+       * config/avr/avr.opt (-mdouble=, -mlong-double=):
+       Fix a missing '-' when displaying these options in the
+       help screen.
+ 2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/iterators.md (SVE_BH, SVE_BHS): Delete.
+ 2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64-builtins.c
+       (aarch64_builtin_vectorized_function): Remove bswap handling.
+ 2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-core.h (tree_type_common::indivisible_p): New member variable.
+       * tree.h (TYPE_INDIVISIBLE_P): New macro.
+       * config/aarch64/aarch64-sve-builtins.cc (register_builtin_types):
+       Treat the vector types as indivisible.
+ 2019-11-08  Richard Sandiford  <richard.sandiford@arm.com>
+       * optabs.def (gather_load_optab, mask_gather_load_optab)
+       (scatter_store_optab, mask_scatter_store_optab): Turn into
+       conversion optabs, with the offset mode given explicitly.
+       * doc/md.texi: Update accordingly.
+       * config/aarch64/aarch64-sve-builtins-base.cc
+       (svld1_gather_impl::expand): Likewise.
+       (svst1_scatter_impl::expand): Likewise.
+       * internal-fn.c (gather_load_direct, scatter_store_direct): Likewise.
+       (expand_scatter_store_optab_fn): Likewise.
+       (direct_gather_load_optab_supported_p): Likewise.
+       (direct_scatter_store_optab_supported_p): Likewise.
+       (expand_gather_load_optab_fn): Likewise.  Expect the mask argument
+       to be argument 4.
+       (internal_fn_mask_index): Return 4 for IFN_MASK_GATHER_LOAD.
+       (internal_gather_scatter_fn_supported_p): Replace the offset sign
+       argument with the offset vector type.  Require the two vector
+       types to have the same number of elements but allow their element
+       sizes to be different.  Treat the optabs as conversion optabs.
+       * internal-fn.h (internal_gather_scatter_fn_supported_p): Update
+       prototype accordingly.
+       * optabs-query.c (supports_at_least_one_mode_p): Replace with...
+       (supports_vec_convert_optab_p): ...this new function.
+       (supports_vec_gather_load_p): Update accordingly.
+       (supports_vec_scatter_store_p): Likewise.
+       * tree-vectorizer.h (vect_gather_scatter_fn_p): Take a vec_info.
+       Replace the offset sign and bits parameters with a scalar type tree.
+       * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Likewise.
+       Pass back the offset vector type instead of the scalar element type.
+       Allow the offset to be wider than the memory elements.  Search for
+       an offset type that the target supports, stopping once we've
+       reached the maximum of the element size and pointer size.
+       Update call to internal_gather_scatter_fn_supported_p.
+       (vect_check_gather_scatter): Update calls accordingly.
+       When testing a new scale before knowing the final offset type,
+       check whether the scale is supported for any signed or unsigned
+       offset type.  Check whether the target supports the source and
+       target types of a conversion before deciding whether to look
+       through the conversion.  Record the chosen offset_vectype.
+       * tree-vect-patterns.c (vect_get_gather_scatter_offset_type): Delete.
+       (vect_recog_gather_scatter_pattern): Get the scalar offset type
+       directly from the gs_info's offset_vectype instead.  Pass a zero
+       of the result type to IFN_GATHER_LOAD and IFN_MASK_GATHER_LOAD.
+       * tree-vect-stmts.c (check_load_store_masking): Update call to
+       internal_gather_scatter_fn_supported_p, passing the offset vector
+       type recorded in the gs_info.
+       (vect_truncate_gather_scatter_offset): Update call to
+       vect_check_gather_scatter, leaving it to search for a valid
+       offset vector type.
+       (vect_use_strided_gather_scatters_p): Convert the offset to the
+       element type of the gs_info's offset_vectype.
+       (vect_get_gather_scatter_ops): Get the offset vector type directly
+       from the gs_info.
+       (vect_get_strided_load_store_ops): Likewise.
+       (vectorizable_load): Pass a zero of the result type to IFN_GATHER_LOAD
+       and IFN_MASK_GATHER_LOAD.
+       * config/aarch64/aarch64-sve.md (gather_load<mode>): Rename to...
+       (gather_load<mode><v_int_equiv>): ...this.
+       (mask_gather_load<mode>): Rename to...
+       (mask_gather_load<mode><v_int_equiv>): ...this.
+       (scatter_store<mode>): Rename to...
+       (scatter_store<mode><v_int_equiv>): ...this.
+       (mask_scatter_store<mode>): Rename to...
+       (mask_scatter_store<mode><v_int_equiv>): ...this.
+ 2019-11-08  Kewen Lin  <linkw@gcc.gnu.org>
+       PR target/92132
+       * config/rs6000/predicates.md
+       (signed_or_equality_comparison_operator): New predicate.
+       (unsigned_or_equality_comparison_operator): Likewise.
+       * config/rs6000/rs6000.md (one_cmpl<mode>2): Remove expand.
+       (one_cmpl<mode>3_internal): Rename to one_cmpl<mode>2.
+       * config/rs6000/vector.md
+       (vcond_mask_<mode><mode> for VEC_I and VEC_I): New expand.
+       (vec_cmp<mode><mode> for VEC_I and VEC_I): Likewise.
+       (vec_cmpu<mode><mode> for VEC_I and VEC_I): Likewise.
+       (vcond_mask_<mode><VEC_int> for VEC_F): New expand for float
+       vector modes and same-size integer vector modes.
+       (vec_cmp<mode><VEC_int> for VEC_F): Likewise.
+       (vector_lt<mode> for VEC_F): New expand.
+       (vector_le<mode> for VEC_F): Likewise.
+       (vector_ne<mode> for VEC_F): Likewise.
+       (vector_unge<mode> for VEC_F): Likewise.
+       (vector_ungt<mode> for VEC_F): Likewise.
+       (vector_unle<mode> for VEC_F): Likewise.
+       (vector_unlt<mode> for VEC_F): Likewise.
+       (vector_uneq<mode>): Expose name.
+       (vector_ltgt<mode>): Likewise.
+       (vector_unordered<mode>): Likewise.
+       (vector_ordered<mode>): Likewise.
+ 2019-11-08  Hongtao Liu  <Hongtao.liu@intel.com>
+       PR target/92295
+       * config/i386/i386-expand.c (ix86_expand_vector_init_concat)
+       Enhance ix86_expand_vector_init_concat.
+ 2019-11-08  Joseph Myers  <joseph@codesourcery.com>
+       * doc/invoke.texi (-Wold-style-definition): Document () not being
+       considered an old-style definition for C2x.
+ 2019-11-07  John David Anglin  <danglin@gcc.gnu.org>
+       * config/pa/pa.md (memory_barrier): Revise to use ldcw barriers.
+       Enhance comment.
+       (memory_barrier_coherent, memory_barrier_64, memory_barrier_32): New
+       insn patterns using ldcw instruction.
+       (memory_barrier): Remove insn pattern using sync instruction.
+       * config/pa/pa.opt (coherent-ldcw): New option.
+       (ordered): New option.
+ 2019-11-07  Segher Boessenkool  <segher@kernel.crashing.org>
+       * config/rs6000/rs6000.c (validate_condition_mode): Don't assert for
+       valid conditions.
+ 2019-11-07  Jakub Jelinek  <jakub@redhat.com>
+       * ipa-utils.c (ipa_merge_profiles): Fix fprintf format string
+       typo - mistmatch -> mismatch.
+       * ipa-profile.c (ipa_profile): Likewise.
+       * ipa-devirt.c (compare_virtual_tables): Fix a comment typo
+       - mistmatch -> mismatch.
+ 2018-11-07  Segher Boessenkool  <segher@kernel.crashing.org>
+       * simplify-rtx.c (comparison_to_mask): New function.
+       (mask_to_comparison): New function.
+       (simplify_logical_relational_operation): New function.
+       (simplify_binary_operation_1): Call
+       simplify_logical_relational_operation.
+ 2019-11-07  Peter Bergner <bergner@linux.ibm.com>
+       PR other/92090
+       * config/rs6000/predicates.md (input_operand): Allow MODE_PARTIAL_INT
+       modes for integer constants.
+ 2019-11-07  Jan Hubicka  <jh@suse.cz>
+       PR ipa/92406
+       * ipa-fnsummary.c (analyze_function_body): Use get_create to copy
+       summary.
  
- 2018-06-12  Martin Liska  <mliska@suse.cz>
+ 2019-11-07  Jan Hubicka  <jh@suse.cz>
+       * optc-save-gen.awk: Generate cl_target_option_free
+       and cl_optimization_option_free.
+       * opth-en.awk: Declare cl_target_option_free
+       and cl_optimization_option_free.
+       * tree.c (free_node): Use it.
+ 2019-11-06  Jan Hubicka  <jh@suse.cz>
+       * lto-streamer-in.c: Include alloc-pool.h.
+       (freeing_string_slot_hasher): Remove.
+       (string_slot_allocator): New object allocator.
+       (file_name_hash_table): Turn to hash_table<string_slot_hasher>.
+       (file_name_obstack): New obstack.
+       (canon_file_name): Allocate in obstack and allocator.
+       (lto_reader_init): Initialize obstack and allocator.
+       (lto_free_file_name_hash): New function.
+       * lto-streamer.h (lto_free_file_name_hash): New.
+ 2019-11-07  Feng Xue <fxue@os.amperecomputing.com>
+       PR tree-optimization/89134
+       * doc/invoke.texi (min-loop-cond-split-prob): Document new --params.
+       * params.def: Add min-loop-cond-split-prob.
+       * tree-ssa-loop-split.c (split_loop): Remove niter parameter, move some
+       outside checks on loop into the function.
+       (split_info): New class.
+       (find_vdef_in_loop, get_control_equiv_head_block): New functions.
+       (find_control_dep_blocks, vuse_semi_invariant_p): Likewise.
+       (ssa_semi_invariant_p, loop_iter_phi_semi_invariant_p): Likewise.
+       (control_dep_semi_invariant_p, stmt_semi_invariant_p_1): Likewise.
+       (stmt_semi_invariant_p, branch_removable_p): Likewise.
+       (get_cond_invariant_branch, compute_added_num_insns): Likewise.
+       (get_cond_branch_to_split_loop, do_split_loop_on_cond): Likewise.
+       (split_loop_on_cond): Likewise.
+       (tree_ssa_split_loops): Add loop split on conditional statement.
+ 2019-11-07  Andreas Krebbel  <krebbel@linux.ibm.com>
+       * config/s390/s390.md ("*cstorecc<mode>_z13"): New insn_and_split
+       pattern.
  
-       * doc/options.texi: Document IntegerRange.
+ 2019-11-07  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92405
+       * tree-vect-loop.c (vectorizable_reduction): Appropriately
+       restrict lane-reducing ops to single stmt chains.
+ 2019-11-07  Martin Jambor  <mjambor@suse.cz>
+       PR lto/70929
+       * cif-code.def (MISMATCHED_ARGUMENTS): Removed.
+       * cgraph.h (gimple_check_call_matching_types): Remove
+       * cgraph.c (gimple_check_call_args): Likewise.
+       (gimple_check_call_matching_types): Likewise.
+       (symbol_table::create_edge): Do not call
+       gimple_check_call_matching_types.
+       (cgraph_edge::make_direct): Likewise.
+       (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
+       * value-prof.h (check_ic_target): Remove.
+       * value-prof.c (check_ic_target): Remove.
+       (gimple_ic_transform): Do nat call check_ic_target.
+       * auto-profile.c (function_instance::find_icall_target_map): Likewise.
+       (afdo_indirect_call): Likewise.
+       * ipa-prop.c (update_indirect_edges_after_inlining): Do not call
+       gimple_check_call_matching_types.
+       * ipa-inline.c (early_inliner): Likewise.
  
- 2018-06-12  Martin Liska  <mliska@suse.cz>
+ 2019-11-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+       * config/arm/arm.md (arm_<simd32_op>): New define_expand.
+       (arm_<simd32_op><add_clobber_q_name>_insn): New define_insn.
+       * config/arm/arm_acle.h (__ssat16, __usat16): Define.
+       * config/arm/arm_acle_builtins.def: Define builtins for the above.
+       * config/arm/iterators.md (USSAT16): New int_iterator.
+       (simd32_op): Handle UNSPEC_SSAT16, UNSPEC_USAT16.
+       (sup): Likewise.
+       * config/arm/predicates.md (ssat16_imm): New predicate.
+       (usat16_imm): Likewise.
+       * config/arm/unspecs.md (UNSPEC_SSAT16, UNSPEC_USAT16): Define.
+ 2019-11-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+       * config/arm/arm.md (arm_<simd32_op><add_clobber_q_name>_insn):
+       New define_insns.
+       (arm_<simd32_op>): New define_expands.
+       * config/arm/arm_acle.h (__smlad, __smladx, __smlsd, __smlsdx,
+       __smuad, __smuadx): Define.
+       * config/arm/arm_acle_builtins.def: Define builtins for the above.
+       * config/arm/iterators.md (SIMD32_TERNOP_Q): New int_iterator.
+       (SIMD32_BINOP_Q): Likewise.
+       (simd32_op): Handle the above.
+       * config/arm/unspecs.md: Define unspecs for the above.
+ 2019-11-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+       * config/arm/aout.h (REGISTER_NAMES): Add apsrge.
+       * config/arm/arm.md (APSRGE_REGNUM): Define.
+       (arm_<simd32_op>): New define_insn.
+       (arm_sel): Likewise.
+       * config/arm/arm.h (FIXED_REGISTERS): Add entry for apsrge.
+       (CALL_USED_REGISTERS): Likewise.
+       (REG_ALLOC_ORDER): Likewise.
+       (FIRST_PSEUDO_REGISTER): Update value.
+       (ARM_GE_BITS_READ): Define.
+       * config/arm/arm.c (arm_conditional_register_usage): Clear
+       APSRGE_REGNUM from operand_reg_set.
+       (arm_ge_bits_access): Define.
+       * config/arm/arm-builtins.c (arm_check_builtin_call): Handle
+       ARM_BUIILTIN_sel.
+       * config/arm/arm-protos.h (arm_ge_bits_access): Declare prototype.
+       * config/arm/arm-fixed.md (add<mode>3): Convert to define_expand.
+       FAIL if ARM_GE_BITS_READ.
+       (*arm_add<mode>3): New define_insn.
+       (sub<mode>3): Convert to define_expand.  FAIL if ARM_GE_BITS_READ.
+       (*arm_sub<mode>3): New define_insn.
+       * config/arm/arm_acle.h (__sel, __sadd8, __ssub8, __uadd8, __usub8,
+       __sadd16, __sasx, __ssax, __ssub16, __uadd16, __uasx, __usax,
+       __usub16): Define.
+       * config/arm/arm_acle_builtins.def: Define builtins for the above.
+       * config/arm/iterators.md (SIMD32_GE): New int_iterator.
+       (simd32_op): Handle the above.
+       * config/arm/unspecs.md (UNSPEC_GE_SET): Define.
+       (UNSPEC_SEL, UNSPEC_SADD8, UNSPEC_SSUB8, UNSPEC_UADD8, UNSPEC_USUB8,
+       UNSPEC_SADD16, UNSPEC_SASX, UNSPEC_SSAX, UNSPEC_SSUB16, UNSPEC_UADD16,
+       UNSPEC_UASX, UNSPEC_USAX, UNSPEC_USUB16): Define.
+ 2019-11-07  Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+       * config/arm/arm.md (arm_smlabb_setq): New define_insn.
+       (arm_smlabb): New define_expand.
+       (*maddhisi4tb): Rename to...
+       (maddhisi4tb): ... This.
+       (*maddhisi4tt): Rename to...
+       (maddhisi4tt): ... This.
+       (arm_smlatb_setq): New define_insn.
+       (arm_smlatb): New define_expand.
+       (arm_smlatt_setq): New define_insn.
+       (arm_smlatt): New define_expand.
+       (arm_<smlaw_op><add_clobber_name>_insn): New define_insn.
+       (arm_<smlaw_op>): New define_expand.
+       * config/arm/arm_acle.h (__smlabb, __smlatb, __smlabt, __smlatt,
+       __smlawb, __smlawt): Define.
+       * config/arm_acle_builtins.def: Define builtins for the above.
+       * config/arm/iterators.md (SMLAWBT): New int_iterator.
+       (slaw_op): New int_attribute.
+       * config/arm/unspecs.md (UNSPEC_SMLAWB, UNSPEC_SMLAWT): Define.
+ 2019-11-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+       * config/arm/arm.md (arm_<ss_op>): New define_expand.
+       (arm_<ss_op><add_clobber_q_name>_insn): New define_insn.
+       * config/arm/arm_acle.h (__qadd, __qsub, __qdbl): Define.
+       * config/arm/arm_acle_builtins.def: Add builtins for qadd, qsub.
+       * config/arm/iterators.md (SSPLUSMINUS): New code iterator.
+       (ss_op): New code_attr.
+ 2019-11-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+       * config/arm/aout.h (REGISTER_NAMES): Add apsrq.
+       * config/arm/arm.md (APSRQ_REGNUM): Define.
+       (add_setq): New define_subst.
+       (add_clobber_q_name): New define_subst_attr.
+       (add_clobber_q_pred): Likewise.
+       (maddhisi4): Change to define_expand.  Split into mult and add if
+       ARM_Q_BIT_READ.
+       (arm_maddhisi4): New define_insn.
+       (*maddhisi4tb): Disable for ARM_Q_BIT_READ.
+       (*maddhisi4tt): Likewise.
+       (arm_ssat): New define_expand.
+       (arm_usat): Likewise.
+       (arm_get_apsr): New define_insn.
+       (arm_set_apsr): Likewise.
+       (arm_saturation_occurred): New define_expand.
+       (arm_set_saturation): Likewise.
+       (*satsi_<SAT:code>): Rename to...
+       (satsi_<SAT:code><add_clobber_q_name>): ... This.
+       (*satsi_<SAT:code>_shift): Disable for ARM_Q_BIT_READ.
+       * config/arm/arm.h (FIXED_REGISTERS): Mark apsrq as fixed.
+       (CALL_USED_REGISTERS): Mark apsrq.
+       (FIRST_PSEUDO_REGISTER): Update value.
+       (REG_ALLOC_ORDER): Add APSRQ_REGNUM.
+       (machine_function): Add q_bit_access.
+       (ARM_Q_BIT_READ): Define.
+       * config/arm/arm.c (TARGET_CHECK_BUILTIN_CALL): Define.
+       (arm_conditional_register_usage): Clear APSRQ_REGNUM from
+       operand_reg_set.
+       (arm_q_bit_access): Define.
+       * config/arm/arm-builtins.c: Include stringpool.h.
+       (arm_sat_binop_imm_qualifiers,
+       arm_unsigned_sat_binop_unsigned_imm_qualifiers,
+       arm_sat_occurred_qualifiers, arm_set_sat_qualifiers): Define.
+       (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS,
+       UNSIGNED_SAT_BINOP_UNSIGNED_IMM_QUALIFIERS, SAT_OCCURRED_QUALIFIERS,
+       SET_SAT_QUALIFIERS): Likewise.
+       (arm_builtins): Define ARM_BUILTIN_SAT_IMM_CHECK.
+       (arm_init_acle_builtins): Initialize __builtin_sat_imm_check.
+       Handle 0 argument expander.
+       (arm_expand_acle_builtin): Handle ARM_BUILTIN_SAT_IMM_CHECK.
+       (arm_check_builtin_call): Define.
+       * config/arm/arm.md (ssmulsa3, usmulusa3, usmuluha3,
+       arm_ssatsihi_shift, arm_usatsihi): Disable when ARM_Q_BIT_READ.
+       * config/arm/arm-protos.h (arm_check_builtin_call): Declare prototype.
+       (arm_q_bit_access): Likewise.
+       * config/arm/arm_acle.h (__ssat, __usat, __ignore_saturation,
+       __saturation_occurred, __set_saturation_occurred): Define.
+       * config/arm/arm_acle_builtins.def: Define builtins for ssat, usat,
+       saturation_occurred, set_saturation_occurred.
+       * config/arm/unspecs.md (UNSPEC_Q_SET): Define.
+       (UNSPEC_APSR_READ): Likewise.
+       (VUNSPEC_APSR_WRITE): Likewise.
+       * config/arm/arm-fixed.md (ssadd<mode>3): Convert to define_expand.
+       (*arm_ssadd<mode>3): New define_insn.
+       (sssub<mode>3): Convert to define_expand.
+       (*arm_sssub<mode>3): New define_insn.
+       (ssmulsa3): Convert to define_expand.
+       (*arm_ssmulsa3): New define_insn.
+       (usmulusa3): Convert to define_expand.
+       (*arm_usmulusa3): New define_insn.
+       (ssmulha3): FAIL if ARM_Q_BIT_READ.
+       (arm_ssatsihi_shift, arm_usatsihi): Disable for ARM_Q_BIT_READ.
+       * config/arm/iterators.md (qaddsub_clob_q): New mode attribute.
+ 2019-11-07  Martin Liska  <mliska@suse.cz>
+       PR c++/92354
+       * cgraph.c (delete_function_version): Clear global
+       variable version_info_node if equal to deleted
+       function.
  
-       * config/i386/i386.opt: Make MPX-related options as Deprecated.
-       * opt-functions.awk: Handle Deprecated flag.
-       * opts-common.c (decode_cmdline_option): Handle cl_deprecated
-         and report error.
-       (read_cmdline_option): Report warning for a deprecated option.
-       * opts.h (struct cl_option): Add new field cl_deprecated.
-       (CL_ERR_DEPRECATED): New.
+ 2019-11-07  Martin Liska  <mliska@suse.cz>
+       * fold-const.c (operand_compare::operand_equal_p): Add comparison
+       of CONSTRUCTOR_NO_CLEARING.
+       (operand_compare::hash_operand): Likewise.
+ 2019-11-07  Georg-Johann Lay  <avr@gjlay.de>
+       Support 64-bit double and 64-bit long double configurations.
+       PR target/92055
+       * config.gcc (tm_defines) [avr]: Set from --with-double=,
+       --with-long-double=.
+       * config/avr/t-multilib: Remove.
+       * config/avr/t-avr: Output of genmultilib.awk is now fully
+       dynamically generated and no more part of the repo.
+       (HAVE_DOUBLE_MULTILIB, HAVE_LONG_DOUBLE_MULTILIB): New variables.
+       Pass them down to...
+       * config/avr/genmultilib.awk: ...here and handle them.
+       * config/avr/avr.opt (-mdouble=, avr_double). New option and var.
+       (-mlong-double=, avr_long_double). New option and var.
+       * common/config/avr/avr-common.c (opts.h, diagnostic.h): Include.
+       (TARGET_OPTION_OPTIMIZATION_TABLE) <-mdouble=, -mlong-double=>:
+       Set default as requested by --with-double=
+       (TARGET_HANDLE_OPTION): Define to this...
+       (avr_handle_option): ...new hook worker.
+       * config/avr/avr.h (DOUBLE_TYPE_SIZE): Define to avr_double.
+       (LONG_DOUBLE_TYPE_SIZE): Define to avr_long_double.
+       (avr_double_lib): New proto for spec function.
+       (EXTRA_SPEC_FUNCTIONS) <double-lib>: Add.
+       (DRIVER_SELF_SPECS): Call %:double-lib.
+       * config/avr/avr.c (avr_option_override): Assert
+       sizeof(long double) >= sizeof(double) for the target.
+       * config/avr/avr-c.c (avr_cpu_cpp_builtins)
+       [__HAVE_DOUBLE_MULTILIB__, __HAVE_LONG_DOUBLE_MULTILIB__]
+       [__HAVE_DOUBLE64__, __HAVE_DOUBLE32__, __DEFAULT_DOUBLE__=]
+       [__HAVE_LONG_DOUBLE64__, __HAVE_LONG_DOUBLE32__]
+       [__HAVE_LONG_DOUBLE_IS_DOUBLE__, __DEFAULT_LONG_DOUBLE__=]:
+       New built-in define depending on --with-double=, --with-long-double=.
+       * config/avr/driver-avr.c (avr_double_lib): New spec function.
+       * doc/invoke.tex (AVR Options) <-mdouble=,-mlong-double=>: Doc.
+       * doc/install.texi (Cross-Compiler-Specific Options)
+       <--with-double=, --with-long-double=>: Doc.
+ 2019-11-07  Richard Biener  <rguenther@suse.de>
+       * dbgcnt.def (gimple_unroll): New.
+       * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Check
+       gimple_unroll debug counter before applying transform.
+       (try_peel_loop): Likewise.
+ 2019-11-07  Kwok Cheung Yeung  <kcy@codesourcery.com>
+       * ira.c (setup_alloc_regs): Setup no_unit_alloc_regs for
+       frame pointer in multiple registers.
+       (ira_setup_eliminable_regset): Setup eliminable_regset,
+       ira_no_alloc_regs and regs_ever_live for frame pointer in
+       multiple registers.
+ 2019-11-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+       * config/rs6000/vsx.md (xxswapd_<mode>): Add support for V2DF and
+       V2DI modes.
+ 2019-11-06  Jan Hubicka  <jh@suse.cz>
+       * ggc-common.c (ggc_prune_overhead_list): Do not delete surviving
+       allocations.
+       * mem-stats.h (mem_alloc_description<T>::release_object_overhead):
+       Do not silently ignore summary corruptions.
+ 2019-11-06  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-loop.c (vect_analyze_loop): Only try to vectorize
+       the epilogue if there are peeled iterations for it to handle.
+ 2019-11-06  Claudiu Zissulescu  <claziss@synopsys.com>
+       * config/arc/arc.c (arc_split_ior): Add asserts.
+       (arc_split_mov_const): Likewise.
+       (arc_check_ior_const): Do not match known short immediate values.
+       * config/arc/arc.md (movsi): Don't split predicated instructions
+       (iorsi): Likewise.
+ 2019-11-06  Claudiu Zissulescu  <claziss@synopsys.com>
+       * config/arc/arc.opt (mea): Update help string.
+       * doc/invoke.texi(ARC): Update mea option info.
+ 2019-11-06  Claudiu Zissulescu  <claziss@synopsys.com>
+       * config/arc/arc.md (zero_extendqihi2_i): Cleanup pattern.
+       (zero_extendqisi2_ac): Likewise.
+       (zero_extendhisi2_i): Likewise.
+       (extendqihi2_i): Likewise.
+       (extendqisi2_ac): Likewise.
+       (extendhisi2_i): Likewise.
+ 2019-11-06  Richard Biener  <rguenther@suse.de>
+       * tree-vect-loop.c (vectorizable_reduction): Remember reduction
+       PHI.  Use STMT_VINFO_REDUC_IDX to skip the reduction operand.
+       Simplify single_defuse_cycle condition.
+ 2019-11-06  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-loop.c (vect_analyze_loop_2): When vectorizing an
+       epilogue loop, make sure that the VF is small enough or that
+       the epilogue loop can be fully-masked.
+ 2019-11-06  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-loop.c (vect_analyze_loop): Break out of the main
+       loop when we've finished, rather than returning directly from
+       the loop.  Use a local variable to track whether we're still
+       searching for the preferred simdlen.  Make vect_epilogues
+       record whether the next iteration should try to treat the
+       loop as an epilogue.
+ 2019-11-06  Vineet Gupta  <vgupta@synopsys.com>
+       * config/arc/arc-c.c (arc_cpu_cpp_builtins) : Add
+       __arc_hard_float__, __ARC_HARD_FLOAT__,
+       __arc_soft_float__, __ARC_SOFT_FLOAT__
+ 2019-11-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       PR tree-optimization/92317
+       * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard2): Also
+       update phi's with constant phi arguments.
+ 2019-11-06  Eric Botcazou  <ebotcazou@adacore.com>
+           Alexandre Oliva  <oliva@adacore.com>
+       * common.opt (-fcallgraph-info[=]): New option.
+       * doc/invoke.texi (Developer options): Document it.
+       * opts.c (common_handle_option): Handle it.
+       * builtins.c (expand_builtin_alloca): Record allocation if
+       -fcallgraph-info=da.
+       * calls.c (expand_call): If -fcallgraph-info, record the call.
+       (emit_library_call_value_1): Likewise.
+       * flag-types.h (enum callgraph_info_type): New type.
+       * explow.c: Include stringpool.h.
+       (set_stack_check_libfunc): Set SET_SYMBOL_REF_DECL on the symbol.
+       * function.c (allocate_stack_usage_info): New.
+       (allocate_struct_function): Call it for -fcallgraph-info.
+       (prepare_function_start): Call it otherwise.
+       (record_final_call, record_dynamic_alloc): New.
+       * function.h (struct callinfo_callee): New.
+       (CALLEE_FROM_CGRAPH_P): New.
+       (struct callinfo_dalloc): New.
+       (struct stack_usage): Add callees and dallocs.
+       (record_final_call, record_dynamic_alloc): Declare.
+       * gimplify.c (gimplify_decl_expr): Record dynamically-allocated
+       object if -fcallgraph-info=da.
+       * optabs-libfuncs.c (build_libfunc_function): Keep SYMBOL_REF_DECL.
+       * print-tree.h (print_decl_identifier): Declare.
+       (PRINT_DECL_ORIGIN, PRINT_DECL_NAME, PRINT_DECL_UNIQUE_NAME): New.
+       * print-tree.c: Include print-tree.h.
+       (print_decl_identifier): New function.
+       * toplev.c: Include print-tree.h.
+       (callgraph_info_file): New global variable.
+       (callgraph_info_external_printed): Likewise.
+       (output_stack_usage): Rename to...
+       (output_stack_usage_1): ... this.  Make it static, add cf
+       parameter.  If -fcallgraph-info=su, print stack usage to cf.
+       If -fstack-usage, use print_decl_identifier for
+       pretty-printing.
+       (INDIRECT_CALL_NAME): New.
+       (dump_final_node_vcg_start): New.
+       (dump_final_callee_vcg, dump_final_node_vcg): New.
+       (output_stack_usage): New.
+       (lang_dependent_init): Open and start file if
+       -fcallgraph-info.  Allocated callgraph_info_external_printed.
+       (finalize): If callgraph_info_file is not null, finish it,
+       close it, and release callgraph_info_external_printed.
+ 2019-11-06  Gergö Barany  <gergo@codesourcery.com>
+           Frederik Harwath  <frederik@codesourcery.com>
+           Thomas Schwinge  <thomas@codesourcery.com>
+       * omp-low.c (struct omp_context): New fields
+       local_reduction_clauses, outer_reduction_clauses.
+       (new_omp_context): Initialize these.
+       (scan_sharing_clauses): Record reduction clauses on OpenACC constructs.
+       (scan_omp_for): Check reduction clauses for incorrect nesting.
+ 2019-11-06  Jakub Jelinek  <jakub@redhat.com>
+       PR inline-asm/92352
+       * gimplify.c (gimplify_asm_expr): Reject VLA in output or input
+       operands with non-memory constraints.
+ 2019-11-05  Martin Sebor  <msebor@redhat.com>
+       PR tree-optimization/92373
+       * tree.c (component_ref_size): Only consider initializers of objects
+       of matching struct types.
+       Return null for instances of interior zero-length arrays.
+ 2019-11-05  Segher Boessenkool  <segher@kernel.crashing.org>
+       * doc/md.texi (Insn Splitting): Fix combiner documentation.
  
- 2018-06-12  Martin Liska  <mliska@suse.cz>
+ 2019-11-05  Jason Merrill  <jason@redhat.com>
+       PR tree-optimization/91825
+       * expmed.c: Reduce -Wmaybe-uninitialized to warning.
+ 2019-11-05  Jim Wilson  <jimw@sifive.com>
+       PR middle-end/92263
+       * expr.c (emit_move_complex): Only use BLOCK_OP_NO_LIBCALL when
+       optimize_insn_for_speed_p is true.
+ 2019-11-05  Martin Sebor  <msebor@redhat.com>
+       PR middle-end/92333
+       PR middle-end/82608
+       * tree-vrp.c (vrp_prop::check_array_ref): Handle VLAs with constant
+       size.
+       * tree-ssa-ccp.c (fold_builtin_alloca_with_align): Use a meaninful
+       name and location for a temporary variable.
+ 2019-11-05  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.c (value_range::value_range): Fix whitespace.
+       (defined_ranges_p): Same.
+       (range_fold_binary_symbolics_p): Same.
+       (value_range::intersect_helper): Same.
+       (value_range::union_helper): Same.
+       * tree-vrp.h (range_fold_binary_expr): Same.
+ 2019-11-04  Martin Sebor  <msebor@redhat.com>
+       PR middle-end/92341
+       PR middle-end/82612
+       * tree-sra.c (get_access_for_expr): Fail for out-of-bounds offsets.
+       * tree-vrp.c (vrp_prop::check_array_ref): Correct index and text
+       of message printed in a warning for empty arrays.
+       (vrp_prop::check_mem_ref): Also handle function parameters and
+       empty arrays.
+ 2019-11-05  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92371
+       * tree-vect-loop.c (vectorizable_reduction): Set STMT_VINFO_REDUC_DEF
+       on the original stmt of live stmts in the chain.
+       (vectorizable_live_operation): Look at the original stmt when
+       checking STMT_VINFO_REDUC_DEF.
+ 2019-11-05  Aldy Hernandez  <aldyh@redhat.com>
+       * gimple-fold.c, gimple-loop-versioning.cc,
+       gimple-ssa-evrp-analyze.[ch], gimple-ssa-evrp.c,
+       gimple-ssa-sprintf.c, ipa-cp.c, ipa-prop.c, ipa-prop.h,
+       range-op.[hc]*, range.[hc]*, selftest.h, tree-ssa-dom.c,
+       tree-ssa-strlen.c, tree-ssa-threadedge.c, tree-ssanames.[hc],
+       tree-vrp.[hc], vr-values.[hc]: Global rename of value_range to
+       value_range_equiv, and value_range_base to value_range.
  
-       * doc/options.texi: Document Deprecated option flag.
+ 2019-11-05  Matthew Malcomson  <matthew.malcomson@arm.com>
  
- 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
+       * expr.c (build_personality_function): Fix generated type to
+       match actual personality functions.
  
-       * config/arc/arc-arch.h (arc_extras): New enum.
-       (arc_cpu_t):Add field extra.
-       (arc_cpu_types): Consider the extras.
-       * config/arc/arc-cpus.def: Add extras info.
-       * config/arc/arc-opts.h (processor_type): Consider extra field.
-       * config/arc/arc.c (arc_override_options): Handle extra field.
+ 2019-11-05  Matthew Malcomson  <matthew.malcomson@arm.com>
  
- 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
+       * config/aarch64/aarch64.c (aarch64_handle_attr_cpu): Allocate
+       enough bytes for the NULL character.
  
-       * config/arc/arc-arch.h: Update ARC_OPTX macro.
-       * config/arc/arc-options.def (ARC_OPTX): Introduce a new doc
-       field.
-       * config/arc/arc.c (arc_init): Update pic warning.
-       (irq_range): Update irq range parsing warnings.
-       (arc_override_options): Update various warning messages.
-       (arc_handle_aux_attribute): Likewise.
- 2018-06-12  Robert Suchanek  <robert.suchanek@mips.com>
-       * config/mips/i6400.md (i6400_fpu_fadd): Remove frint.
- 2018-06-12  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
-       * doc/sourcebuild.texi: Document usage of line number 0 in verify
-       compiler messages directives.
- 2018-06-12  Matthew Fortune  <mfortune@gmail.com>
-       * config/mips/mips-cpus.def: New MIPS_CPU for i6500.
-       * config/mips/mips-tables.opt: Regenerate.
-       * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Mark i6500 as
-       mips64r6.
-       * doc/invoke.texi: Document -march=i6500.
- 2018-06-12  Prachi Godbole  <prachi.godbole@imgtec.com>
-       * config/mips/i6400.md (i6400_gpmuldiv): Remove cpu_unit.
-       (i6400_gpmul): Add cpu_unit.
-       (i6400_gpdiv): Likewise.
-       (i6400_msa_add_d): Update reservations.
-       (i6400_msa_int_add) Likewise.
-       (i6400_msa_short_logic3) Likewise.
-       (i6400_msa_short_logic2) Likewise.
-       (i6400_msa_short_logic) Likewise.
-       (i6400_msa_move) Likewise.
-       (i6400_msa_cmp) Likewise.
-       (i6400_msa_short_float2) Likewise.
-       (i6400_msa_div_d) Likewise.
-       (i6400_msa_long_logic1) Likewise.
-       (i6400_msa_long_logic2) Likewise.
-       (i6400_msa_mult) Likewise.
-       (i6400_msa_long_float2) Likewise.
-       (i6400_msa_long_float4) Likewise.
-       (i6400_msa_long_float5) Likewise.
-       (i6400_msa_long_float8) Likewise.
-       (i6400_fpu_fadd): Include frint type.
-       (i6400_fpu_store): New define_insn_reservation.
-       (i6400_fpu_load): Likewise.
-       (i6400_fpu_move): Likewise.
-       (i6400_fpu_fcmp): Likewise.
-       (i6400_fpu_fmadd): Likewise.
-       (i6400_int_mult): Include imul3nc type and update reservation.
-       (i6400_int_div): Include idiv3 type and update reservation.
-       (i6400_int_load): Update to check type not move_type.
-       (i6400_int_store): Likewise.
-       (i6400_int_prefetch): Set zero latency.
- 2018-06-12  Eric Botcazou  <ebotcazou@adacore.com>
-       * gcc.c: Document new %@{...} sequence.
-       (LINK_COMMAND_SPEC): Use it for the -L switches.
-       (cpp_unique_options): Use it for the -I switches.
-       (at_file_argbuf): New global variable.
-       (in_at_file): Likewise.
-       (alloc_args): Create at_file_argbuf.
-       (clear_args): Truncate at_file_argbuf.
-       (store_arg): If in_at_file, push the argument onto at_file_argbuf.
-       (open_at_file): New function.
-       (close_at_file): Likewise.
-       (create_at_file): Delete.
-       (do_spec_1) <'i'>: Use open_at_file/close_at_file.
-       <'o'>: Likewise.
-       <'@'>: New case.
-       (validate_switches_from_spec): Deal with %@{...} sequence.
-       (validate_switches): Likewise.
-       (driver::finalize): Call clear_args.
- 2018-06-11  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
-       * config/vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0.
- 2018-06-11  Martin Sebor  <msebor@redhat.com>
-       * doc/invoke.texi (-Wall): List -Wc++17-compat.
-       (Wno-class-memaccess): Add @opindex.
-       (Wno-templates, Wno-multiple-inheritance): Same.
-       (Wno-virtual-inheritance, Wno-namespaces): Same.
-       (Wno-pedantic, Wno-chkp, Wcoverage-mismatch): Same.
-       (Wno-format-overflow, Wno-format-truncation): Same.
-       (Wno-unused-local-typedefs, Walloc-size-larger-than): Same.
-       (Wno-alloc-size-larger-than, Wframe-larger-than): Same
-       (Wno-stack-usage, Wno-c++-compat, Wno-c++11-compat): Same.
-       (Wno-c++14-compat, Wno-c++17-compat, Wno-openmp-simd): Same.
-       (Wno-unsuffixed-float-constants, Wno-addr-space-convert): Same.
-       (Wno-misspelled-isr): Same.
- 2018-06-11  Martin Sebor  <msebor@redhat.com>
-       * PR tree-optimization/86083
-       * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p.
- 2018-06-11 Zhouyi Zhou <zhouzhouyi@gmail.com>
-       * tree-eh.c (lower_eh_constructs_2): Add a comma to comment.
- 2018-06-11  Segher Boessenkool  <segher@kernel.crashing.org>
-       PR target/85755
-       * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers
-       on the correct operand.
-       (*movdi_internal64): Ditto.
- 2018-06-11  Martin Liska  <mliska@suse.cz>
-         PR tree-optimization/86089
-       * tree-ssa-strlen.c (get_string_length): Move back removed hunk.
- 2018-06-11  Julia Koval  <julia.koval@intel.com>
-       * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128)
-       _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove.
-       * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove.
- 2018-06-11  Olivier Hainque  <hainque@adacore.com>
-       * dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83
-       for Ada with strict dwarf2.
- 2018-06-08  Peter Bergner  <bergner@vnet.ibm.com>
-       PR target/85755
-       * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC
-       addresses.
+ 2019-11-05  Richard Biener  <rguenther@suse.de>
  
- 2018-06-08  Jan Hubicka  <hubicka@ucw.cz>
-       * dumpfile.c (FIRST_ME_AUTO_NUMBERED_DUMP): Bump to 4.
- 2018-06-08  David Edelsohn  <dje.gcc@gmail.com>
-       * config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if
-       TARGET_ELF.
- 2018-06-08  Martin Liska  <mliska@suse.cz>
-       * tree-cfg.h (debug_function): Fix argument type to match
-         implementation.
- 2018-06-08  Martin Liska  <mliska@suse.cz>
-       * config/powerpcspe/powerpcspe.c (rs6000_xcoff_visibility):
-         Remove usage of MPX-related (and removed) fields.
-       * config/rs6000/rs6000.c (rs6000_xcoff_visibility): Likewise.
- 2018-06-08  David Malcolm  <dmalcolm@redhat.com>
-       * cfg.c (debug): Use TDF_NONE rather than 0.
-       * cfghooks.c (debug): Likewise.
-       * dumpfile.c (DUMP_FILE_INFO): Likewise; also for OPTGROUP.
-       (struct dump_option_value_info): Convert to...
-       (struct kv_pair): ...this template type.
-       (dump_options): Convert to kv_pair<dump_flags_t>; use TDF_NONE
-       rather than 0.
-       (optinfo_verbosity_options): Likewise.
-       (optgroup_options): Convert to kv_pair<optgroup_flags_t>; use
-       OPTGROUP_NONE.
-       (gcc::dump_manager::dump_register): Use optgroup_flags_t rather
-       than int for "optgroup_flags" param.
-       (dump_generic_expr_loc): Use dump_flags_t rather than int for
-       "dump_kind" param.
-       (dump_dec): Likewise.
-       (dump_finish): Use TDF_NONE rather than 0.
-       (gcc::dump_manager::opt_info_enable_passes): Use optgroup_flags_t
-       rather than int for "optgroup_flags" param.  Use TDF_NONE rather
-       than 0.  Update for change to option_ptr.
-       (opt_info_switch_p_1): Convert "optgroup_flags" param from int *
-       to optgroup_flags_t *.  Use TDF_NONE and OPTGROUP_NONE rather than
-       0.  Update for changes to optinfo_verbosity_options and
-       optgroup_options.
-       (opt_info_switch_p): Convert optgroup_flags from int to
-       optgroup_flags_t.
-       (dump_basic_block): Use dump_flags_t rather than int
-       for "dump_kind" param.
-       * dumpfile.h (TDF_ADDRESS, TDF_SLIM, TDF_RAW, TDF_DETAILS,
-       TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, TDF_UID)
-       TDF_STMTADDR, TDF_GRAPH, TDF_MEMSYMS, TDF_RHS_ONLY, TDF_ASMNAME,
-       TDF_EH, TDF_NOUID, TDF_ALIAS, TDF_ENUMERATE_LOCALS, TDF_CSELIB,
-       TDF_SCEV, TDF_GIMPLE, TDF_FOLDING, MSG_OPTIMIZED_LOCATIONS,
-       MSG_MISSED_OPTIMIZATION, MSG_NOTE, MSG_ALL, TDF_COMPARE_DEBUG,
-       TDF_NONE): Convert from macros to...
-       (enum dump_flag): ...this new enum.
-       (dump_flags_t): Update to use enum.
-       (operator|, operator&, operator~, operator|=, operator&=):
-       Implement for dump_flags_t.
-       (OPTGROUP_NONE, OPTGROUP_IPA, OPTGROUP_LOOP, OPTGROUP_INLINE,
-       OPTGROUP_OMP, OPTGROUP_VEC, OPTGROUP_OTHER, OPTGROUP_ALL):
-       Convert from macros to...
-       (enum optgroup_flag): ...this new enum.
-       (optgroup_flags_t): New typedef.
-       (operator|, operator|=): Implement for optgroup_flags_t.
-       (struct dump_file_info): Convert field "alt_flags" to
-       dump_flags_t.  Convert field "optgroup_flags" to
-       optgroup_flags_t.
-       (dump_basic_block): Use dump_flags_t rather than int for param.
-       (dump_generic_expr_loc): Likewise.
-       (dump_dec): Likewise.
-       (dump_register): Convert param "optgroup_flags" to
-       optgroup_flags_t.
-       (opt_info_enable_passes): Likewise.
-       * early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather
-       than 0.
-       * gimple-pretty-print.c (debug): Likewise.
-       * gimple-ssa-store-merging.c (bswap_replace): Likewise.
-       (merged_store_group::apply_stores): Likewise.
-       * gimple-ssa-strength-reduction.c (insert_initializers): Likewise.
-       * gimple.c (verify_gimple_pp): Likewise.
-       * graphite-poly.c (print_pbb_body): Likewise.
-       * passes.c (pass_manager::register_one_dump_file): Convert
-       local "optgroup_flags" to optgroup_flags_t.
-       * print-tree.c (print_node): Use TDF_NONE rather than 0.
-       (debug): Likewise.
-       (debug_body): Likewise.
-       * tree-pass.h (struct pass_data): Convert field "optgroup_flags"
-       to optgroup_flags_t.
-       * tree-pretty-print.c (print_struct_decl): Use TDF_NONE rather
-       than 0.
-       * tree-ssa-math-opts.c (convert_mult_to_fma_1): Likewise.
-       (convert_mult_to_fma): Likewise.
-       * tree-ssa-reassoc.c (undistribute_ops_list): Likewise.
-       * tree-ssa-sccvn.c (vn_eliminate): Likewise.
-       * tree-vect-data-refs.c (dump_lower_bound): Convert param
-       "dump_kind" to dump_flags_t.
+       PR tree-optimization/92280
+       * match.pd (BIT_FIELD_REF of CTOR): Unless the original CTOR
+       had a single use do not create a new CTOR.
+       * tree-ssa-forwprop.c (simplify_bitfield_ref): Do not re-fold
+       BIT_FIELD_REF of a CTOR via GENERIC.
  
- 2018-06-08  Segher Boessenkool  <segher@kernel.crashing.org>
+ 2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>
  
-       * config/rs6000/rs6000.c (min, max): Delete.
+       * config/s390/s390.c (s390_vector_alignment): Check if the value
+       fits into uhwi before using it.
  
- 2018-06-08  Segher Boessenkool  <segher@kernel.crashing.org>
+ 2019-11-05  Martin Liska  <mliska@suse.cz>
  
-       * doc/invoke.texi (RS/6000 and PowerPC Options): Delete mention of
-       -mabi=spe and -mabi=no-spe.
+       * symbol-summary.h: Use ggc_delete.
  
- 2018-06-08  Martin Liska  <mliska@suse.cz>
+ 2019-11-05  Anton Youdkevitch  <anton.youdkevitch@bell-sw.com>
  
-       * ipa-pure-const.c (propagate_pure_const): Use ::get at places
-         where we expect an existing summary.
+       * config/aarch64/aarch64.c (thunderx2t99_vector_cost):
+       Change vec_perm field to 10.
  
- 2018-06-08  Martin Liska  <mliska@suse.cz>
+ 2019-11-05  Arnaud Charlet  <charlet@adacore.com>
  
-       * ipa-inline-analysis.c (simple_edge_hints): Use ::get method.
-       * ipa-inline.h (estimate_edge_growth): Likewise.
+       * doc/install.texi: Further fix syntax for html generation.
  
- 2018-06-08  Martin Liska  <mliska@suse.cz>
+ 2019-11-05  Martin Liska  <mliska@suse.cz>
  
-       * cgraph.c (function_version_hasher::hash): Use
-       cgraph_node::get_uid ().
-       (function_version_hasher::equal):
-       * cgraph.h (cgraph_node::get_uid): New method.
-       * ipa-inline.c (update_caller_keys): Use
-       cgraph_node::get_uid ().
-       (update_callee_keys): Likewise.
-       * ipa-utils.c (searchc): Likewise.
-       (ipa_reduced_postorder): Likewise.
-       * lto-cgraph.c (input_node): Likewise.
-       * passes.c (is_pass_explicitly_enabled_or_disabled): Likewise.
-       * symbol-summary.h (symtab_insertion): Likewise.
-       (symtab_removal): Likewise.
-       (symtab_duplication): Likewise.
-       * tree-pretty-print.c (dump_function_header): Likewise.
-       * tree-sra.c (convert_callers_for_node): Likewise.
+       * symbol-summary.h: Rename allocator to m_allocator and
+       add comment.
  
- 2018-06-08  Martin Liska  <mliska@suse.cz>
+ 2019-11-05  Richard Biener  <rguenther@suse.de>
  
-       * cgraph.c (symbol_table::create_edge): Always assign a new
-       unique number.
-       (symbol_table::free_edge): Do not recycle numbers.
-       * cgraph.h (cgraph_edge::get): New method.
-       * symbol-summary.h (symtab_removal): Use it.
-       (symtab_duplication): Likewise.
-       (call_summary::hashable_uid): Remove.
+       PR tree-optimization/92324
+       * tree-vect-loop.c (check_reduction_path): For MIN/MAX require
+       all signed or unsigned operations.
  
- 2018-06-08  Martin Liska  <mliska@suse.cz>
+ 2019-11-05  Jan Hubicka  <jh@suse.cz>
  
-       * ipa-inline-analysis.c (inline_edge_removal_hook): Remove.
-       (initialize_growth_caches): Remove.
-       (free_growth_caches): Likewise.
-       (do_estimate_edge_time): Use edge_growth_cache.
-       (do_estimate_edge_size): Likewise.
-       (do_estimate_edge_hints): Likewise.
-       * ipa-inline.c (reset_edge_caches): Likewise.
-       (recursive_inlining): Likewise.
-       (inline_small_functions): Likewise.
-       * ipa-inline.h (initialize_growth_caches): Remove.
-       (estimate_edge_size): Likewise.
-       (estimate_edge_time): Likewise.
-       (estimate_edge_hints): Likewise.
-       (reset_edge_growth_cache): Likewise.
-       * symbol-summary.h (call_summary::remove): New method.
- 2018-06-08  Martin Liska  <mliska@suse.cz>
-       * ipa-cp.c (class edge_clone_summary): New summary.
-       (grow_edge_clone_vectors): Remove.
-       (ipcp_edge_duplication_hook): Remove.
-       (class edge_clone_summary_t): New call_summary class.
-       (ipcp_edge_removal_hook): Remove.
-       (edge_clone_summary_t::duplicate): New function.
-       (get_next_cgraph_edge_clone): Use edge_clone_summaries.
-       (create_specialized_node): Likewise.
-       (ipcp_driver): Initialize edge_clone_summaries and do not
-       register hooks.
+       * hsa-brig.c: Include alloc-pool.h
+       * hsa-dump.c: Likewise.
+       * hsa-gen.c: Likewise.
+       * hse-regalloc.c: Likewise.
+       * ipa-hsa.c: Likewise.
+       * ipa-predicate.c: Likewise.
+       * ipa-reference.c: Likewise.
+       * ipa-sra.c: Likewise.
+       * omp-expand.c: Likewise.
+       * omp-general.c: Likewise.
+       * omp-low.c: Likewise.
+       * sumbol-summary.h (function_summary_base): Add allocator.
+       (function_summary<T *>::function_summary): Update construction.
+       (fast_function_summary<T *, V>::fast_function_summary): Likewise.
+       (call_summary_base): Add allcator.
+       (call_summary<T *>::call_summary): Update construction.
+       (fast_call_summary<T *, V>::fast_call_summary): Likewise.
  
- 2018-06-08  Martin Liska  <mliska@suse.cz>
+ 2019-11-05  Jakub Jelinek  <jakub@redhat.com>
  
-       * symbol-summary.h (get): New function.
-       (call_summary::m_initialize_when_cloning): New class member.
+       PR tree-optimization/91945
+       * builtins.c (compute_objsize): For ARRAY_REF, only multiply off
+       by tpsize if it is both non-NULL and INTEGER_CST, otherwise punt.
+       Formatting fix.
  
- 2018-06-08  Martin Liska  <mliska@suse.cz>
+ 2019-11-05  Aldy Hernandez  <aldyh@redhat.com>
  
-       * cgraph.c (cgraph_node::remove): Do not recycle uid.
-       * cgraph.h (symbol_table::release_symbol): Do not pass uid.
-       (symbol_table::allocate_cgraph_symbol): Do not set uid.
-       * passes.c (uid_hash_t): Record removed_nodes by their uids.
-       (remove_cgraph_node_from_order): Use the removed_nodes set.
-       (do_per_function_toporder): Likwise.
-       * symbol-summary.h (symtab_insertion): Use cgraph_node::uid
-       instead of summary_uid.
-       (symtab_removal): Likewise.
-       (symtab_duplication): Likewise.
+       * range-op.cc (wi_set_zero_nonzero_bits): Remove static qualifier.
+       * range-op.h (wi_set_zero_nonzero_bits): New prototype.
+       * tree-vrp.h (vrp_set_zero_nonzero_bits): Remove.
+       * tree-vrp.c (wide_int_range_set_zero_nonzero_bits): Remove.
+       (vrp_set_zero_nonzero_bits): Move to...
+       * vr-values.c (vr_set_zero_nonzero_bits): ...here.
+       (vr_values::simplify_bit_ops_using_ranges): Rename
+       vrp_set_zero_nonzero_bits to vr_set_zero_nonzero_bits.
  
- 2018-06-08  Martin Liska  <mliska@suse.cz>
+ 2019-11-05  Martin Liska  <mliska@suse.cz>
  
-       * ipa-cp.c (ipcp_store_bits_results): Use
-       ipcp_transformation_sum.
-       (ipcp_store_vr_results): Likewise.
-       * ipa-prop.c (ipcp_grow_transformations_if_necessary): Renamed
-       to ...
-       (ipcp_transformation_initialize): ... this.
-       (ipa_set_node_agg_value_chain):
-       (ipa_node_params_t::duplicate): Use ipcp_transformation_sum.
-       (write_ipcp_transformation_info): Likewise.
-       (read_ipcp_transformation_info): Likewise.
-       (ipcp_update_bits): Likewise.
-       (ipcp_update_vr): Likewise.
-       (ipcp_transform_function): Likewise.
-       * ipa-prop.h: Rename ipcp_transformation_summary to
-       ipcp_transformation.
-       (class ipcp_transformation_t): New function summary.
-       (ipcp_get_transformation_summary): Use ipcp_transformation_sum.
-       (ipa_get_agg_replacements_for_node): Likewise.
- 2018-06-08  Martin Liska  <mliska@suse.cz>
-       * ipa-pure-const.c (struct funct_state_d): Do it class instead
-       of struct.
-       (class funct_state_summary_t): New function_summary class.
-       (has_function_state): Remove.
-       (get_function_state): Likewise.
-       (set_function_state): Likewise.
-       (add_new_function): Likewise.
-       (funct_state_summary_t::insert): New function.
-       (duplicate_node_data): Remove.
-       (remove_node_data): Remove.
-       (funct_state_summary_t::duplicate): New function.
-       (register_hooks): Create new funct_state_summaries.
-       (pure_const_generate_summary): Use it.
-       (pure_const_write_summary): Likewise.
-       (pure_const_read_summary): Likewise.
-       (propagate_pure_const): Likewise.
-       (propagate_nothrow): Likewise.
-       (dump_malloc_lattice): Likewise.
-       (propagate_malloc): Likewise.
-       (execute): Do not register hooks, just remove summary
-       instead.
-       (pass_ipa_pure_const::pass_ipa_pure_const): Simplify
-       constructor.
- 2018-06-08  Martin Liska  <mliska@suse.cz>
-       * ipa-reference.c (remove_node_data): Remove.
-       (duplicate_node_data): Likewise.
-       (class ipa_ref_var_info_summary_t): New class.
-       (class ipa_ref_opt_summary_t): Likewise.
-       (get_reference_vars_info): Use ipa_ref_var_info_summaries.
-       (get_reference_optimization_summary): Use
-       ipa_ref_opt_sum_summaries.
-       (set_reference_vars_info): Remove.
-       (set_reference_optimization_summary): Likewise.
-       (ipa_init): Create summaries.
-       (init_function_info): Use function summary.
-       (ipa_ref_opt_summary_t::duplicate): New function.
-       (ipa_ref_opt_summary_t::remove): New function.
-       (get_read_write_all_from_node): Fix GNU coding style.
-       (propagate): Use function summary.
-       (write_node_summary_p): Fix GNU coding style.
-       (stream_out_bitmap): Likewise.
-       (ipa_reference_read_optimization_summary): Use function summary.
-       (ipa_reference_c_finalize): Do not release hooks.
- 2018-06-08  Martin Liska  <mliska@suse.cz>
-       * ipa-fnsummary.c (dump_ipa_call_summary): Use ::get method.
-       (analyze_function_body): Extract multiple calls of get_create.
-       * ipa-inline-analysis.c (simple_edge_hints): Likewise.
-       * ipa-inline.c (recursive_inlining): Use ::get method.
-       * ipa-inline.h (estimate_edge_growth): Likewise.
- 2018-06-08  Martin Liska  <mliska@suse.cz>
-       * hsa-common.h (enum hsa_function_kind): Rename HSA_NONE to
-       HSA_INVALID.
-       (hsa_function_summary::hsa_function_summary): Use the new enum
-       value.
-       (hsa_gpu_implementation_p): Use hsa_summaries::get.
-       * hsa-gen.c (hsa_get_host_function): Likewise.
-       (get_brig_function_name): Likewise.
-       * ipa-hsa.c (process_hsa_functions): Likewise.
-       (ipa_hsa_write_summary): Likewise.
-       * symbol-summary.h (symtab_duplication): Use ::get function/
-       (get): New function.
- 2018-06-08  Martin Liska  <mliska@suse.cz>
-       * config/i386/i386.c (ix86_can_inline_p): Use get_create instead
-       of get.
-       * hsa-common.c (hsa_summary_t::link_functions): Likewise.
-       (hsa_register_kernel): Likewise.
-       * hsa-common.h (hsa_gpu_implementation_p): Likewise.
-       * hsa-gen.c (hsa_get_host_function): Likewise.
-       (get_brig_function_name): Likewise.
-       (generate_hsa): Likewise.
-       (pass_gen_hsail::execute): Likewise.
-       * ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
-       (devirtualization_time_bonus): Likewise.
-       (ipcp_propagate_stage): Likewise.
-       * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
-       (edge_set_predicate): Likewise.
-       (evaluate_conditions_for_known_args): Likewise.
-       (evaluate_properties_for_edge): Likewise.
-       (ipa_fn_summary::reset): Likewise.
-       (ipa_fn_summary_t::duplicate): Likewise.
-       (dump_ipa_call_summary): Likewise.
-       (ipa_dump_fn_summary): Likewise.
-       (analyze_function_body): Likewise.
-       (compute_fn_summary): Likewise.
-       (estimate_edge_devirt_benefit): Likewise.
-       (estimate_edge_size_and_time): Likewise.
-       (estimate_calls_size_and_time): Likewise.
-       (estimate_node_size_and_time): Likewise.
-       (inline_update_callee_summaries): Likewise.
-       (remap_edge_change_prob): Likewise.
-       (remap_edge_summaries): Likewise.
+       PR c++/92339
+       * fold-const.c (operand_compare::hash_operand): Remove
+       FIELD_DECL handling.
+ 2019-11-05  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.h (vrp_bitmap_equal_p): Remove.
+       * tree-vrp.c (vrp_bitmap_equal_p): Move before use and make
+       static.
+ 2019-11-05  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.c (value_range_base::operator==): Use equal_p to
+       properly handle symbolics.
+       (range_compatible_p): Remove.
+ 2019-11-04  Kamlesh Kumar  <kamleshbhalui@gmail.com>
+       * common.opt (-fabi-version): Document =14.
+       * doc/invoke.texi (C++ Dialect Options): Likewise.
+ 2019-11-04  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.c (value_range_base::set): Do not special case pointers.
+ 2019-11-04  Tobias Burnus  <tobias@codesourcery.com>
+       * config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): New function.
+       (TARGET_OMP_DEVICE_KIND_ARCH_ISA): Redefine to
+       gcn_omp_device_kind_arch_isa.
+       * config/gcn/t-omp-device: New file.
+       * configure.ac: Support gcn for omp_device_property.
+       * configure: Regenerate.
+ 2019-11-04  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.h (vrp_val_min): Remove handle_pointers argument.
+       (vrp_val_max): Same.
+       (vrp_val_is_min): Same.
+       (vrp_val_is_max): Same.
+       (value_range_base::nonzero_p): Remove last argument to
+       vrp_val_is_max.
+       * tree-vrp.c (vrp_val_min): Remove handle_pointers argument.
+       (vrp_val_max): Same.
+       (vrp_val_is_min): Same.
+       (vrp_val_is_max): Same.
+       (value_range_base::set_varying): Remove last argument to vrp_val*.
+       (value_range_base::dump): Same.
+       (value_range_base::set): Same.
+       (value_range_base::normalize_symbolics): Same.
+       (value_range_base::num_pairs): Same.
+       (value_range_base::lower_bound): Same.
+       (value_range_base::upper_bound): Same.
+       (ranges_from_anti_range): Remove handle_pointers argument.
+       (value_range_base::singleton_p): Remove last argument to
+       ranges_from_anti_range.
+ 2019-11-04  Jan Hubicka  <jh@suse.cz>
+       * ipa-reference.c (init_function_info): Initialize
+       info->global.statics_read.
+ 2019-11-04  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.c (value_range_base::invert): Use constructors to build
+       range.
+ 2019-11-04  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.c (range_int_cst_singleton_p): Remove.
+       * tree-vrp.h (range_int_cst_singleton_p): Remove.
+ 2019-11-04  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.c (value_range_base::normalize_addresses): Handle
+       VR_UNDEFINED.
+ 2019-11-04  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.c (dump_assert_info): New.
+       (dump_asserts_info): New.
+ 2019-11-04  Jan Hubicka  <jh@suse.cz>
+       * ipa-inline-transform.c: Include ipa-utils.h
+       (inline_call): Set thunk_expansion flag.
+       * ipa-utils.h (thunk_expansion): Declare.
+       * ipa-devirt.c (thunk_expansion): New global var.
+       (devirt_node_removal_hook): Do not invalidate cache while
+       doing thunk expansion.
+ 2019-11-04  Tamar Christina  <tamar.christina@arm.com>
+       * tree-vect-slp.c (vectorize_slp_instance_root_stmt): Initialize rstmt.
+ 2019-11-04  Martin Sebor  <msebor@redhat.com>
+       PR tree-optimization/92349
+       * tree-vrp.c (vrp_prop::check_array_ref): Avoid assuming struct
+       memebers have constant sizes.
+ 2019-11-04  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       * tree-vect-loop.c (vect_analyze_loop): Remove orig_loop_vinfo
+       parameter.
+       * tree-vectorizer.h (vect_analyze_loop): Update declaration.
+       * tree-vectorizer.c (try_vectorize_loop_1): Update calls to
+       vect_analyze_loop.
+ 2019-11-04  Joel Hutton  <Joel.Hutton@arm.com>
+       * expr.c (store_constructor): Modify to handle single element vectors.
+       * tree-vect-slp.c (vect_analyze_slp_instance): Add case for vector
+       constructors.
+       (vect_slp_check_for_constructors): New function.
+       (vect_slp_analyze_bb_1): Call new function to check for vector
+       constructors.
+       (vectorize_slp_instance_root_stmt): New function.
+       (vect_schedule_slp): Call new function to vectorize root stmt of vector
+       constructors.
+       * tree-vectorizer.h (SLP_INSTANCE_ROOT_STMT): New field.
+ 2019-11-04  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92345
+       * tree-vect-loop.c (vect_is_simple_reduction): Return whether
+       we produced a reduction chain.
+       (vect_analyze_scalar_cycles_1): Do not add reduction chains to
+       LOOP_VINFO_REDUCTIONS.
+ 2019-11-04  Jan Hubicka  <jh@suse.cz>
+       * cgraphclones.c (cgraph_node::create_version_clone): Do not
+       duplicate summaries.
+       * ipa-fnsummary.c (ipa_fn_summary_alloc): Allocate size summary
+       first.
+       (ipa_fn_summary_t::duplicate): Use get instead of get_create to
+       access call summaries.
+       (dump_ipa_call_summary): Be ready for missing edge summaries.
+       (analyze_function_body): Use get instead of get_create to access
+       edge summary.
+       (estimate_calls_size_and_time): Do not access summaries of
+       inlined edges; sanity check they are missing.
+       (ipa_call_context::estimate_size_and_time): Use get instead
+       of get_create to access node summary.
+       (inline_update_callee_summaries): Do not update depth of
+       inlined edge.
+       (ipa_merge_fn_summary_after_inlining): Remove inline edge from
+       growth caches.
+       (ipa_merge_fn_summary_after_inlining): Use get instead
+       of get_create.
+       * ipa-fnsummary.h (ipa_remove_from_growth_caches): Declare.
+       * ipa-inline-analyssi.c (edge_growth_cache): Turn to
+       fast summary.
+       (initialize_growth_caches): Update.
+       (do_estimate_edge_time): Remove redundant copy of context.
+       (ipa_remove_from_growth_caches): New function.
+       * ipa-inline.c (flatten_function): Update overall summary
+       only when optimizing.
+       (inline_to_all_callers): Update overall summary of function
+       inlined to.
+       * ipa-inline.h (edge_growth_cache): Turn to fast summary.
+       * symbol-summary.h (call_summary_base): Set m_initialize_when_cloning
+       to false.
+ 2019-11-04  Richard Biener  <rguenther@suse.de>
+       * system.h: Include malloc.h if INCLUDE_MALLOC_H and HAVE_MALLINFO.
+       * ggc-common.c: Remove inclusion of malloc.h, define INCLUDE_MALLOC_H.
+ 2019-11-04  David Edelsohn  <dje.gcc@gmail.com>
+       * ggc-common.c: Include system.h before malloc.h.
+ 2019-11-04  Alexandre Oliva <oliva@adacore.com>
+       * configure.ac: Pass --enable-obsolete=* and
+       --enable-option-checking=* down to build configure, and fail
+       if it fails.  AC_SUBST HAVE_AUTO_BUILD.
+       * configure: Rebuild.
+       * Makefile.in [HAVE_AUTO_BUILD] (auto-build.h): New rule.
+       [HAVE_AUTO_BUILD] (config.status): Depend on auto-build.h.
+ 2019-11-04  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config.in: Regenerate.
+       * config/msp430/msp430.c (msp430_option_override): Emit an error if
+       -mtiny-printf is used without GCC being configured with
+       --enable-newlib-nano-formatted-io.
+       * config/msp430/msp430.h (LINK_SPEC): Pass 
+       "--wrap puts --wrap printf" when -mtiny-printf is used.
+       * config/msp430/msp430.opt: Document -mtiny-printf.
+       * configure: Regenerate.
+       * configure.ac: Enable --enable-newlib-nano-formatted-io flag.
+       Define HAVE_NEWLIB_NANO_FORMATTED_IO if
+       --enable-newlib-nano-formatted-io is passed.
+       * doc/invoke.texi: Document -mtiny-printf.
+ 2019-11-04  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * configure: Regenerate.
+ 2019-11-04  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config/msp430/driver-msp430.c
+       (msp430_get_linker_devices_include_path): New spec function.
+       * config/msp430/msp430-devices.c (msp430_dirname): New function.
+       (extract_devices_dir_from_exec_prefix): New function.
+       (extract_devices_dir_from_collect_gcc): New function.
+       (msp430_check_env_var_for_devices): New function.
+       (msp430_check_path_for_devices): Use xstrdup instead of ASTRDUP.
+       (parse_devices_csv): Call msp430_check_env_var_for_devices if
+       devices.csv was not found using other methods.
+       * config/msp430/msp430-devices.h (msp430_check_env_var_for_devices):
+       New prototype.
+       (msp430_dirname): Likewise.
+       * config/msp430/msp430.c (msp430_register_pre_includes): New function.
+       * config/msp430/msp430.h (EXTRA_SPEC_FUNCTIONS): Add
+       msp430_get_linker_devices_include_path.
+       (TARGET_EXTRA_PRE_INCLUDES): Define.
+       * doc/invoke.texi: Document new ways of searching for support files.
+ 2019-11-04  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92301
+       * tree-vect-stmts.c (process_use): Force reduction PHI defs live
+       as required by epilogue generation
+ 2019-11-04  Martin Liska  <mliska@suse.cz>
+       PR ipa/92304
+       * fold-const.c (operand_compare::hash_operand): Fix field
+       hashing of CONSTRUCTOR.
+ 2019-11-04  Martin Liska  <mliska@suse.cz>
+       * ggc.h (ggc_delete): New function.
+       * ipa-fnsummary.c (ipa_free_fn_summary): Use it.
+       * ipa-prop.c (ipa_free_all_edge_args): Likewise.
+       (ipa_free_all_node_params): Likewise.
+       * ipa-sra.c (ipa_sra_analysis): Likewise.
+ 2019-11-02  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-fnsummary.c (set_cond_stmt_execution_predicate,
+       set_switch_stmt_execution_predicate, compute_bb_predicates,
+       will_be_nonconstant_expr_predicate,
+       phi_result_unknown_predicate,
+       analyze_function_body): Pass arround params summary.
+       (ipa_call_context::duplicate_from): New comment;
+       only duplicate useful values.
+       (ipa_call_context::equal_to): Only compare useful values.
+       (remap_edge_summaries): Pass params_summary.
+       (remap_hint_predicate): Likewise.
        (ipa_merge_fn_summary_after_inlining): Likewise.
-       (ipa_update_overall_fn_summary): Likewise.
-       (read_ipa_call_summary): Likewise.
-       (inline_read_section): Likewise.
-       (write_ipa_call_summary): Likewise.
-       (ipa_fn_summary_write): Likewise.
-       (ipa_free_fn_summary): Likewise.
-       * ipa-hsa.c (process_hsa_functions): Likewise.
-       (ipa_hsa_write_summary): Likewise.
-       (ipa_hsa_read_section): Likewise.
-       * ipa-icf.c (sem_function::merge): Likewise.
-       * ipa-inline-analysis.c (simple_edge_hints): Likewise.
-       (do_estimate_edge_time): Likewise.
-       (estimate_size_after_inlining): Likewise.
-       (estimate_growth): Likewise.
-       (growth_likely_positive): Likewise.
-       * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
-       (inline_call): Likewise.
-       * ipa-inline.c (caller_growth_limits): Likewise.
-       (can_inline_edge_p): Likewise.
-       (can_inline_edge_by_limits_p): Likewise.
-       (compute_uninlined_call_time): Likewise.
-       (compute_inlined_call_time): Likewise.
-       (want_inline_small_function_p): Likewise.
-       (edge_badness): Likewise.
-       (update_caller_keys): Likewise.
-       (update_callee_keys): Likewise.
-       (recursive_inlining): Likewise.
-       (inline_small_functions): Likewise.
-       (inline_to_all_callers_1): Likewise.
-       (dump_overall_stats): Likewise.
-       (early_inline_small_functions): Likewise.
-       (early_inliner): Likewise.
-       * ipa-inline.h (estimate_edge_growth): Likewise.
-       * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
-       * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
-       * ipa-prop.h (IPA_NODE_REF): Likewise.
-       (IPA_EDGE_REF): Likewise.
-       * ipa-pure-const.c (malloc_candidate_p): Likewise.
-       (propagate_malloc): Likewise.
-       * ipa-split.c (execute_split_functions): Likewise.
-       * symbol-summary.h: Rename get to get_create.
-       (get): Likewise.
-       (get_create): Likewise.
-       * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
- 2018-06-08  Martin Liska  <mliska@suse.cz>
-       * symbol-summary.h (release): Move definition out of class
-       declaration.
-       (symtab_removal): Likewise.
-       (symtab_duplication): Likewise.
- 2018-06-08  Martin Liska  <mliska@suse.cz>
-       * symbol-summary.h (function_summary): Move constructor
-       implementation out of class declaration.
-       (release): Likewise.
-       (symtab_insertion): Likewise.
-       (symtab_removal): Likewise.
-       (symtab_duplication): Likewise.
-       (get): Likewise.
- 2018-06-08  Martin Liska  <mliska@suse.cz>
-       * Makefile.in: Remove support for MPX (macros, related functions,
-       fields in cgraph_node, ...).
-       * builtin-types.def (BT_BND): Likewise.
-       (BT_FN_BND_CONST_PTR): Likewise.
-       (BT_FN_CONST_PTR_BND): Likewise.
-       (BT_FN_VOID_PTR_BND): Likewise.
-       (BT_FN_BND_CONST_PTR_SIZE): Likewise.
-       (BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise.
-       * builtins.c (expand_builtin_memcpy_with_bounds): Likewise.
-       (expand_builtin_mempcpy_with_bounds): Likewise.
-       (expand_builtin_memset_with_bounds): Likewise.
-       (expand_builtin_memset_args): Likewise.
-       (std_expand_builtin_va_start): Likewise.
-       (expand_builtin): Likewise.
-       (expand_builtin_with_bounds): Likewise.
-       * builtins.def (DEF_BUILTIN_CHKP): Likewise.
-       (DEF_LIB_BUILTIN_CHKP): Likewise.
-       (DEF_EXT_LIB_BUILTIN_CHKP): Likewise.
-       (DEF_CHKP_BUILTIN): Likewise.
-       (BUILT_IN_MEMCPY): Likewise.
-       (BUILT_IN_MEMMOVE): Likewise.
-       (BUILT_IN_MEMPCPY): Likewise.
-       (BUILT_IN_MEMSET): Likewise.
-       (BUILT_IN_STPCPY): Likewise.
-       (BUILT_IN_STRCAT): Likewise.
-       (BUILT_IN_STRCHR): Likewise.
-       (BUILT_IN_STRCPY): Likewise.
-       (BUILT_IN_STRLEN): Likewise.
-       (BUILT_IN_MEMCPY_CHK): Likewise.
-       (BUILT_IN_MEMMOVE_CHK): Likewise.
-       (BUILT_IN_MEMPCPY_CHK): Likewise.
-       (BUILT_IN_MEMSET_CHK): Likewise.
-       (BUILT_IN_STPCPY_CHK): Likewise.
-       (BUILT_IN_STRCAT_CHK): Likewise.
-       (BUILT_IN_STRCPY_CHK): Likewise.
-       * calls.c (store_bounds): Likewise.
-       (emit_call_1): Likewise.
-       (special_function_p): Likewise.
-       (maybe_warn_nonstring_arg): Likewise.
-       (initialize_argument_information): Likewise.
-       (finalize_must_preallocate): Likewise.
-       (compute_argument_addresses): Likewise.
-       (expand_call): Likewise.
-       * cfgexpand.c (expand_call_stmt): Likewise.
-       (expand_return): Likewise.
-       (expand_gimple_stmt_1): Likewise.
-       (pass_expand::execute): Likewise.
-       * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
-       (cgraph_node::remove): Likewise.
-       (cgraph_node::dump): Likewise.
+       (inline_read_section): Initialize params summary used flags.
+       * ipa-predicate.c (predicate::remap_after_inlining): Pass
+       around param_summary.
+       (add_condition): Initialized used params summary flags.
+       * ipa-predicate.h (inline_param_summary::equals_to): Make const.
+       (inline_param_summary::useless_p): New predicate.
+       (remap_after_inlining, add_condition): Update prototype
+       * ipa-prop.c (ipa_populate_param_decls): Watch overflow in
+       move_cost.
+       (ipa_note_param_call): Add parameter POLYMORPHIC; update params
+       summaries.
+       (ipa_analyze_indirect_call_uses): Update use of ipa_note_param_call.
+       (ipa_analyze_virtual_call_uses): Likewise.
+       (update_indirect_edges_after_inlining): Update param summaries.
+       (ipa_print_node_params): Print used flags.
+       (ipa_read_indirect_edge_info): Update param summareis.
+       * ipa-prop.h (ipa_param_descriptor): Add
+       used_by_ipa_predicates, used_by_indirect_call
+       and used_by_polymorphic_call.
+       (ipa_set_param_used_by_ipa_predicates,
+       ipa_set_param_used_by_indirect_call,
+       ipa_set_param_used_by_polymorphic_call,
+       ipa_is_param_used_by_ipa_predicates,
+       ipa_is_param_used_by_indirect_call,
+       ipa_is_param_used_by_polymorphic_call): New inline functions.
+ 2019-11-02  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-fnsummary.c (ipa_call_context::duplicate_from): New
+       member function.
+       (ipa_call_context::release): Add ALL parameter.
+       (ipa_call_context::equal_to): New member function.
+       * ipa-fnsummary.h (ipa_call_context): Add empty constructor;
+       duplicate_form, release, equal_to and exists_p member functoins.
+       * ipa-inline-analysis.c (node_context_cache_entry): New
+       class.
+       (node_context_summary): Likewise.
+       (node_context_cache, node_context_cache_hit, node_context_cache_miss,
+       node_context_clear): New static vars.
+       (initialize_growth_caches): New function.
+       (free_growth_caches): Also delete node_context_cache; output stats.
+       (do_estimate_edge_time): Cache contexts.
+       (reset_node_cache): New function.
+       * ipa-inline.c (reset_edge_caches): Reset also node cache.
+       (inline_small_functions): Initialize growth caches.
+       * ipa-inline.h (reset_node_cache, initialize_growth_caches):
+       Declare.
+       * ipa-predicate.h (inline_param_summary::equal_to): New.
+       * ipa-prop.c (ipa_agg_jf_item::equal_to): New.
+       * ipa-prop.h (ipa_agg_jf_item): Declare equal_to member function.
+       (ipa_agg_jump_function): Implement equal_to member function.
+ 2019-11-02  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-fnsummary.c (inline_read_section): Set vector size
+       ahead of time.
+ 2019-11-02  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-fnsummary.c (ipa_call_context): New constructor.
+       (estimate_node_size_and_time): Turn to ...
+       (ipa_call_context::estimate_size_and_time): ... this one.
+       (ipa_call_context::release): New.
+       * ipa-fnsummary.h (ipa_call_context): New class.
+       (estimate_node_size_and_time): Remove.
+       * ipa-inline-analysis.c (do_estimate_edge_time, do_estimate_edge_size,
+       do_estimate_edge_hints): Update.
+ 2019-11-02  Jan Hubicka  <hubicka@ucw.cz>
+       * config.in: Regenerate.
+       * configure: Regenerate.
+       * configure.ac: Check for mallinfo.
+       * ggc-common.c: Include malloc.h if available;
+       include options.h
+       (report_heap_memory_use): New functoin.
+       * ggc-page.c (ggc_grow): Do not print "start".
+       * ggc.h (report_heap_memory_use): Declare.
+       * pases.c (execute_one_pass): Report memory after IPA passes.
+       (ipa_read_summaries_1): Likewise.
+       (ipa_read_optimization_summaries_1): Likewise.
+ 2019-11-02  Jakub Jelinek  <jakub@redhat.com>
+       * gimplify.h (omp_construct_selector_matches): Change return
+       type to int, add a new SCORES argument.
+       * gimplify.c (omp_construct_selector_matches): Likewise.  If
+       SCORES is non-NULL, compute scores of each construct.
+       * omp-general.h (omp_get_context_selector): Declare.
+       * omp-general.c (omp_maybe_offloaded, omp_context_selector_matches):
+       Adjust omp_construct_selector_matches callers.
+       (omp_get_context_selector): New function, moved from c-family/c-omp.c.
+       (omp_context_compute_score): New function.
+       (omp_resolve_declare_variant): Compute scores and decide based on
+       that.
+       PR bootstrap/92314
+       * configure.ac: Don't look for omp-device-properties files from
+       installed offloading compilers.  Instead add tmake_file snippets
+       for configured offloading targets and use files they generate.
+       * Makefile.in (install): Don't depend on
+       install-omp-device-properties.
+       (install-omp-device-properties): Remove goal.
+       * config/i386/t-omp-device: New file.
+       * config/i386/t-intelmic (omp-device-properties): Remove goal.
+       * config/nvptx/t-omp-device: New file.
+       * config/nvptx/t-nvptx (omp-device-properties): Remove goal.
+       * configure: Regenerated.
+       * omp-general.h (omp_context_selector_set_compare): Declare.
+       * omp-general.c (omp_construct_simd_compare,
+       omp_context_selector_props_compare, omp_context_selector_set_compare,
+       omp_context_selector_compare): New functions.
+       (omp_resolve_declare_variant): Prune variants that are strict subset
+       of another variant.
+ 2019-11-01  Martin Sebor  <msebor@redhat.com>
+       PR middle-end/91679
+       PR middle-end/91647
+       PR middle-end/91463
+       PR middle-end/92312
+       * doc/invoke.texi (-Wzero-length-bounds): Document.
+       * gimple-match-head.c (try_conditional_simplification): Use memcpy
+       instead of a hand-rolled loop to avoid PR 92323.
+       * tree-vrp.c (vrp_prop::check_array_ref): Handle trailing arrays
+       with initializers.
+       (vrp_prop::check_mem_ref): Handle declared struct objects.
+       * tree.c (last_field): New function.
+       (array_at_struct_end_p): Handle MEM_REF.
+       (get_initializer_for): New helper.
+       (component_ref_size): Add argument.  Rename locals.  Call
+       get_initializer_for instead of fold_ctor_reference.  Correct handling
+       of flexible array members.
+       * wide-int.h (generic_wide_int <storage>::sign_mask): Assert invariant.
+ 2019-11-01  Kewen Lin  <linkw@gcc.gnu.org>
+       * config/rs6000/rs6000-modes.def (V2SF, V2SI): New modes.
+       * config/rs6000/vsx.md (UNSPEC_VSX_CVSPSXDS,
+       UNSPEC_VSX_CVSPUXDS): Remove.
+       (vsx_xvcvspdp): New define_expand, old define_insn split to...
+       (vsx_xvcvspdp_be): ... this.  New.  And...
+       (vsx_xvcvspdp_le): ... this.  New.
+       (vsx_xvcv<su>xwdp): New define_expand, old define_insn split to...
+       (vsx_xvcv<su>xwdp_be): ... this.  New.  And...
+       (vsx_xvcv<su>xwdp_le): ... this.  New.
+       (vsx_xvcvsp<su>xds): New define_expand, old define_insn split to...
+       (vsx_xvcvsp<su>xds_be): ... this.  New.  And...
+       (vsx_xvcvsp<su>xds_le): ... this.  New.
+ 2019-11-01  Kewen Lin  <linkw@gcc.gnu.org>
+       * config/rs6000/vsx.md (UNSPEC_VSX_CVSXWSP, UNSPEC_VSX_CVUXWSP,
+       UNSPEC_VSX_XVCVSXDDP, UNSPEC_VSX_XVCVUXDDP,
+       UNSPEC_VSX_XVCVDPSXDS, UNSPEC_VSX_XVCVDPUXDS,
+       UNSPEC_VSX_XVCVSPSXWS): Remove.
+       (vsx_xvcv<su>xddp, vsx_xvcvdp<su>xds, vsx_xvcvsp<su>xws,
+       vsx_xvcv<su>xwsp): Update define_insn RTL patterns.
+ 2019-11-01  Kewen Lin  <linkw@gcc.gnu.org>
+       * config/rs6000/vsx.md (vsx_xvcdpsp): Remove define_insn.
+       (UNSPEC_VSX_XVCDPSP): Remove.
+       * config/rs6000/rs6000.c (rs6000_generate_float2_double_code):
+       Replace gen_vsx_xvcdpsp by gen_vsx_xvcvdpsp.
+ 2019-11-01  Tobias Burnus  <tobias@codesourcery.com>
+       * hooks.c (hook_tree_tree_bool_null): New.
+       * hooks.h (hook_tree_tree_bool_null): Declare.
+       * langhooks-def.h (LANG_HOOKS_OMP_ARRAY_DATA): Define.
+       (LANG_HOOKS_DECLS): Add it.
+       * langhooks.h (lang_hooks_for_decls): Add omp_array_data.
+       * omp-low.c (install_var_field): New mode for Fortran descriptor arrays.
+       (lower_omp_target): Handle Fortran array with descriptor in
+       OMP_CLAUSE_USE_DEVICE_ADDR/OMP_CLAUSE_USE_DEVICE_PTR.
+ 2019-10-31  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64-sve-builtins.cc (register_builtin_types):
+       Assert that the type we store in abi_vector_types is its own
+       main variant.
+       (svbool_type_p): Don't apply TYPE_MAIN_VARIANT here.
+ 2019-10-31  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.c (arm_legitimize_address): Don't form negative offsets
+       from a CONST_INT address when TARGET_THUMB2.
+ 2019-10-31  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (add_not_cin): New insn.
+       (add_not_shift_cin): Likewise.
+ 2019-10-31  Martin Liska  <mliska@suse.cz>
+       * ipa-icf-gimple.c (func_checker::compare_tree_ssa_label): Remove.
+       * ipa-icf-gimple.h: Remove declaration from compare_tree_ssa_label
+       and compare_memory_operand.
+ 2019-10-31  Jakub Jelinek  <jakub@redhat.com>
+       * configure.ac: Compute and substitute omp_device_properties and
+       omp_device_property_deps.
+       * Makefile.in (generated_files): Add omp-device-properties.h.
+       (omp-general.o): Depend on omp-device-properties.h.
+       (omp_device_properties): New make variable.
+       (omp-device-properties.h, s-omp-device-properties-h,
+       install-omp-device-properties): New goals.
+       (install): Depend on install-omp-device-properties for accelerators.
+       * target.def (TARGET_OMP_DEVICE_KIND_ARCH_ISA): New target hook.
+       * target.h (enum omp_device_kind_arch_isa): New enum.
+       * doc/tm.texi.in: Add placeholder for TARGET_OMP_DEVICE_KIND_ARCH_ISA
+       documentation.
+       * omp-general.c: Include omp-device-properties.h.
+       (omp_max_simt_vf): Expect OFFLOAD_TARGET_NAMES to be separated by
+       colon instead of comma.
+       (omp_offload_device_kind_arch_isa, omp_maybe_offloaded): New
+       functions.
+       (omp_context_selector_matches): Implement device set arch/isa
+       selectors, improve device set kind selector handling.
+       * config/i386/i386-options.h (ix86_omp_device_kind_arch_isa): Declare.
+       * config/i386/i386.c (TARGET_SIMD_CLONE_ADJUST,
+       TARGET_SIMD_CLONE_USABLE): Formatting fix.
+       (TARGET_OMP_DEVICE_KIND_ARCH_ISA): Redefine to
+       ix86_omp_device_kind_arch_isa.
+       * config/i386/i386-options.c (struct ix86_target_opts): Move type
+       definition from ix86_target_string to file scope.
+       (isa2_opts, isa_opts): Moved arrays from ix86_target_string function
+       to file scope.
+       (ix86_omp_device_kind_arch_isa): New function.
+       (ix86_target_string): Moved struct ix86_target_opts, isa2_opts and
+       isa_opts definitions to file scope.
+       * config/i386/t-intelmic (omp-device-properties): New goal.
+       * config/nvptx/t-nvptx (omp-device-properties): Likewise.
+       * config/nvptx/nvptx.c (nvptx_omp_device_kind_arch_isa): New function.
+       (TARGET_OMP_DEVICE_KIND_ARCH_ISA): Redefine to
+       nvptx_omp_device_kind_arch_isa.
+       * configure: Regenerate.
+       * doc/tm.texi: Regenerate.
+       PR middle-end/92231
+       * tree.h (fndecl_built_in_p): Use fndecl_built_in_p instead of
+       DECL_BUILT_IN in comment.  Remove redundant ()s around return
+       argument.
+       * tree.c (free_lang_data_in_decl): Check if var is FUNCTION_DECL
+       before calling fndecl_built_in_p.
+       * gimple-fold.c (gimple_fold_stmt_to_constant_1): Check if
+       TREE_OPERAND (fn, 0) is a FUNCTION_DECL before calling
+       fndecl_built_in_p on it.
+ 2019-10-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       * params.def (PARAM_VECT_EPILOGUES_NOMASK): Enable by default.
+ 2019-10-31  Martin Liska  <mliska@suse.cz>
+       * config/arm/arm.c (arm_get_pcs_model): Remove usage
+       of cgraph_local_info and use local_info_node instead.
+       * config/bfin/bfin.c (bfin_load_pic_reg): Likewise.
+       (bfin_function_ok_for_sibcall): Likewise.
+       * config/c6x/c6x.c (c6x_function_ok_for_sibcall): Likewise.
+       (must_reload_pic_reg_p): Likewise.
+ 2019-10-31  Jakub Jelinek  <jakub@redhat.com>
+       PR c++/90947
+       * tree.h (type_initializer_zero_p): Remove.
+       * tree.c (type_initializer_zero_p): Remove.
+ 2019-10-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+       * doc/invoke.texi (-Wshadow, -Wshadow=global
+       -Wshadow=local, -Wshadow=compatible-local): Update documentation.
+ 2019-10-30  Tobias Burnus  <tobias@codesourcery.com>
+       * gimplify.c (gimplify_scan_omp_clauses): Remove FE-generated
+       GOMP_MAP_TO_PSET and GOMP_MAP_POINTER mapping for 'target update'
+       and 'target exit data'.
+ 2019-10-30  Martin Jambor  <mjambor@suse.cz>
+       ipa/92278
+       * cgraph.c (cgraph_edge::possibly_call_in_translation_unit_p): Fix
+       availability comparison.
+ 2019-10-30  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config/msp430/msp430.c (msp430_expand_helper): Support expansion of
+       calls to __mspabi_mpy* functions.
+       * config/msp430/msp430.md (mulhisi3): New define_expand.
+       (umulhisi3): New define_expand.
+       (*mulhisi3_inline): Use old mulhisi3 define_insn.
+       (*umulhisi3_inline): Use old umulhisi3 define_insn.
+ 2019-10-30  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config/msp430/msp430.c (msp430_check_index_not_high_mem): New.
+       (msp430_check_plus_not_high_mem): New.
+       (msp430_op_not_in_high_mem): Use new functions to check if the operand
+       might be in low memory.
+       Indicate that a 16-bit absolute address is in lower memory.
+ 2019-10-30  Martin Jambor  <mjambor@suse.cz>
+       * ipa-prop.c (ipa_compute_jump_functions_for_bb): Fix the call to
+       ultimate_alias_target.
+ 2019-10-30  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92275
+       * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_loops):
+       Copy all loop-closed PHIs.
+ 2019-10-30  Martin Liska  <mliska@suse.cz>
+       * ipa-icf-gimple.c (func_checker::compare_ssa_name): Use
+       const_tree as function argument.
+       (func_checker::compare_decl): Likewise.
+       (func_checker::operand_equal_p): Likewise.
+       (func_checker::compare_variable_decl): Likewise.
+       (func_checker::parse_labels): Likewise.
+       * ipa-icf-gimple.h: Likewise.
+ 2019-10-30  Martin Liska  <mliska@suse.cz>
+       * ipa-icf-gimple.c (func_checker::compatible_types_p):
+       Do not compare alias sets.  It's handled by operand_equal_p.
+ 2019-10-30  Martin Liska  <mliska@suse.cz>
+       * ipa-icf-gimple.c (func_checker::func_checker): Do not
+       initialize m_compare_polymorphic.
+       (func_checker::compare_decl): Do not compare polymorphic types.
+       * ipa-icf-gimple.h (m_compare_polymorphic): Remove.
+       * ipa-icf.c (sem_function::equals_private): Do not call
+       compare_polymorphic_p.
+ 2019-10-30  Martin Liska  <mliska@suse.cz>
+       * ipa-icf-gimple.c (func_checker::compare_ssa_name): Call
+       compare_operand.
+       (func_checker::compare_memory_operand): Remove.
+       (func_checker::compare_cst_or_decl): Remove.
+       (func_checker::operand_equal_valueize): Do not handle
+       FIELD_DECL.
+       (func_checker::compare_gimple_call): Call compare_operand.
+       (func_checker::compare_gimple_assign): Likewise.
+       * ipa-icf-gimple.h: Remove compare_cst_or_decl.
+       * ipa-icf.c (sem_function::icf_handled_component_p): Remove.
+       * ipa-icf.h (icf_handled_component_p): Remove.
+ 2019-10-30  Martin Liska  <mliska@suse.cz>
+       * ipa-icf-gimple.c (func_checker::hash_operand): New.
+       (func_checker::compare_cst_or_decl): Remove handling
+       of FIELD_DECL.
+       (func_checker::compare_operand): Transform to ...
+       (func_checker::operand_equal_p): ... this.
+       * ipa-icf-gimple.h (class func_checker): Add
+       operand_equal_p and hash_operand.
+       * ipa-icf.c (sem_function::equals_private): Fix
+       pushing and popping of cfun.
+ 2019-10-30  Martin Liska  <mliska@suse.cz>
+       * fold-const.c (operand_equal_p): Move to ...
+       (operand_compare::operand_equal_p): ... here.
+       (operand_compare::verify_hash_value): New.
+       (add_expr): Move to ...
+       (operand_compare::hash_operand): ... here.
+       * fold-const.h (operand_equal_p): Move to the class.
+       (class operand_compare): New.
+       * tree.c (add_expr): Remove.
+ 2019-10-30  Martin Liska  <mliska@suse.cz>
+       * fold-const.c (operand_equal_p): Support OBJ_TYPE_REF.
+       * tree.c (add_expr): Hash parts of OBJ_TYPE_REF.
+ 2019-10-30  Martin Liska  <mliska@suse.cz>
+       PR lto/91393
+       PR lto/88220
+       * cgraph.c (cgraph_node::get_create): Overwrite node->order
+       from a first_clone in order to get proper LTO section
+       in LTO stream.
+       (cgraph_node::get_untransformed_body):
+       Use lto_get_section_data where symtab_node::order
+       must be provided.
+       * cgraphclones.c (cgraph_node::find_replacement):
+       Update also symbol order.
+       * ipa-fnsummary.c (ipa_fn_summary_read):
+       Use new function lto_get_summary_section_data.
+       * ipa-hsa.c (ipa_hsa_read_summary): Likewise.
+       * ipa-icf.c (sem_item_optimizer::read_summary):
+       Likewise.
+       * ipa-prop.c (ipa_prop_read_jump_functions):
+       Likewise.
+       (ipcp_read_transformation_summaries): Likewise.
+       * ipa-sra.c (ipa_sra_read_summary): Likewise.
+       * lto-cgraph.c (input_node): Add also order_base.
+       (input_varpool_node): Likewise.
+       (input_cgraph_1): Assign the order_base.
+       (input_cgraph_opt_summary): Use new lto_get_summary_section_data.
+       * lto-opts.c (lto_write_options): Pass new argument.
+       * lto-section-in.c (lto_get_section_data): Add new argumente order.
+       (lto_get_summary_section_data): New.
+       (lto_get_raw_section_data): Add order argument.
+       (lto_create_simple_input_block): Likewise.
+       * lto-section-out.c (lto_destroy_simple_output_block):
+       Likewise.
+       * lto-streamer-in.c (lto_input_toplevel_asms):
+       Use lto_get_summary_section_data.
+       (lto_input_mode_table): Likewise.
+       * lto-streamer-out.c (produce_asm): Pass symtab_node::order.
+       (lto_output_toplevel_asms): Pass new argument.
+       (copy_function_or_variable): Likewise.
+       (produce_lto_section):Likewise.
+       (produce_symtab): Likewise.
+       (lto_write_mode_table): Likewise.
+       (produce_asm_for_decls): Likewise.
+       * lto-streamer.c (lto_get_section_name): Concat symbol name
+       and symbol order.
+       * lto-streamer.h (lto_get_section_data): Add order argument.
+       (lto_get_summary_section_data): New.
+       (lto_get_raw_section_data): Add order argument.
+       (lto_get_section_name): Likewise.
+       * varpool.c (varpool_node::get_constructor): Pass order argument.
+ 2019-10-30  Jakub Jelinek  <jakub@redhat.com>
+       PR tree-optimization/92262
+       * tree-ssa-loop-ivopts.c (get_debug_computation_at): Don't unshare
+       ubase or cbase here.
+       (remove_unused_ivs): Unshare comp before using it.
+ 2019-10-30  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-prop.c (update_jump_functions_after_inlining):
+       Watch for missing summaries.
+ 2019-10-30  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/65930
+       * tree-vect-loop.c (vect_is_simple_reduction): For reduction
+       chains also allow a leading and trailing conversion.
+       * tree-vect-slp.c (vect_get_and_check_slp_defs): Handle
+       intermediate reduction chains.
+       (vect_analyze_slp_instance): Likewise.  Build a SLP
+       node for a trailing conversion manually.
+ 2019-10-30  Martin Liska  <mliska@suse.cz>
+       * cgraph.c (cgraph_node::local_info): Transform to ...
+       (cgraph_node::local_info_node): ... this.
+       (cgraph_node::dump): Remove cgraph_local_info and
+       put its fields directly into cgraph_node.
+       (cgraph_node::get_availability): Likewise.
+       (cgraph_node::make_local): Likewise.
        (cgraph_node::verify_node): Likewise.
-       * cgraph.h (chkp_function_instrumented_p): Likewise.
-       (symtab_node::get_alias_target): Likewise.
-       (cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise.
-       (cgraph_local_p): Likewise.
-       * cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise.
-       (cgraph_edge::rebuild_references): Likewise.
-       * cgraphunit.c (varpool_node::finalize_decl): Likewise.
-       (walk_polymorphic_call_targets): Likewise.
-       (cgraph_node::expand_thunk): Likewise.
-       (symbol_table::output_weakrefs): Likewise.
-       * common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise.
-       (ix86_handle_option): Likewise.
-       * config/i386/constraints.md: Likewise.
-       * config/i386/i386-builtin-types.def (BND): Likewise.
-       (VOID): Likewise.
-       (PVOID): Likewise.
-       (ULONG): Likewise.
-       * config/i386/i386-builtin.def (BDESC_END): Likewise.
-       (BDESC_FIRST): Likewise.
-       (BDESC): Likewise.
-       * config/i386/i386-c.c (ix86_target_macros_internal): Likewise.
-       * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise.
-       * config/i386/i386.c (enum reg_class): Likewise.
-       (ix86_target_string): Likewise.
-       (ix86_option_override_internal): Likewise.
-       (ix86_conditional_register_usage): Likewise.
-       (ix86_valid_target_attribute_inner_p): Likewise.
-       (ix86_set_indirect_branch_type): Likewise.
-       (ix86_set_current_function): Likewise.
-       (ix86_function_arg_regno_p): Likewise.
+       * cgraph.h (struct GTY): Likewise.
+       * cgraphclones.c (set_new_clone_decl_and_node_flags): Likewise.
+       (duplicate_thunk_for_node): Likewise.
+       (cgraph_node::create_clone): Likewise.
+       (cgraph_node::create_virtual_clone): Likewise.
+       (cgraph_node::create_version_clone): Likewise.
+       * cgraphunit.c (cgraph_node::reset): Likewise.
+       (cgraph_node::finalize_function): Likewise.
+       (cgraph_node::add_new_function): Likewise.
+       (analyze_functions): Likewise.
+       * combine.c (setup_incoming_promotions): Likewise.
+       * config/i386/i386.c (ix86_function_regparm): Likewise.
+       (ix86_function_sseregparm): Likewise.
        (init_cumulative_args): Likewise.
-       (ix86_function_arg_advance): Likewise.
-       (ix86_function_arg): Likewise.
-       (ix86_pass_by_reference): Likewise.
-       (ix86_function_value_regno_p): Likewise.
-       (ix86_function_value_1): Likewise.
-       (ix86_function_value_bounds): Likewise.
-       (ix86_return_in_memory): Likewise.
-       (ix86_setup_incoming_vararg_bounds): Likewise.
-       (ix86_va_start): Likewise.
-       (indirect_thunk_need_prefix): Likewise.
-       (print_reg): Likewise.
-       (ix86_print_operand): Likewise.
-       (ix86_expand_call): Likewise.
-       (ix86_output_function_return): Likewise.
-       (reg_encoded_number): Likewise.
-       (BDESC_VERIFYS): Likewise.
-       (ix86_init_mpx_builtins): Likewise.
-       (ix86_init_builtins): Likewise.
-       (ix86_emit_cmove): Likewise.
-       (ix86_emit_move_max): Likewise.
-       (ix86_expand_builtin): Likewise.
-       (ix86_builtin_mpx_function): Likewise.
-       (ix86_get_arg_address_for_bt): Likewise.
-       (ix86_load_bounds): Likewise.
-       (ix86_store_bounds): Likewise.
-       (ix86_load_returned_bounds): Likewise.
-       (ix86_store_returned_bounds): Likewise.
-       (ix86_class_likely_spilled_p): Likewise.
-       (ix86_hard_regno_mode_ok): Likewise.
-       (x86_order_regs_for_local_alloc): Likewise.
-       (ix86_mitigate_rop): Likewise.
-       (ix86_bnd_prefixed_insn_p): Likewise.
-       (ix86_mpx_bound_mode): Likewise.
-       (ix86_make_bounds_constant): Likewise.
-       (ix86_initialize_bounds): Likewise.
-       (TARGET_LOAD_BOUNDS_FOR_ARG): Likewise.
-       (TARGET_STORE_BOUNDS_FOR_ARG): Likewise.
-       (TARGET_LOAD_RETURNED_BOUNDS): Likewise.
-       (TARGET_STORE_RETURNED_BOUNDS): Likewise.
-       (TARGET_CHKP_BOUND_MODE): Likewise.
-       (TARGET_BUILTIN_CHKP_FUNCTION): Likewise.
-       (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise.
-       (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise.
-       (TARGET_CHKP_INITIALIZE_BOUNDS): Likewise.
-       * config/i386/i386.h (TARGET_MPX): Likewise.
-       (TARGET_MPX_P): Likewise.
-       (VALID_BND_REG_MODE): Likewise.
-       (FIRST_BND_REG): Likewise.
-       (LAST_BND_REG): Likewise.
-       (enum reg_class): Likewise.
-       (BND_REG_P): Likewise.
-       (BND_REGNO_P): Likewise.
-       (BNDmode): Likewise.
-       (ADJUST_INSN_LENGTH): Likewise.
-       * config/i386/i386.md: Likewise.
-       * config/i386/i386.opt: Likewise.
-       * config/i386/linux-common.h (LIBMPX_LIBS): Likewise.
-       (defined): Likewise.
-       (LINK_MPX): Likewise.
-       (MPX_SPEC): Likewise.
-       (LIBMPX_SPEC): Likewise.
-       (LIBMPXWRAPPERS_SPEC): Likewise.
-       (CHKP_SPEC): Likewise.
-       * config/i386/predicates.md: Likewise.
-       * dbxout.c (dbxout_type): Likewise.
-       * doc/extend.texi: Likewise.
-       * doc/invoke.texi: Likewise.
-       * doc/md.texi: Likewise.
-       * doc/tm.texi: Likewise.
-       * doc/tm.texi.in: Likewise.
-       * dwarf2out.c (is_base_type): Likewise.
-       (gen_formal_types_die): Likewise.
-       (gen_subprogram_die): Likewise.
-       (gen_type_die_with_usage): Likewise.
-       (gen_decl_die): Likewise.
-       (dwarf2out_late_global_decl): Likewise.
-       * expr.c (expand_assignment): Likewise.
-       (emit_storent_insn): Likewise.
-       (store_expr_with_bounds): Likewise.
-       (store_expr): Likewise.
-       (expand_expr_real_1): Likewise.
-       * expr.h (store_expr_with_bounds): Likewise.
-       * function.c (use_register_for_decl): Likewise.
-       (struct bounds_parm_data): Likewise.
-       (assign_parms_augmented_arg_list): Likewise.
-       (assign_parm_find_entry_rtl): Likewise.
-       (assign_parm_is_stack_parm): Likewise.
-       (assign_parm_load_bounds): Likewise.
-       (assign_bounds): Likewise.
-       (assign_parms): Likewise.
-       (expand_function_start): Likewise.
-       * gcc.c (CHKP_SPEC): Likewise.
-       * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
-       * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise.
-       (wrestrict_dom_walker::check_call): Likewise.
-       * gimple.c (gimple_build_call_from_tree): Likewise.
-       * gimple.h (enum gf_mask): Likewise.
-       (gimple_call_with_bounds_p): Likewise.
-       (gimple_call_set_with_bounds): Likewise.
-       * gimplify.c (gimplify_init_constructor): Likewise.
-       * ipa-cp.c (initialize_node_lattices): Likewise.
-       (propagate_constants_across_call): Likewise.
-       (find_more_scalar_values_for_callers_subset): Likewise.
-       * ipa-hsa.c (process_hsa_functions): Likewise.
-       * ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise.
-       * ipa-icf.c (sem_function::merge): Likewise.
-       * ipa-inline.c (early_inliner): Likewise.
-       * ipa-pure-const.c (warn_function_noreturn): Likewise.
-       (warn_function_cold): Likewise.
-       (propagate_pure_const): Likewise.
-       * ipa-ref.h (enum GTY): Likewise.
-       * ipa-split.c (find_retbnd): Likewise.
-       (consider_split): Likewise.
-       (split_function): Likewise.
-       * ipa-visibility.c (cgraph_externally_visible_p): Likewise.
-       * ipa.c (walk_polymorphic_call_targets): Likewise.
-       (symbol_table::remove_unreachable_nodes): Likewise.
-       (process_references): Likewise.
-       (cgraph_build_static_cdtor_1): Likewise.
+       * ipa-cp.c (determine_versionability): Likewise.
+       (count_callers): Likewise.
+       (set_single_call_flag): Likewise.
+       (initialize_node_lattices): Likewise.
+       (estimate_local_effects): Likewise.
+       (create_specialized_node): Likewise.
+       (identify_dead_nodes): Likewise.
+       * ipa-fnsummary.c (compute_fn_summary): Likewise.
+       (ipa_fn_summary_generate): Likewise.
+       * ipa-hsa.c (check_warn_node_versionable): Likewise.
+       (process_hsa_functions): Likewise.
+       * ipa-icf.c (set_local): Likewise.
+       * ipa-inline-analysis.c (initialize_inline_failed): Likewise.
+       * ipa-inline.c (speculation_useful_p): Likewise.
+       * ipa-profile.c (ipa_propagate_frequency): Likewise.
+       (ipa_profile): Likewise.
+       * ipa-split.c (split_function): Likewise.
+       (execute_split_functions): Likewise.
+       * ipa-sra.c (ipa_sra_preliminary_function_checks): Likewise.
+       (ipa_sra_ipa_function_checks): Likewise.
+       * ipa-visibility.c (function_and_variable_visibility): Likewise.
+       * ipa.c (symbol_table::remove_unreachable_nodes): Likewise.
        * lto-cgraph.c (lto_output_node): Likewise.
-       (output_refs): Likewise.
-       (compute_ltrans_boundary): Likewise.
        (input_overwrite_node): Likewise.
-       (input_node): Likewise.
-       (input_cgraph_1): Likewise.
-       * params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise.
-       * passes.c (pass_manager::execute_early_local_passes): Likewise.
-       (class pass_chkp_instrumentation_passes): Likewise.
-       (make_pass_chkp_instrumentation_passes): Likewise.
-       * passes.def: Likewise.
-       * rtl.h (struct GTY): Likewise.
-       (CALL_EXPR_WITH_BOUNDS_P): Likewise.
-       * stor-layout.c (layout_type): Likewise.
-       * symtab.c: Likewise.
-       * target.def: Likewise.
-       * targhooks.c (default_chkp_bound_type): Likewise.
-       (default_chkp_bound_mode): Likewise.
-       (default_builtin_chkp_function): Likewise.
-       (default_chkp_function_value_bounds): Likewise.
-       (default_chkp_make_bounds_constant): Likewise.
-       (default_chkp_initialize_bounds): Likewise.
-       * targhooks.h (default_chkp_bound_type): Likewise.
-       (default_chkp_bound_mode): Likewise.
-       (default_builtin_chkp_function): Likewise.
-       (default_chkp_function_value_bounds): Likewise.
-       (default_chkp_make_bounds_constant): Likewise.
-       (default_chkp_initialize_bounds): Likewise.
-       * toplev.c (compile_file): Likewise.
-       (process_options): Likewise.
-       * tree-core.h (DEF_BUILTIN): Likewise.
-       (DEF_BUILTIN_CHKP): Likewise.
-       * tree-inline.c (declare_return_variable): Likewise.
-       (remap_gimple_stmt): Likewise.
-       (copy_bb): Likewise.
-       (initialize_inlined_parameters): Likewise.
-       (expand_call_inline): Likewise.
-       * tree-pass.h (make_pass_ipa_chkp_versioning): Likewise.
-       (make_pass_ipa_chkp_early_produce_thunks): Likewise.
-       (make_pass_ipa_chkp_produce_thunks): Likewise.
-       (make_pass_chkp): Likewise.
-       (make_pass_chkp_opt): Likewise.
-       (make_pass_chkp_instrumentation_passes): Likewise.
-       * tree-pretty-print.c (dump_generic_node): Likewise.
-       * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
-       * tree-ssa-dce.c (propagate_necessity): Likewise.
-       (eliminate_unnecessary_stmts): Likewise.
-       * tree-ssa-pre.c (create_expression_by_pieces): Likewise.
-       * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
-       * tree-ssa-sccvn.h: Likewise.
-       * tree-ssa-strlen.c (get_string_length): Likewise.
-       (valid_builtin_call): Likewise.
-       (adjust_last_stmt): Likewise.
-       (handle_builtin_strchr): Likewise.
-       (handle_builtin_strcpy): Likewise.
-       (handle_builtin_stxncpy): Likewise.
-       (handle_builtin_memcpy): Likewise.
-       (handle_builtin_strcat): Likewise.
-       (strlen_check_and_optimize_stmt): Likewise.
-       * tree-stdarg.c (expand_ifn_va_arg_1): Likewise.
-       * tree-streamer-in.c: Likewise.
-       * tree-streamer.c (record_common_node): Likewise.
-       * tree.c (tree_code_size): Likewise.
-       (wide_int_to_tree_1): Likewise.
-       (type_contains_placeholder_1): Likewise.
-       (build_common_tree_nodes): Likewise.
-       * tree.def (POINTER_BOUNDS_TYPE): Likewise.
-       * tree.h (POINTER_BOUNDS_TYPE_P): Likewise.
-       (POINTER_BOUNDS_P): Likewise.
-       (BOUNDED_TYPE_P): Likewise.
-       (BOUNDED_P): Likewise.
-       (CALL_WITH_BOUNDS_P): Likewise.
-       (pointer_bounds_type_node): Likewise.
-       * value-prof.c (gimple_ic): Likewise.
-       * var-tracking.c (vt_add_function_parameters): Likewise.
-       * varasm.c (make_decl_rtl): Likewise.
-       (assemble_start_function): Likewise.
-       (output_constant): Likewise.
-       (maybe_assemble_visibility): Likewise.
-       * varpool.c (ctor_for_folding): Likewise.
-       * chkp-builtins.def: Remove.
-       * ipa-chkp.c: Remove.
-       * ipa-chkp.h: Remove.
-       * rtl-chkp.c: Remove.
-       * rtl-chkp.h: Remove.
-       * tree-chkp-opt.c: Remove.
-       * tree-chkp.c: Remove.
-       * tree-chkp.h: Remove.
- 2018-06-07  Carl Love  <cel@us.ibm.com>
-       * gcc/config/rs6000/vsx.md (vextract_fp_from_shorth,
-       vextract_fp_from_shortl): Add BE support.
- 2018-06-07  Paul Koning  <ni1d@arrl.net>
-       * compare-elim.c (try_merge_compare): Don't merge compare if
-       address contains a side effect.
-       (try_eliminate_compare): Likewise.
- 2018-06-07  Olga Makhotina  <olga.makhotina@intel.com>
-       * config.gcc: Support "tremont".
-       * config/i386/driver-i386.c (host_detect_local_cpu): Detect "tremont".
-       * config/i386/i386-c.c (ix86_target_macros_internal): Handle
-       PROCESSOR_TREMONT.
-       * config/i386/i386.c (m_TREMONT): Define.
-       (processor_target_table): Add "tremont".
-       (PTA_TREMONT): Define.
-       (ix86_lea_outperforms): Add TARGET_TREMONT.
-       (get_builtin_code_for_version): Handle PROCESSOR_TREMONT.
-       (fold_builtin_cpu): Add M_INTEL_TREMONT, replace M_INTEL_GOLDMONT
-       and M_INTEL_GOLDMONT_PLUS.
-       (fold_builtin_cpu): Add "tremont".
-       (ix86_add_stmt_cost): Add TARGET_TREMONT.
-       (ix86_option_override_internal): Add "tremont".
-       * config/i386/i386.h (processor_costs): Define TARGET_TREMONT.
-       (processor_type): Add PROCESSOR_TREMONT.
-       * config/i386/x86-tune.def: Add m_TREMONT.
-       * doc/invoke.texi: Add tremont as x86 -march=/-mtune= CPU type.
- 2018-06-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
-       * gcc/config/msp430/msp430.c (msp430_mcu_name): Set the "i" in the
-       symbol defined for msp430i* devices to be lower case.
-       gcc/testsuite/gcc.target/msp430/
-       * msp430i-device-symbol.c: New test.
-       * msp430f-device-symbol.c: New test.
-       * msp430.h: New test header file.
- 2018-06-07  Richard Biener  <rguenther@suse.de>
-       * graphite-sese-to-poly.c (extract_affine): Avoid unneded
-       wrapping.  Properly wrap the result of a BIT_NOT_EXPR.
-       Properly wrap signed arithmetic if overflow wraps.
- 2018-06-07  Jakub Jelinek  <jakub@redhat.com>
-       PR tree-optimization/69615
-       * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If rhs2 is lhs
-       of a cast from a same precision integral SSA_NAME in a bb dominated
-       by first_bb, retry with rhs2 set to the rhs1 of the cast.  Don't emit
-       cast to utype if rhs2 has already a compatible type.
- 2018-06-07  Richard Biener  <rguenther@suse.de>
-       PR tree-optimization/85935
-       * graphite-scop-detection.c (find_params_in_bb): Analyze
-       condition operands with respect to the correct loop.  Assert
-       the analysis doesn't fail.
- 2018-06-04  Carl Love  <cel@us.ibm.com>
-       * gcc/config/rs6000/vsx.md (first_match_index_<mode>): Calculate index
-       using natural element order.  Use gen_lshrsi3 instead of gen_ashrsi3
-       as it is slightly cheaper.
-       (first_match_or_eos_index_<mode>):
-       Calculate index using natural element order.
-       (first_match_index_<mode>):
-       Calculate index using natural element order.
-       (first_match_or_eos_index_<mode>):
-       Calculate index using natural order.
-       (define_insn vclzlsbb): Change to define_insn vclzlsbb_<mode>.
-       for BE and LE modes.
-       * gcc/config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB,
-       P9V_BUILTIN_VCLZLSBB_V16QI.
-       * gcc/config/rs6000/rs6000-builtin.def: Make VCLZLSBB mode
-       specific.
- 2018-06-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
-       * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
-       indentation and line wrap for many prototypes.  Add missing
-       @smallexample directives around block of prototypes for vec_xl and
-       vec_xst.
- 2018-06-05  Michael Meissner  <meissner@linux.ibm.com>
-       * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to
-       track if we pass or return IEEE 128-bit floating point.
-       (ieee128_mangling_gcc_8_1): New boolean to say whether to generate
-       C++ mangling that is compatible with GCC 8.1.
-       (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook.
-       (init_cumulative_args): Note if we pass or return IEEE 128-bit
-       floating point types.
-       (rs6000_function_arg_advance_1): Likewise.
-       (rs6000_mangle_type): Optionally generate mangled names that match
-       what GCC 8.1 generated for IEEE 128-bit floating point types.
-       (rs6000_globalize_decl_name): If we have an external function that
-       passes or returns IEEE 128-bit types, generate a weak reference
-       from the mangled name used in GCC 8.1 to the current mangled
-       name.
-       (rs6000_init_builtins): Make __ibm128 use the long double type if
-       long double is IBM extended double.  Make __float128 use the long
-       double type if long double is IEEE 128-bit.
-       PR target/85657
-       * config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper
-       macro for __ibm128 built-in functions.
-       (PACK_IF): Add __ibm128 pack/unpack functions.
-       (UNPACK_IF): Likewise.
-       * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not
-       enable long double built-in functions if long double is IEEE
-       128-bit floating point.
-       (rs6000_invalid_builtin): Update long double built-in function
-       error message.
-       (rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in
-       functions, adjust the built-in function to use the long double
-       built-in function if __ibm128 and long double are the same type.
-       * doc/extend.texi (PowerPC builtins): Update documention for
-       __builtin_{,un}pack_longdouble.  Add documentation for
-       __builtin_{,un}pack_ibm128.
- 2018-06-06  Jim Wilson  <jimw@sifive.com>
-       * config/riscv/riscv.c (enum riscv_privilege_levels): New.
-       (struct machine_function): New field interrupt_mode.
-       (riscv_handle_type_attribute): New function.  Add forward declaration.
-       (riscv_attribute_table) <interrupt>: Use riscv_handle_type_attribute.
-       (riscv_expand_epilogue): Check interrupt_mode field.
-       (riscv_set_current_function): Check interrupt attribute args and
-       set interrupt_mode field.
-       * config/riscv/riscv.md (UNSPECV_SRET, UNSPECV_URET): New.
-       (riscv_sret, riscv_uret): New.
-       * doc/extend.texi (RISC-V Function Attributes) <interrupt>: Document
-       new arguments to interrupt attribute.
- 2018-06-06  Peter Bergner  <bergner@vnet.ibm.com>
-       PR target/63177
-       * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9.
-       Don't handle -mcpu=power8 if -mpower9-vector is also used.
- 2018-06-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
-       * config/rs6000/rs6000-builtin.def (VSX_BUILTIN_VEC_LD,
-       VSX_BUILTIN_VEC_ST): Add comment to explain non-traditional uses.
-       * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
-       several redundant entries.
- 2018-06-06  David Malcolm  <dmalcolm@redhat.com>
-       * config/i386/i386-protos.h (ix86_expand_call): Strengthen return
-       type from "rtx" to "rtx_insn *".
-       * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise
-       for local "call_insn", removing cast.
-       (ix86_expand_call): Likewise, introducing a "call_insn" local.
- 2018-06-06  Eric Botcazou  <ebotcazou@adacore.com>
-       PR tree-optimization/86066
-       * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR
-       for BIT_INSERT_EXPR stores.
- 2018-06-06  Richard Biener  <rguenther@suse.de>
-       PR tree-optimization/86062
-       * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
-       component refs ontop
-       of to be offsetted base.
- 2018-06-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
-       * gcc/config/msp430/msp430.c (msp430_attr): Allow interrupt handlers
-       to be static and remove check on interrupt attribute name.
-       gcc/testsuite/gcc.target/msp430/
-       * function-attributes-4.c: New test.
-       * static-interrupts.c: New test.
- 2018-06-05  Kelvin Nilsen  <kelvin@gcc.gnu.org>
-       * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
-       volatile qualifier from vec_lvsl and vec_lvsr argument prototypes.
- 2018-06-05  Steve Ellcey  <sellcey@cavium.com>
-       PR target/79924
-       * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove
-       second argument.
-       * config/aarch64/aarch64-protos..c (aarch64_err_no_fpadvsimd):
-       Remove second argument, change how error is called.
-       (aarch64_layout_arg): Remove second argument from
-       aarch64_err_no_fpadvsimd call.
-       (aarch64_init_cumulative_args): Ditto.
-       (aarch64_gimplify_va_arg_expr): Ditto.
-       * config/aarch64/aarch64.md (mov<mode>): Ditto.
- 2018-06-05  Uros Bizjak  <ubizjak@gmail.com>
-       * config/i386/i386.md (simple_return_indirect_internal): New expander.
-       (*simple_return_indirect_internal<mode>): Rename from
-       simple_return_indirect_internal.  Use W mode iterator.
-       (rstorssp): New expander.
-       (*rstorssp<mode>): Rename from rstorssp.  Use P mode iterator.
-       (clrssbsy): New expander.
-       (*clrssbsy<mode>): Rename from clrssbsy.  Use P mode iterator.
- 2018-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
-       * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to
-       __typeof__.
-       (cmse_check_pointed_object): Likewise.
- 2018-06-05  Martin Liska  <mliska@suse.cz>
-       PR gcov-profile/47618
-       * doc/invoke.texi: Document how -fprofile-dir format
-       is extended.
- 2018-06-05  Richard Biener  <rguenther@suse.de>
-       * tree-cfgcleanup.c (cleanup_control_flow_pre): For edge
-       removal pretend DOM info isn't available so we do not update
-       it and only remove edges, not dominated blocks.  Actually free
-       DOM info in case we removed something.  Remove unreachable blocks.
-       (mfb_keep_latches): Work with either DOM info or marked backedges.
-       (cleanup_tree_cfg_noloop): Do not remove unreachable blocks
-       first.  Mark backedges if DOM info isn't available.
-       (Re-)compute DOM info after cleanup_control_flow_pre.
- 2018-06-05  Richard Biener  <rguenther@suse.de>
-       * tree-cfg.c (struct locus_discrim_map): Store line, not location.
-       (locus_discrim_hasher::hash): Adjust.
-       (locus_discrim_hasher::equal): Likewise.
-       (next_discriminator_for_locus): Work on line directly.
-       (same_line_p): Pass in expanded locus1 as well.
-       (assign_discriminators): Avoid redundant location expansions.
- 2018-06-05  Richard Biener  <rguenther@suse.de>
+       * multiple_target.c (expand_target_clones): Likewise.
+       * omp-simd-clone.c (simd_clone_create): Likewise.
+       * trans-mem.c (expand_call_tm): Likewise.
+       (ipa_tm_mayenterirr_function): Likewise.
+       (ipa_tm_diagnose_tm_safe): Likewise.
+       (ipa_tm_diagnose_transaction): Likewise.
+       (ipa_tm_create_version): Likewise.
+       (ipa_tm_transform_calls_redirect): Likewise.
+       (ipa_tm_execute): Likewise.
+       * tree-inline.c (expand_call_inline): Likewise.
+ 2019-10-29  Martin Liska  <mliska@suse.cz>
+       * symbol-summary.h (function_summary): Pass memory location
+       to underlaying hash_map (or vec).
+       (V>::fast_function_summary): Likewise.
+ 2019-10-29  Martin Liska  <mliska@suse.cz>
+       * ggc.h (ggc_alloc_no_dtor): New function.
+       * ipa-fnsummary.c (ipa_free_fn_summary): Call
+       destructor and ggc_free.
+       (ipa_free_size_summary): Call delete instead
+       of release.
+       * ipa-fnsummary.h: Use new function ggc_alloc_no_dtor.
+       * ipa-prop.c (ipa_check_create_edge_args): Likewise.
+       (ipa_free_all_edge_args): Call destructor and ggc_free.
+       (ipa_free_all_node_params): Likewise.
+       (ipcp_free_transformation_sum): Likewise.
+       * ipa-prop.h (ipa_check_create_node_params):
+       Call new ggc_alloc_no_dtor.
+       * ipa-sra.c (ipa_sra_generate_summary): Likewise.
+       (ipa_sra_analysis): Call destructor and ggc_free.
+       Replace release with delete operator.
+       * symbol-summary.h (release): Remove ..
+       (V>::~fast_function_summary): and move logic here.
+       Likewise for other classes.
+ 2019-10-29  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92260
+       * tree-vect-slp.c (vect_get_constant_vectors): Special-case
+       lane-reducing ops.
+ 2019-10-29  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       PR tree-optimization/88915
+       * tree-ssa-loop-niter.h (simplify_replace_tree): Change declaration.
+       * tree-ssa-loop-niter.c (simplify_replace_tree): Add context parameter
+       and make the valueize function pointer also take a void pointer.
+       * tree-ssa-sccvn.c (vn_valueize_wrapper): New function to wrap
+       around vn_valueize, to call it without a context.
+       (process_bb): Use vn_valueize_wrapper instead of vn_valueize.
+       * tree-vect-loop.c (_loop_vec_info): Initialize epilogue_vinfos.
+       (~_loop_vec_info): Release epilogue_vinfos.
+       (vect_analyze_loop_costing): Use knowledge of main VF to estimate
+       number of iterations of epilogue.
+       (vect_analyze_loop_2): Adapt to analyse main loop for all supported
+       vector sizes when vect-epilogues-nomask=1.  Also keep track of lowest
+       versioning threshold needed for main loop.
+       (vect_analyze_loop): Likewise.
+       (find_in_mapping): New helper function.
+       (update_epilogue_loop_vinfo): New function.
+       (vect_transform_loop): When vectorizing epilogues re-use analysis done
+       on main loop and call update_epilogue_loop_vinfo to update it.
+       * tree-vect-loop-manip.c (vect_update_inits_of_drs): No longer insert
+       stmts on loop preheader edge.
+       (vect_do_peeling): Enable skip-vectors when doing loop versioning if
+       we decided to vectorize epilogues.  Update epilogues NITERS and
+       construct ADVANCE to update epilogues data references where needed.
+       * tree-vectorizer.h (_loop_vec_info): Add epilogue_vinfos.
+       (vect_do_peeling, vect_update_inits_of_drs,
+        determine_peel_for_niter, vect_analyze_loop): Add or update
+       declarations.
+       * tree-vectorizer.c (try_vectorize_loop_1): Make sure to use already
+       created loop_vec_info's for epilogues when available.  Otherwise analyse
+       epilogue separately.
  
-       PR tree-optimization/86046
-       * tree-ssa.c (maybe_optimize_var): Clear DECL_GIMPLE_REG_P
-       if required after clearing TREE_ADDRESSABLE.
- 2018-06-05  Richard Biener  <rguenther@suse.de>
-       PR tree-optimization/86047
-       * tree-ssa-loop.c (for_each_index): Glob handling of all
-       decls and constants and really handle all of them.
- 2018-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
-       PR target/81497
-       * config/arm/arm-builtins.c (arm_type_qualifiers): Add
-       qualifier_void_pointer and qualifier_const_void_pointer.
-       (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above.
-       (arm_init_builtins): Handle the above.
-       * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc,
-       __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2,
-       __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for
-       void intrinsics.
- 2018-06-05  Martin Liska  <mliska@suse.cz>
-       * auto-profile.c (read_autofdo_file): Do not use
-       gcov_ctr_summary struct.
-       (afdo_callsite_hot_enough_for_early_inline): Likewise.
-       * coverage.c (struct counts_entry): Likewise.
-       (read_counts_file): Read just single summary entry.
-       (get_coverage_counts): Use gcov_summary struct.
-       * coverage.h (get_coverage_counts): Likewise.
-       * gcov-dump.c (dump_working_sets): Likewise.
-       (tag_summary): Dump just single summary.
-       * gcov-io.c (gcov_write_summary): Write just histogram
-       summary.
-       (gcov_read_summary): Read just single summary.
-       (compute_working_sets): Use gcov_summary struct.
-       * gcov-io.h (GCOV_TAG_SUMMARY_LENGTH): Remove usage
-       of GCOV_COUNTERS_SUMMABLE.
-       (GCOV_COUNTERS_SUMMABLE): Remove.
-       (GCOV_FIRST_VALUE_COUNTER): Replace with
-       GCOV_COUNTER_V_INTERVAL.
-       (struct gcov_ctr_summary): Remove.
-       (struct gcov_summary): Directly use fields of former
-       gcov_ctr_summary.
-       (compute_working_sets): Use gcov_summary struct.
-       * gcov.c (read_count_file): Do not use ctrs fields.
-       * lto-cgraph.c (merge_profile_summaries): Use gcov_summary
-       struct.
-       * lto-streamer.h (struct GTY): Make profile_info gcov_summary
-       struct.
-       * profile.c: Likewise.
-       * profile.h: Likewise.
+ 2019-10-29  Richard Biener  <rguenther@suse.de>
  
- 2018-06-05  Martin Liska  <mliska@suse.cz>
+       * doc/tree-ssa.texi (Immediate Uses): Fix FOR_EACH_IMM_USE_STMT
+       example.
  
-       PR gcov-profile/84846
-       * gcov.c (output_lines): Print working directory only
-       in intermediate format.
+ 2019-10-29  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-stmts.c (vectorizable_condition): Get the reduction
+       index for the COND_EXPR from stmt_info rather than reduc_info.
+ 2019-10-29  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/65930
+       * tree-vect-loop.c (check_reduction_path): Relax single-use
+       check allowing out-of-loop uses.
+       (vect_is_simple_reduction): SLP reduction chains cannot have
+       intermediate stmts used outside of the loop.
+       (vect_create_epilog_for_reduction): The adjustment might need
+       to be converted.
+       (vectorizable_reduction): Annotate live stmts of the reduction
+       chain with STMT_VINFO_REDUC_DEF.
+       * tree-vect-stms.c (process_use): Remove no longer true asserts.
+ 2019-10-29  Richard Sandiford  <richard.sandiford@arm.com>
+       * calls.c (pass_by_reference): Leave the target to decide whether
+       POLY_INT_CST-sized arguments should be passed by value or reference,
+       rather than forcing them to be passed by reference.
+       (must_pass_in_stack_var_size): Likewise.
+       * config/aarch64/aarch64.md (LAST_SAVED_REGNUM): Redefine from
+       V31_REGNUM to P15_REGNUM.
+       * config/aarch64/aarch64-protos.h (aarch64_init_cumulative_args):
+       Take an extra "silent_p" parameter, defaulting to false.
+       (aarch64_sve::svbool_type_p): Declare.
+       (aarch64_sve::nvectors_if_data_type): Likewise.
+       * config/aarch64/aarch64.h (NUM_PR_ARG_REGS): New macro.
+       (aarch64_frame::reg_offset): Turn into poly_int64s.
+       (aarch64_frame::save_regs_size): Likewise.
+       (aarch64_frame::below_hard_fp_saved_regs_size): New field.
+       (aarch64_frame::sve_callee_adjust): Likewise.
+       (aarch64_frame::spare_reg_reg): Likewise.
+       (ARM_PCS_SVE): New arm_pcs value.
+       (CUMULATIVE_ARGS::aapcs_nprn): New field.
+       (CUMULATIVE_ARGS::aapcs_nextnprn): Likewise.
+       (CUMULATIVE_ARGS::silent_p): Likewise.
+       (BITS_PER_SVE_PRED): New macro.
+       * config/aarch64/aarch64.c (handle_aarch64_vector_pcs_attribute): New
+       function.  Reject aarch64_vector_pcs attributes on SVE functions.
+       (aarch64_attribute_table): Use the above handler.
+       (aarch64_sve_abi): New function.
+       (aarch64_sve_argument_p): Likewise.
+       (aarch64_returns_value_in_sve_regs_p): Likewise.
+       (aarch64_takes_arguments_in_sve_regs_p): Likewise.
+       (aarch64_fntype_abi): Check for SVE functions and return the SVE PCS
+       descriptor for them.
+       (aarch64_simd_decl_p): Delete.
+       (aarch64_emit_cfi_for_reg_p): New function.
+       (aarch64_reg_save_mode): Remove the fndecl argument and instead use
+       crtl->abi to choose the mode for FP registers.  Handle the SVE PCS.
+       (aarch64_hard_regno_call_part_clobbered): Do not treat FP registers
+       as partly clobbered for the SVE PCS.
+       (aarch64_function_ok_for_sibcall): Check whether the two functions
+       use the same ABI, rather than checking specifically for whether
+       they're aarch64_vector_pcs functions.
+       (aarch64_pass_by_reference): Raise an error for attempts to pass
+       SVE arguments when SVE is disabled.  Pass SVE arguments by reference
+       if there are not enough free registers left, or if the argument is
+       variadic.
+       (aarch64_function_value): Handle SVE predicates, vectors and tuples.
+       (aarch64_return_in_memory): Do not return SVE predicates, vectors and
+       tuples in memory.
+       (aarch64_layout_arg): Take a function_arg_info rather than
+       individual properties.  Handle SVE predicates, vectors and tuples.
+       Raise an error if they are passed to unprototyped functions.
+       (aarch64_function_arg): If the silent_p flag is set, suppress the
+       usual error about using float registers without TARGET_FLOAT.
+       (aarch64_init_cumulative_args): Take a silent_p parameter and store
+       it in the cumulative_args structure.  Initialize aapcs_nprn and
+       aapcs_nextnprn.  If the silent_p flag is set, suppress the usual
+       error about using float registers without TARGET_FLOAT.
+       If the silent_p flag is not set, also raise an error about
+       using SVE functions when SVE is disabled.
+       (aarch64_function_arg_advance): Update the call to aarch64_layout_arg,
+       and call it for SVE functions too.  Update aapcs_nprn similarly
+       to the other register counts.
+       (aarch64_layout_frame): If a big-endian function needs to save
+       and restore Z8-Z15, search for a spare predicate that it can use.
+       Store SVE predicates at the bottom of the register save area,
+       followed by SVE vectors, then followed by the normal slots.
+       Keep pointing the hard frame pointer at the base of the normal slots,
+       above the SVE vectors.  Update the various frame creation and
+       tear-down strategies for the new layout, initializing the new
+       sve_callee_adjust field.  Add an additional layout for frames
+       whose saved registers are all SVE registers.
+       (aarch64_register_saved_on_entry): Cope with poly_int64 reg_offsets.
+       (aarch64_return_address_signing_enabled): Likewise.
+       (aarch64_push_regs, aarch64_pop_regs): Update calls to
+       aarch64_reg_save_mode.
+       (aarch64_adjust_sve_callee_save_base): New function.
+       (aarch64_add_cfa_expression): Move earlier in file.  Take the
+       saved register as an rtx rather than a register number and use
+       its mode for the MEM slot.
+       (aarch64_save_callee_saves): Remove the mode argument and instead
+       use aarch64_reg_save_mode to get the mode of each save slot.
+       Add a hard_fp_valid_p parameter.  Cope with poly_int64 register
+       offsets.  Allow GP offsets to be saved at a VL-based offset from
+       the stack, handling this case using the frame pointer if available
+       or a temporary register otherwise.  Use ST1D to save Z8-Z15 for
+       big-endian SVE functions; use normal moves for other SVE saves.
+       Only mark the save as frame-related if aarch64_emit_cfi_for_reg_p
+       returns true.  Add explicit CFA notes when not storing via the
+       stack pointer.  Do not try to pair SVE saves.
+       (aarch64_restore_callee_saves): Cope with poly_int64 register
+       offsets.  Use LD1D to restore Z8-Z15 for big-endian SVE functions;
+       use normal moves for other SVE restores.  Only add CFA restore notes
+       if aarch64_emit_cfi_for_reg_p returns true.  Do not try to pair
+       SVE restores.
+       (aarch64_get_separate_components): Always keep the first SVE save
+       in the prologue if we need to use it as a stack probe.  Don't allow
+       Z8-Z15 saves and loads to be shrink-wrapped for big-endian targets.
+       Likewise the spare predicate register that they need.  Update the
+       offset calculation to account for the SVE save area.  Use the
+       appropriate range check for SVE LDR and STR instructions.
+       (aarch64_components_for_bb): Cope with poly_int64 reg_offsets.
+       (aarch64_process_components): Likewise.  Update the offset
+       calculation to account for the SVE save area.  Only mark the
+       save as frame-related if aarch64_emit_cfi_for_reg_p returns true.
+       Do not try to pair SVE saves.
+       (aarch64_allocate_and_probe_stack_space): Cope with poly_int64
+       reg_offsets.  When handling the final allocation, expect the
+       first SVE register save to be part of the initial allocation
+       and for it to act as a probe at SP.  Account for the SVE callee
+       save area in the dump information.
+       (aarch64_expand_prologue): Update the frame diagram.  Fold the
+       SVE callee allocation into the initial allocation if stack clash
+       protection is enabled.  Use new variables to track the offset
+       of the frame chain (and hard frame pointer) from the current
+       stack pointer, and likewise the offset of the bottom of the
+       register save area.  Update calls to aarch64_save_callee_saves
+       and aarch64_add_cfa_expression.  Apply sve_callee_adjust before
+       saving the FP&SIMD registers.  Save the predicate registers.
+       (aarch64_expand_epilogue): Take below_hard_fp_saved_regs_size
+       into account when setting the stack pointer from the frame pointer,
+       and when deciding whether we can inherit the initial adjustment
+       amount from the prologue.  Restore the predicate registers after
+       the vector registers, then apply sve_callee_adjust, then restore
+       the general registers.
+       (aarch64_secondary_reload): Don't use secondary SVE reloads
+       for VNx16BImode.
+       (aapcs_vfp_sub_candidate): Assert that the type is not an SVE type.
+       (aarch64_short_vector_p): Return false for SVE types.
+       (aarch64_vfp_is_call_or_return_candidate): Initialize *is_ha
+       at the start of the function.  Return false for SVE types.
+       (aarch64_asm_output_variant_pcs): Output .variant_pcs for SVE
+       functions too.
+       (TARGET_STRICT_ARGUMENT_NAMING): Redefine to request strict naming.
+       * config/aarch64/aarch64-sve.md (*aarch64_sve_mov<mode>_le): Extend
+       to big-endian targets for bytewise moves.
+       (*aarch64_sve_mov<mode>_be): Exclude the bytewise case.
+ 2019-10-29  Richard Sandiford  <richard.sandiford@arm.com>
+           Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
+           Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
- 2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+       * config.gcc (aarch64*-*-*): Add arm_sve.h to extra_headers.
+       Add aarch64-sve-builtins.o, aarch64-sve-builtins-shapes.o and
+       aarch64-sve-builtins-base.o to extra_objs.  Add
+       aarch64-sve-builtins.h and aarch64-sve-builtins.cc to target_gtfiles.
+       * config/aarch64/t-aarch64 (aarch64-sve-builtins.o): New rule.
+       (aarch64-sve-builtins-shapes.o): Likewise.
+       (aarch64-sve-builtins-base.o): New rules.
+       * config/aarch64/aarch64-c.c (aarch64_pragma_aarch64): New function.
+       (aarch64_resolve_overloaded_builtin): Likewise.
+       (aarch64_check_builtin_call): Likewise.
+       (aarch64_register_pragmas): Install aarch64_resolve_overloaded_builtin
+       and aarch64_check_builtin_call in targetm.  Register the GCC aarch64
+       pragma.
+       * config/aarch64/aarch64-protos.h (AARCH64_FOR_SVPRFOP): New macro.
+       (aarch64_svprfop): New enum.
+       (AARCH64_BUILTIN_SVE): New aarch64_builtin_class enum value.
+       (aarch64_sve_int_mode, aarch64_sve_data_mode): Declare.
+       (aarch64_fold_sve_cnt_pat, aarch64_output_sve_prefetch): Likewise.
+       (aarch64_output_sve_cnt_pat_immediate): Likewise.
+       (aarch64_output_sve_ptrues, aarch64_sve_ptrue_svpattern_p): Likewise.
+       (aarch64_sve_sqadd_sqsub_immediate_p, aarch64_sve_ldff1_operand_p)
+       (aarch64_sve_ldnf1_operand_p, aarch64_sve_prefetch_operand_p)
+       (aarch64_ptrue_all_mode, aarch64_convert_sve_data_to_pred): Likewise.
+       (aarch64_expand_sve_dupq, aarch64_replace_reg_mode): Likewise.
+       (aarch64_sve::init_builtins, aarch64_sve::handle_arm_sve_h): Likewise.
+       (aarch64_sve::builtin_decl, aarch64_sve::builtin_type_p): Likewise.
+       (aarch64_sve::mangle_builtin_type): Likewise.
+       (aarch64_sve::resolve_overloaded_builtin): Likewise.
+       (aarch64_sve::check_builtin_call, aarch64_sve::gimple_fold_builtin)
+       (aarch64_sve::expand_builtin): Likewise.
+       * config/aarch64/aarch64.c (aarch64_sve_data_mode): Make public.
+       (aarch64_sve_int_mode): Likewise.
+       (aarch64_ptrue_all_mode): New function.
+       (aarch64_convert_sve_data_to_pred): Make public.
+       (svprfop_token): New function.
+       (aarch64_output_sve_prefetch): Likewise.
+       (aarch64_fold_sve_cnt_pat): Likewise.
+       (aarch64_output_sve_cnt_pat_immediate): Likewise.
+       (aarch64_sve_move_pred_via_while): Use gen_while with UNSPEC_WHILE_LO
+       instead of gen_while_ult.
+       (aarch64_replace_reg_mode): Make public.
+       (aarch64_init_builtins): Call aarch64_sve::init_builtins.
+       (aarch64_fold_builtin): Handle AARCH64_BUILTIN_SVE.
+       (aarch64_gimple_fold_builtin, aarch64_expand_builtin): Likewise.
+       (aarch64_builtin_decl, aarch64_builtin_reciprocal): Likewise.
+       (aarch64_mangle_type): Call aarch64_sve::mangle_type.
+       (aarch64_sve_sqadd_sqsub_immediate_p): New function.
+       (aarch64_sve_ptrue_svpattern_p): Likewise.
+       (aarch64_sve_pred_valid_immediate): Check
+       aarch64_sve_ptrue_svpattern_p.
+       (aarch64_sve_ldff1_operand_p, aarch64_sve_ldnf1_operand_p)
+       (aarch64_sve_prefetch_operand_p, aarch64_output_sve_ptrues): New
+       functions.
+       * config/aarch64/aarch64.md (UNSPEC_LDNT1_SVE, UNSPEC_STNT1_SVE)
+       (UNSPEC_LDFF1_GATHER, UNSPEC_PTRUE, UNSPEC_WHILE_LE, UNSPEC_WHILE_LS)
+       (UNSPEC_WHILE_LT, UNSPEC_CLASTA, UNSPEC_UPDATE_FFR)
+       (UNSPEC_UPDATE_FFRT, UNSPEC_RDFFR, UNSPEC_WRFFR)
+       (UNSPEC_SVE_LANE_SELECT, UNSPEC_SVE_CNT_PAT, UNSPEC_SVE_PREFETCH)
+       (UNSPEC_SVE_PREFETCH_GATHER, UNSPEC_SVE_COMPACT, UNSPEC_SVE_SPLICE):
+       New unspecs.
+       * config/aarch64/iterators.md (SI_ONLY, DI_ONLY, VNx8HI_ONLY)
+       (VNx2DI_ONLY, SVE_PARTIAL, VNx8_NARROW, VNx8_WIDE, VNx4_NARROW)
+       (VNx4_WIDE, VNx2_NARROW, VNx2_WIDE, PRED_HSD): New mode iterators.
+       (UNSPEC_ADR, UNSPEC_BRKA, UNSPEC_BRKB, UNSPEC_BRKN, UNSPEC_BRKPA)
+       (UNSPEC_BRKPB, UNSPEC_PFIRST, UNSPEC_PNEXT, UNSPEC_CNTP, UNSPEC_SADDV)
+       (UNSPEC_UADDV, UNSPEC_FMLA, UNSPEC_FMLS, UNSPEC_FEXPA, UNSPEC_FTMAD)
+       (UNSPEC_FTSMUL, UNSPEC_FTSSEL, UNSPEC_COND_CMPEQ_WIDE): New unspecs.
+       (UNSPEC_COND_CMPGE_WIDE, UNSPEC_COND_CMPGT_WIDE): Likewise.
+       (UNSPEC_COND_CMPHI_WIDE, UNSPEC_COND_CMPHS_WIDE): Likewise.
+       (UNSPEC_COND_CMPLE_WIDE, UNSPEC_COND_CMPLO_WIDE): Likewise.
+       (UNSPEC_COND_CMPLS_WIDE, UNSPEC_COND_CMPLT_WIDE): Likewise.
+       (UNSPEC_COND_CMPNE_WIDE, UNSPEC_COND_FCADD90, UNSPEC_COND_FCADD270)
+       (UNSPEC_COND_FCMLA, UNSPEC_COND_FCMLA90, UNSPEC_COND_FCMLA180)
+       (UNSPEC_COND_FCMLA270, UNSPEC_COND_FMAX, UNSPEC_COND_FMIN): Likewise.
+       (UNSPEC_COND_FMULX, UNSPEC_COND_FRECPX, UNSPEC_COND_FSCALE): Likewise.
+       (UNSPEC_LASTA, UNSPEC_ASHIFT_WIDE, UNSPEC_ASHIFTRT_WIDE): Likewise.
+       (UNSPEC_LSHIFTRT_WIDE, UNSPEC_LDFF1, UNSPEC_LDNF1): Likewise.
+       (Vesize): Handle partial vector modes.
+       (self_mask, narrower_mask, sve_lane_con, sve_lane_pair_con): New
+       mode attributes.
+       (UBINQOPS, ANY_PLUS, SAT_PLUS, ANY_MINUS, SAT_MINUS): New code
+       iterators.
+       (s, paired_extend, inc_dec): New code attributes.
+       (SVE_INT_ADDV, CLAST, LAST): New int iterators.
+       (SVE_INT_UNARY): Add UNSPEC_RBIT.
+       (SVE_FP_UNARY, SVE_FP_UNARY_INT): New int iterators.
+       (SVE_FP_BINARY, SVE_FP_BINARY_INT): Likewise.
+       (SVE_COND_FP_UNARY): Add UNSPEC_COND_FRECPX.
+       (SVE_COND_FP_BINARY): Add UNSPEC_COND_FMAX, UNSPEC_COND_FMIN and
+       UNSPEC_COND_FMULX.
+       (SVE_COND_FP_BINARY_INT, SVE_COND_FP_ADD): New int iterators.
+       (SVE_COND_FP_SUB, SVE_COND_FP_MUL): Likewise.
+       (SVE_COND_FP_BINARY_I1): Add UNSPEC_COND_FMAX and UNSPEC_COND_FMIN.
+       (SVE_COND_FP_BINARY_REG): Add UNSPEC_COND_FMULX.
+       (SVE_COND_FCADD, SVE_COND_FP_MAXMIN, SVE_COND_FCMLA)
+       (SVE_COND_INT_CMP_WIDE, SVE_FP_TERNARY_LANE, SVE_CFP_TERNARY_LANE)
+       (SVE_WHILE, SVE_SHIFT_WIDE, SVE_LDFF1_LDNF1, SVE_BRK_UNARY)
+       (SVE_BRK_BINARY, SVE_PITER): New int iterators.
+       (optab): Handle UNSPEC_SADDV, UNSPEC_UADDV, UNSPEC_FRECPE,
+       UNSPEC_FRECPS, UNSPEC_RSQRTE, UNSPEC_RSQRTS, UNSPEC_RBIT,
+       UNSPEC_SMUL_HIGHPART, UNSPEC_UMUL_HIGHPART, UNSPEC_FMLA, UNSPEC_FMLS,
+       UNSPEC_FCMLA, UNSPEC_FCMLA90, UNSPEC_FCMLA180, UNSPEC_FCMLA270,
+       UNSPEC_FEXPA, UNSPEC_FTSMUL, UNSPEC_FTSSEL, UNSPEC_COND_FCADD90,
+       UNSPEC_COND_FCADD270, UNSPEC_COND_FCMLA, UNSPEC_COND_FCMLA90,
+       UNSPEC_COND_FCMLA180, UNSPEC_COND_FCMLA270, UNSPEC_COND_FMAX,
+       UNSPEC_COND_FMIN, UNSPEC_COND_FMULX, UNSPEC_COND_FRECPX and
+       UNSPEC_COND_FSCALE.
+       (maxmin_uns): Handle UNSPEC_COND_FMAX and UNSPEC_COND_FMIN.
+       (binqops_op, binqops_op_rev, last_op): New int attributes.
+       (su): Handle UNSPEC_SADDV and UNSPEC_UADDV.
+       (fn, ab): New int attributes.
+       (cmp_op): Handle UNSPEC_COND_CMP*_WIDE and UNSPEC_WHILE_*.
+       (while_optab_cmp, brk_op, sve_pred_op): New int attributes.
+       (sve_int_op): Handle UNSPEC_SMUL_HIGHPART, UNSPEC_UMUL_HIGHPART,
+       UNSPEC_ASHIFT_WIDE, UNSPEC_ASHIFTRT_WIDE, UNSPEC_LSHIFTRT_WIDE and
+       UNSPEC_RBIT.
+       (sve_fp_op): Handle UNSPEC_FRECPE, UNSPEC_FRECPS, UNSPEC_RSQRTE,
+       UNSPEC_RSQRTS, UNSPEC_FMLA, UNSPEC_FMLS, UNSPEC_FEXPA, UNSPEC_FTSMUL,
+       UNSPEC_FTSSEL, UNSPEC_COND_FMAX, UNSPEC_COND_FMIN, UNSPEC_COND_FMULX,
+       UNSPEC_COND_FRECPX and UNSPEC_COND_FSCALE.
+       (sve_fp_op_rev): Handle UNSPEC_COND_FMAX, UNSPEC_COND_FMIN and
+       UNSPEC_COND_FMULX.
+       (rot): Handle UNSPEC_COND_FCADD* and UNSPEC_COND_FCMLA*.
+       (brk_reg_con, brk_reg_opno): New int attributes.
+       (sve_pred_fp_rhs1_operand, sve_pred_fp_rhs2_operand): Handle
+       UNSPEC_COND_FMAX, UNSPEC_COND_FMIN and UNSPEC_COND_FMULX.
+       (sve_pred_fp_rhs2_immediate): Handle UNSPEC_COND_FMAX and
+       UNSPEC_COND_FMIN.
+       (max_elem_bits): New int attribute.
+       (min_elem_bits): Handle UNSPEC_RBIT.
+       * config/aarch64/predicates.md (subreg_lowpart_operator): Handle
+       TRUNCATE as well as SUBREG.
+       (ascending_int_parallel, aarch64_simd_reg_or_minus_one)
+       (aarch64_sve_ldff1_operand, aarch64_sve_ldnf1_operand)
+       (aarch64_sve_prefetch_operand, aarch64_sve_ptrue_svpattern_immediate)
+       (aarch64_sve_qadd_immediate, aarch64_sve_qsub_immediate)
+       (aarch64_sve_gather_immediate_b, aarch64_sve_gather_immediate_h)
+       (aarch64_sve_gather_immediate_w, aarch64_sve_gather_immediate_d)
+       (aarch64_sve_sqadd_operand, aarch64_sve_gather_offset_b)
+       (aarch64_sve_gather_offset_h, aarch64_sve_gather_offset_w)
+       (aarch64_sve_gather_offset_d, aarch64_gather_scale_operand_b)
+       (aarch64_gather_scale_operand_h): New predicates.
+       * config/aarch64/constraints.md (UPb, UPd, UPh, UPw, Utf, Utn, vgb)
+       (vgd, vgh, vgw, vsQ, vsS): New constraints.
+       * config/aarch64/aarch64-sve.md: Add a note on the FFR handling.
+       (*aarch64_sve_reinterpret<mode>): Allow any source register
+       instead of requiring an exact match.
+       (*aarch64_sve_ptruevnx16bi_cc, *aarch64_sve_ptrue<mode>_cc)
+       (*aarch64_sve_ptruevnx16bi_ptest, *aarch64_sve_ptrue<mode>_ptest)
+       (aarch64_wrffr, aarch64_update_ffr_for_load, aarch64_copy_ffr_to_ffrt)
+       (aarch64_rdffr, aarch64_rdffr_z, *aarch64_rdffr_z_ptest)
+       (*aarch64_rdffr_ptest, *aarch64_rdffr_z_cc, *aarch64_rdffr_cc)
+       (aarch64_update_ffrt): New patterns.
+       (@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>)
+       (@aarch64_ld<fn>f1<mode>): New patterns.
+       (@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>)
+       (@aarch64_ldnt1<mode>): New patterns.
+       (gather_load<mode>): Use aarch64_sve_gather_offset_<Vesize> for
+       the scalar part of the address.
+       (mask_gather_load<SVE_S:mode>): Use aarch64_sve_gather_offset_w for the
+       scalar part of the addresse and add an alternative for handling
+       nonzero offsets.
+       (mask_gather_load<SVE_D:mode>): Likewise aarch64_sve_gather_offset_d.
+       (*mask_gather_load<mode>_sxtw, *mask_gather_load<mode>_uxtw)
+       (@aarch64_gather_load_<ANY_EXTEND:optab><VNx4_WIDE:mode><VNx4_NARROW:mode>)
+       (@aarch64_gather_load_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>)
+       (*aarch64_gather_load_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>_sxtw)
+       (*aarch64_gather_load_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>_uxtw)
+       (@aarch64_ldff1_gather<SVE_S:mode>, @aarch64_ldff1_gather<SVE_D:mode>)
+       (*aarch64_ldff1_gather<mode>_sxtw, *aarch64_ldff1_gather<mode>_uxtw)
+       (@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>_sxtw)
+       (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>_uxtw)
+       (@aarch64_sve_prefetch<mode>): New patterns.
+       (@aarch64_sve_gather_prefetch<SVE_I:mode><VNx4SI_ONLY:mode>)
+       (@aarch64_sve_gather_prefetch<SVE_I:mode><VNx2DI_ONLY:mode>)
+       (*aarch64_sve_gather_prefetch<SVE_I:mode><VNx2DI_ONLY:mode>_sxtw)
+       (*aarch64_sve_gather_prefetch<SVE_I:mode><VNx2DI_ONLY:mode>_uxtw)
+       (@aarch64_store_trunc<VNx8_NARROW:mode><VNx8_WIDE:mode>)
+       (@aarch64_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>)
+       (@aarch64_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>)
+       (@aarch64_stnt1<mode>): New patterns.
+       (scatter_store<mode>): Use aarch64_sve_gather_offset_<Vesize> for
+       the scalar part of the address.
+       (mask_scatter_store<SVE_S:mode>): Use aarch64_sve_gather_offset_w for
+       the scalar part of the addresse and add an alternative for handling
+       nonzero offsets.
+       (mask_scatter_store<SVE_D:mode>): Likewise aarch64_sve_gather_offset_d.
+       (*mask_scatter_store<mode>_sxtw, *mask_scatter_store<mode>_uxtw)
+       (@aarch64_scatter_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>)
+       (@aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>)
+       (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_sxtw)
+       (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_uxtw):
+       New patterns.
+       (vec_duplicate<mode>): Use QI as the mode of the input operand.
+       (extract_last_<mode>): Generalize to...
+       (@extract_<LAST:last_op>_<mode>): ...this.
+       (*<SVE_INT_UNARY:optab><mode>2): Rename to...
+       (@aarch64_pred_<SVE_INT_UNARY:optab><mode>): ...this.
+       (@cond_<SVE_INT_UNARY:optab><mode>): New expander.
+       (@aarch64_pred_sxt<SVE_HSDI:mode><SVE_PARTIAL:mode>): New pattern.
+       (@aarch64_cond_sxt<SVE_HSDI:mode><SVE_PARTIAL:mode>): Likewise.
+       (@aarch64_pred_cnot<mode>, @cond_cnot<mode>): New expanders.
+       (@aarch64_sve_<SVE_FP_UNARY_INT:optab><mode>): New pattern.
+       (@aarch64_sve_<SVE_FP_UNARY:optab><mode>): Likewise.
+       (*<SVE_COND_FP_UNARY:optab><mode>2): Rename to...
+       (@aarch64_pred_<SVE_COND_FP_UNARY:optab><mode>): ...this.
+       (@cond_<SVE_COND_FP_UNARY:optab><mode>): New expander.
+       (*<SVE_INT_BINARY_IMM:optab><mode>3): Rename to...
+       (@aarch64_pred_<SVE_INT_BINARY_IMM:optab><mode>): ...this.
+       (@aarch64_adr<mode>, *aarch64_adr_sxtw): New patterns.
+       (*aarch64_adr_uxtw_unspec): Likewise.
+       (*aarch64_adr_uxtw): Rename to...
+       (*aarch64_adr_uxtw_and): ...this.
+       (@aarch64_adr<mode>_shift): New expander.
+       (*aarch64_adr_shift_sxtw): New pattern.
+       (aarch64_<su>abd<mode>_3): Rename to...
+       (@aarch64_pred_<su>abd<mode>): ...this.
+       (<su>abd<mode>_3): Update accordingly.
+       (@aarch64_cond_<su>abd<mode>): New expander.
+       (@aarch64_<SBINQOPS:su_optab><optab><mode>): New pattern.
+       (@aarch64_<UBINQOPS:su_optab><optab><mode>): Likewise.
+       (*<su>mul<mode>3_highpart): Rename to...
+       (@aarch64_pred_<optab><mode>): ...this.
+       (@cond_<MUL_HIGHPART:optab><mode>): New expander.
+       (*cond_<MUL_HIGHPART:optab><mode>_2): New pattern.
+       (*cond_<MUL_HIGHPART:optab><mode>_z): Likewise.
+       (*<SVE_INT_BINARY_SD:optab><mode>3): Rename to...
+       (@aarch64_pred_<SVE_INT_BINARY_SD:optab><mode>): ...this.
+       (cond_<SVE_INT_BINARY_SD:optab><mode>): Add a "@" marker.
+       (@aarch64_bic<mode>, @cond_bic<mode>): New expanders.
+       (*v<ASHIFT:optab><mode>3): Rename to...
+       (@aarch64_pred_<ASHIFT:optab><mode>): ...this.
+       (@aarch64_sve_<SVE_SHIFT_WIDE:sve_int_op><mode>): New pattern.
+       (@cond_<SVE_SHIFT_WIDE:sve_int_op><mode>): New expander.
+       (*cond_<SVE_SHIFT_WIDE:sve_int_op><mode>_m): New pattern.
+       (*cond_<SVE_SHIFT_WIDE:sve_int_op><mode>_z): Likewise.
+       (@cond_asrd<mode>): New expander.
+       (*cond_asrd<mode>_2, *cond_asrd<mode>_z): New patterns.
+       (sdiv_pow2<mode>3): Expand to *cond_asrd<mode>_2.
+       (*sdiv_pow2<mode>3): Delete.
+       (@cond_<SVE_COND_FP_BINARY_INT:optab><mode>): New expander.
+       (*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_2): New pattern.
+       (*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_any): Likewise.
+       (@aarch64_sve_<SVE_FP_BINARY:optab><mode>): New pattern.
+       (@aarch64_sve_<SVE_FP_BINARY_INT:optab><mode>): Likewise.
+       (*<SVE_COND_FP_BINARY_REG:optab><mode>3): Rename to...
+       (@aarch64_pred_<SVE_COND_FP_BINARY_REG:optab><mode>): ...this.
+       (@aarch64_pred_<SVE_COND_FP_BINARY_INT:optab><mode>): New pattern.
+       (cond_<SVE_COND_FP_BINARY:optab><mode>): Add a "@" marker.
+       (*add<SVE_F:mode>3): Rename to...
+       (@aarch64_pred_add<SVE_F:mode>): ...this and add alternatives
+       for SVE_STRICT_GP.
+       (@aarch64_pred_<SVE_COND_FCADD:optab><mode>): New pattern.
+       (@cond_<SVE_COND_FCADD:optab><mode>): New expander.
+       (*cond_<SVE_COND_FCADD:optab><mode>_2): New pattern.
+       (*cond_<SVE_COND_FCADD:optab><mode>_any): Likewise.
+       (*sub<SVE_F:mode>3): Rename to...
+       (@aarch64_pred_sub<SVE_F:mode>): ...this and add alternatives
+       for SVE_STRICT_GP.
+       (@aarch64_pred_abd<SVE_F:mode>): New expander.
+       (*fabd<SVE_F:mode>3): Rename to...
+       (*aarch64_pred_abd<SVE_F:mode>): ...this.
+       (@aarch64_cond_abd<SVE_F:mode>): New expander.
+       (*mul<SVE_F:mode>3): Rename to...
+       (@aarch64_pred_<SVE_F:optab><mode>): ...this and add alternatives
+       for SVE_STRICT_GP.
+       (@aarch64_mul_lane_<SVE_F:mode>): New pattern.
+       (*<SVE_COND_FP_MAXMIN_PUBLIC:optab><mode>3): Rename and generalize
+       to...
+       (@aarch64_pred_<SVE_COND_FP_MAXMIN:optab><mode>): ...this.
+       (*<LOGICAL:optab><PRED_ALL:mode>3_ptest): New pattern.
+       (*<nlogical><PRED_ALL:mode>3): Rename to...
+       (aarch64_pred_<nlogical><PRED_ALL:mode>_z): ...this.
+       (*<nlogical><PRED_ALL:mode>3_cc): New pattern.
+       (*<nlogical><PRED_ALL:mode>3_ptest): Likewise.
+       (*<logical_nn><PRED_ALL:mode>3): Rename to...
+       (aarch64_pred_<logical_nn><mode>_z): ...this.
+       (*<logical_nn><PRED_ALL:mode>3_cc): New pattern.
+       (*<logical_nn><PRED_ALL:mode>3_ptest): Likewise.
+       (*fma<SVE_I:mode>4): Rename to...
+       (@aarch64_pred_fma<SVE_I:mode>): ...this.
+       (*fnma<SVE_I:mode>4): Rename to...
+       (@aarch64_pred_fnma<SVE_I:mode>): ...this.
+       (@aarch64_<sur>dot_prod_lane<vsi2qi>): New pattern.
+       (*<SVE_FP_TERNARY:optab><mode>4): Rename to...
+       (@aarch64_pred_<SVE_FP_TERNARY:optab><mode>): ...this.
+       (cond_<SVE_FP_TERNARY:optab><mode>): Add a "@" marker.
+       (@aarch64_<SVE_FP_TERNARY_LANE:optab>_lane_<mode>): New pattern.
+       (@aarch64_pred_<SVE_COND_FCMLA:optab><mode>): Likewise.
+       (@cond_<SVE_COND_FCMLA:optab><mode>): New expander.
+       (*cond_<SVE_COND_FCMLA:optab><mode>_4): New pattern.
+       (*cond_<SVE_COND_FCMLA:optab><mode>_any): Likewise.
+       (@aarch64_<FCMLA:optab>_lane_<mode>): Likewise.
+       (@aarch64_sve_tmad<mode>): Likewise.
+       (vcond_mask_<SVE_ALL:mode><vpred>): Add a "@" marker.
+       (*aarch64_sel_dup<mode>): Rename to...
+       (@aarch64_sel_dup<mode>): ...this.
+       (@aarch64_pred_cmp<cmp_op><SVE_I:mode>_wide): New pattern.
+       (*aarch64_pred_cmp<cmp_op><SVE_I:mode>_wide_cc): Likewise.
+       (*aarch64_pred_cmp<cmp_op><SVE_I:mode>_wide_ptest): Likewise.
+       (@while_ult<GPI:mode><PRED_ALL:mode>): Generalize to...
+       (@while_<while_optab_cmp><GPI:mode><PRED_ALL:mode>): ...this.
+       (*while_ult<GPI:mode><PRED_ALL:mode>_cc): Generalize to.
+       (*while_<while_optab_cmp><GPI:mode><PRED_ALL:mode>_cc): ...this.
+       (*while_<while_optab_cmp><GPI:mode><PRED_ALL:mode>_ptest): New pattern.
+       (*fcm<cmp_op><mode>): Rename to...
+       (@aarch64_pred_fcm<cmp_op><mode>): ...this.  Make operand order
+       match @aarch64_pred_cmp<cmp_op><SVE_I:mode>.
+       (*fcmuo<mode>): Rename to...
+       (@aarch64_pred_fcmuo<mode>): ...this.  Make operand order
+       match @aarch64_pred_cmp<cmp_op><SVE_I:mode>.
+       (@aarch64_pred_fac<cmp_op><mode>): New expander.
+       (@vcond_mask_<PRED_ALL:mode><mode>): New pattern.
+       (fold_extract_last_<mode>): Generalize to...
+       (@fold_extract_<last_op>_<mode>): ...this.
+       (@aarch64_fold_extract_vector_<last_op>_<mode>): New pattern.
+       (*reduc_plus_scal_<SVE_I:mode>): Replace with...
+       (@aarch64_pred_reduc_<optab>_<mode>): ...this pattern, making the
+       DImode result explicit.
+       (reduc_plus_scal_<mode>): Update accordingly.
+       (*reduc_<optab>_scal_<SVE_I:mode>): Rename to...
+       (@aarch64_pred_reduc_<optab>_<SVE_I:mode>): ...this.
+       (*reduc_<optab>_scal_<SVE_F:mode>): Rename to...
+       (@aarch64_pred_reduc_<optab>_<SVE_F:mode>): ...this.
+       (*aarch64_sve_tbl<mode>): Rename to...
+       (@aarch64_sve_tbl<mode>): ...this.
+       (@aarch64_sve_compact<mode>): New pattern.
+       (*aarch64_sve_dup_lane<mode>): Rename to...
+       (@aarch64_sve_dup_lane<mode>): ...this.
+       (@aarch64_sve_dupq_lane<mode>): New pattern.
+       (@aarch64_sve_splice<mode>): Likewise.
+       (aarch64_sve_<perm_insn><mode>): Rename to...
+       (@aarch64_sve_<perm_insn><mode>): ...this.
+       (*aarch64_sve_ext<mode>): Rename to...
+       (@aarch64_sve_ext<mode>): ...this.
+       (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): Add a "@" marker.
+       (*aarch64_sve_<optab>_nontrunc<SVE_F:mode><SVE_HSDI:mode>): Rename
+       to...
+       (@aarch64_sve_<optab>_nontrunc<SVE_F:mode><SVE_HSDI:mode>): ...this.
+       (*aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>):
+       Rename to...
+       (@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>):
+       ...this.
+       (@cond_<optab>_nontrunc<SVE_F:mode><SVE_HSDI:mode>): New expander.
+       (@cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>): Likewise.
+       (*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>): New pattern.
+       (*aarch64_sve_<optab>_nonextend<SVE_HSDI:mode><SVE_F:mode>): Rename
+       to...
+       (@aarch64_sve_<optab>_nonextend<SVE_HSDI:mode><SVE_F:mode>): ...this.
+       (aarch64_sve_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>): Add
+       a "@" marker.
+       (@cond_<optab>_nonextend<SVE_HSDI:mode><SVE_F:mode>): New expander.
+       (@cond_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>): Likewise.
+       (*cond_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>): New
+       pattern.
+       (*aarch64_sve_<optab>_trunc<SVE_SDF:mode><SVE_HSF:mode>): Rename to...
+       (@aarch64_sve_<optab>_trunc<SVE_SDF:mode><SVE_HSF:mode>): ...this.
+       (@cond_<optab>_trunc<SVE_SDF:mode><SVE_HSF:mode>): New expander.
+       (*cond_<optab>_trunc<SVE_SDF:mode><SVE_HSF:mode>): New pattern.
+       (aarch64_sve_<optab>_nontrunc<SVE_HSF:mode><SVE_SDF:mode>): Add a
+       "@" marker.
+       (@cond_<optab>_nontrunc<SVE_HSF:mode><SVE_SDF:mode>): New expander.
+       (*cond_<optab>_nontrunc<SVE_HSF:mode><SVE_SDF:mode>): New pattern.
+       (aarch64_sve_punpk<perm_hilo>_<mode>): Add a "@" marker.
+       (@aarch64_brk<SVE_BRK_UNARY:brk_op>): New pattern.
+       (*aarch64_brk<SVE_BRK_UNARY:brk_op>_cc): Likewise.
+       (*aarch64_brk<SVE_BRK_UNARY:brk_op>_ptest): Likewise.
+       (@aarch64_brk<SVE_BRK_BINARY:brk_op>): Likewise.
+       (*aarch64_brk<SVE_BRK_BINARY:brk_op>_cc): Likewise.
+       (*aarch64_brk<SVE_BRK_BINARY:brk_op>_ptest): Likewise.
+       (@aarch64_sve_<SVE_PITER:sve_pred_op><mode>): Likewise.
+       (*aarch64_sve_<SVE_PITER:sve_pred_op><mode>_cc): Likewise.
+       (*aarch64_sve_<SVE_PITER:sve_pred_op><mode>_ptest): Likewise.
+       (aarch64_sve_cnt_pat): Likewise.
+       (@aarch64_sve_<ANY_PLUS:inc_dec><DI_ONLY:mode>_pat): Likewise.
+       (*aarch64_sve_incsi_pat): Likewise.
+       (@aarch64_sve_<SAT_PLUS:inc_dec><SI_ONLY:mode>_pat): Likewise.
+       (@aarch64_sve_<ANY_PLUS:inc_dec><VNx2DI_ONLY:mode>_pat): Likewise.
+       (@aarch64_sve_<ANY_PLUS:inc_dec><VNx4SI_ONLY:mode>_pat): Likewise.
+       (@aarch64_sve_<ANY_PLUS:inc_dec><VNx8HI_ONLY:mode>_pat): New expander.
+       (*aarch64_sve_<ANY_PLUS:inc_dec><VNx8HI_ONLY:mode>_pat): New pattern.
+       (@aarch64_sve_<ANY_MINUS:inc_dec><DI_ONLY:mode>_pat): Likewise.
+       (*aarch64_sve_decsi_pat): Likewise.
+       (@aarch64_sve_<SAT_MINUS:inc_dec><SI_ONLY:mode>_pat): Likewise.
+       (@aarch64_sve_<ANY_MINUS:inc_dec><VNx2DI_ONLY:mode>_pat): Likewise.
+       (@aarch64_sve_<ANY_MINUS:inc_dec><VNx4SI_ONLY:mode>_pat): Likewise.
+       (@aarch64_sve_<ANY_MINUS:inc_dec><VNx8HI_ONLY:mode>_pat): New expander.
+       (*aarch64_sve_<ANY_MINUS:inc_dec><VNx8HI_ONLY:mode>_pat): New pattern.
+       (@aarch64_pred_cntp<mode>): Likewise.
+       (@aarch64_sve_<ANY_PLUS:inc_dec><DI_ONLY:mode><PRED_ALL:mode>_cntp):
+       New expander.
+       (*aarch64_sve_<ANY_PLUS:inc_dec><DI_ONLY:mode><PRED_ALL:mode>_cntp)
+       (*aarch64_incsi<PRED_ALL:mode>_cntp): New patterns.
+       (@aarch64_sve_<SAT_PLUS:inc_dec><SI_ONLY:mode><PRED_ALL:mode>_cntp):
+       New expander.
+       (*aarch64_sve_<SAT_PLUS:inc_dec><SI_ONLY:mode><PRED_ALL:mode>_cntp):
+       New pattern.
+       (@aarch64_sve_<ANY_PLUS:inc_dec><VNx2DI_ONLY:mode>_cntp): New expander.
+       (*aarch64_sve_<ANY_PLUS:inc_dec><VNx2DI_ONLY:mode>_cntp): New pattern.
+       (@aarch64_sve_<ANY_PLUS:inc_dec><VNx4SI_ONLY:mode>_cntp): New expander.
+       (*aarch64_sve_<ANY_PLUS:inc_dec><VNx4SI_ONLY:mode>_cntp): New pattern.
+       (@aarch64_sve_<ANY_PLUS:inc_dec><VNx8HI_ONLY:mode>_cntp): New expander.
+       (*aarch64_sve_<ANY_PLUS:inc_dec><VNx8HI_ONLY:mode>_cntp): New pattern.
+       (@aarch64_sve_<ANY_MINUS:inc_dec><DI_ONLY:mode><PRED_ALL:mode>_cntp):
+       New expander.
+       (*aarch64_sve_<ANY_MINUS:inc_dec><DI_ONLY:mode><PRED_ALL:mode>_cntp)
+       (*aarch64_incsi<PRED_ALL:mode>_cntp): New patterns.
+       (@aarch64_sve_<SAT_MINUS:inc_dec><SI_ONLY:mode><PRED_ALL:mode>_cntp):
+       New expander.
+       (*aarch64_sve_<SAT_MINUS:inc_dec><SI_ONLY:mode><PRED_ALL:mode>_cntp):
+       New pattern.
+       (@aarch64_sve_<ANY_MINUS:inc_dec><VNx2DI_ONLY:mode>_cntp): New
+       expander.
+       (*aarch64_sve_<ANY_MINUS:inc_dec><VNx2DI_ONLY:mode>_cntp): New pattern.
+       (@aarch64_sve_<ANY_MINUS:inc_dec><VNx4SI_ONLY:mode>_cntp): New
+       expander.
+       (*aarch64_sve_<ANY_MINUS:inc_dec><VNx4SI_ONLY:mode>_cntp): New pattern.
+       (@aarch64_sve_<ANY_MINUS:inc_dec><VNx8HI_ONLY:mode>_cntp): New
+       expander.
+       (*aarch64_sve_<ANY_MINUS:inc_dec><VNx8HI_ONLY:mode>_cntp): New pattern.
+       * config/aarch64/arm_sve.h: New file.
+       * config/aarch64/aarch64-sve-builtins.h: Likewise.
+       * config/aarch64/aarch64-sve-builtins.cc: Likewise.
+       * config/aarch64/aarch64-sve-builtins.def: Likewise.
+       * config/aarch64/aarch64-sve-builtins-base.h: Likewise.
+       * config/aarch64/aarch64-sve-builtins-base.cc: Likewise.
+       * config/aarch64/aarch64-sve-builtins-base.def: Likewise.
+       * config/aarch64/aarch64-sve-builtins-functions.h: Likewise.
+       * config/aarch64/aarch64-sve-builtins-shapes.h: Likewise.
+       * config/aarch64/aarch64-sve-builtins-shapes.cc: Likewise.
+ 2019-10-29  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64-sve.md (@aarch64_sve_rev<PRED_ALL:mode>):
+       New pattern.
+       * config/aarch64/aarch64.c (aarch64_evpc_rev_global): Handle all
+       SVE modes.
  
-       * config/s390/s390-builtin-types.def: Add void function type.
-       * config/s390/s390-builtins.def: Use the function type for the
-       tbeginc builtin.
+ 2019-10-29  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64.md (FFR_REGNUM, FFRT_REGNUM): New constants.
+       * config/aarch64/aarch64.h (FIRST_PSEUDO_REGISTER): Bump to
+       FFRT_REGNUM + 1.
+       (FFR_REGS, PR_AND_FFR_REGS): New register classes.
+       (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add entries for them.
+       * config/aarch64/aarch64.c (pr_or_ffr_regnum_p): New function.
+       (aarch64_hard_regno_nregs): Handle the new register classes.
+       (aarch64_hard_regno_mode_ok): Likewise.
+       (aarch64_regno_regclass): Likewise.
+       (aarch64_class_max_nregs): Likewise.
+       (aarch64_register_move_cost): Likewise.
+       (aarch64_conditional_register_usage): Don't treat FFR and FFRT
+       as general register_operands.
  
- 2018-06-04  Jim Wilson  <jimw@sifive.com>
+ 2019-10-29  Martin Liska  <mliska@suse.cz>
  
-       * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
-       to int.
-       * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue
-       and maybe_eh_return.  Change regno to unsigned int.  Use new args to
-       handle EH_RETURN_DATA_REGNO registers properly.
-       (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg.
-       (riscv_expand_epilogue): Update comment.  Change argument name and
-       type.  Update code to use new name and type.  Pass new args to
-       riscv_for_each_saved_reg.  Only use EH_RETURN_STACKADJ_RTX when
-       EXCEPTION_RETURN.
-       * config/riscv/riscv.md (NORMAL_RETURN): New.
-       (SIBCALL_RETURN, EXCEPTION_RETURN): New.
-       (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg.
-       (eh_return): Call gen_eh_return_internal and emit barrier.
-       (eh_return_internal): Call riscv_expand_epilogue.
+       * ggc-common.c: One can't subtract unsigned types
+       in compare function.
  
- 2018-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 2019-10-29  Martin Liska  <mliska@suse.cz>
  
-       * gimple-ssa-store-merging.c (struct merged_store_group): Move up
-       bit_insertion field and declare can_be_merged_into method.
-       (merged_store_group::can_be_merged_into): New method.
-       (imm_store_chain_info::coalesce_immediate): Call it to decide whether
-       consecutive non-overlapping stores can be merged.  Turn MEM_REF stores
-       into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store.
+       * cgraphunit.c (symbol_table::compile): Pass
+       title as dump_memory_report argument.
+       * toplev.c (dump_memory_report):  New argument.
+       (finalize): Pass new argument.
+       * toplev.h (dump_memory_report): Add argument.
  
- 2018-06-04  Richard Biener  <rguenther@suse.de>
+ 2019-10-29  Martin Liska  <mliska@suse.cz>
  
-       PR tree-optimization/85955
-       * builtins.c (fold_builtin_sincos): Convert pointers to
-       destination to appropriate type before dereferencing.
+       * ggc-common.c: Move Leak to the first column.
  
- 2018-06-04  Segher Boessenkool  <segher@kernel.crashing.org>
+ 2019-10-29  Martin Liska  <mliska@suse.cz>
  
-       * config/rs6000/rs6000.md (abs<mode>2 for FLOAT128): Handle IFmode.
+       * cgraphunit.c (symbol_table::compile): Remove argument
+       for dump_memory_report.
+       * ggc-common.c (dump_ggc_loc_statistics): Likewise.
+       (compare_final): Remove in order to make report
+       better readable.
+       * ggc.h (dump_ggc_loc_statistics):  Remove argument.
+       * mem-stats.h (mem_alloc_description::get_list):
+       Do not pass cmp.
+       (mem_alloc_description::dump): Likewise here.
+       * toplev.c (dump_memory_report): Remove final
+       argument.
+       (finalize): Likewise.
+       * toplev.h (dump_memory_report): Remove argument.
  
- 2018-06-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 2019-10-29  Richard Sandiford  <richard.sandiford@arm.com>
  
-       * expr.c (expand_expr_real_1): Force the operand into memory if
-       its TYPE_MODE is BLKmode and if there is no integer mode for
-       the number of bits being extracted.
+       * config/aarch64/aarch64.c (aarch64_sve_cmp_immediate_p)
+       (aarch64_simd_shift_imm_p): Accept scalars as well as vectors.
+       * config/aarch64/predicates.md (aarch64_sve_cmp_vsc_immediate)
+       (aarch64_sve_cmp_vsd_immediate): Accept "const_int", but don't
+       accept "const".
  
- 2018-06-04  Jakub Jelinek  <jakub@redhat.com>
+ 2019-10-29  Richard Sandiford  <richard.sandiford@arm.com>
  
-       PR target/85832
-       PR target/86036
-       * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
-       Use vptestnm rather than vptestm in (=Yc,v,C) variant.
+       * coretypes.h (string_int_pair): New typedef.
+       * langhooks-def.h (LANG_HOOKS_SIMULATE_ENUM_DECL): Define.
+       (LANG_HOOKS_FOR_TYPES_INITIALIZER): Include it.
+       * langhooks.h (lang_hooks_for_types::simulate_enum_decl): New hook.
  
- 2018-06-04  Richard Biener  <rguenther@suse.de>
+ 2019-10-29  Richard Sandiford  <richard.sandiford@arm.com>
+       * langhooks.h (lang_hooks::simulate_builtin_function_decl): New hook.
+       (simulate_builtin_function_decl): Declare.
+       * langhooks-def.h (LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL): Define.
+       (LANG_HOOKS_INITIALIZER): Include it.
+       * langhooks.c (add_builtin_function_common): Rename to...
+       (build_builtin_function): ...this.  Add a location parameter and use
+       it instead of BUILTINS_LOCATION.  Remove the hook parameter and return
+       the decl instead.
+       (add_builtin_function): Update accordingly, passing the returned
+       decl to the lang hook.
+       (add_builtin_function_ext_scope): Likewise
+       (simulate_builtin_function_decl): New function.
  
-       * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into...
-       (cleanup_tree_cfg_noloop): ... single caller.  Do
-       start_recording_case_labels later.
+ 2019-10-29  Jakub Jelinek  <jakub@redhat.com>
  
- 2018-06-04  Sebastian Peryt  <sebastian.peryt@intel.com>
+       * doc/install.texi (--enable-offload-targets): Fix up a typo in the
+       example, use actual names of supported offload targets.
  
-       * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED
-       to _IMMINTRIN_H_INCLUDED.
-       * config/i386/pconfigintrin.h: Ditto.
-       * config/i386/waitpkgintrin.h: Ditto.
-       * config/i386/immintrin.h: Add includes for sgxintrin.h,
-       pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h.
-       * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h,
-       emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h,
-       bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h,
-       waitpkgintrin.h and cldemoteintrin.h.
+       PR target/92258
+       * config/i386/sse.md (iptr): Revert 2019-10-27 change.
  
- 2018-06-04  Richard Biener  <rguenther@suse.de>
+ 2019-10-28  Martin Sebor  <msebor@redhat.com>
  
-       PR tree-optimization/86038
-       * tracer.c (find_best_successor): Check probability for
-       being initialized, bail out if not.
+       * tree-ssa-strlen.c (get_addr_stridx): Add argument and use it.
+       (handle_store): Pass argument to get_addr_stridx.
  
- 2018-06-04  Richard Earnshaw  <rearnsha@arm.com>
+ 2019-10-28  Martin Sebor  <msebor@redhat.com>
  
-       PR target/86003
-       * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list
-       of bits to ignore when comparing architectures.
+       PR tree-optimization/92226
+       * tree-ssa-strlen.c (compare_nonzero_chars): Return -1 also when
+       the offset is in the open range outlined by SI's length.
+ 2019-10-28  Martin Sebor  <msebor@redhat.com>
+       PR c/66970
+       * doc/cpp.texi (__has_builtin): Document.
+       * doc/extend.texi (__builtin_frob_return_addr): Correct spelling.
  
- 2018-06-04  Jakub Jelinek  <jakub@redhat.com>
+ 2019-10-28  Mihailo Stojanovic  <mistojanovic@wavecomp.com>
+       PR target/82981
+       * config/mips/mips.md (<u>mulditi3): Generate patterns for high
+       doubleword and low doubleword result of multiplication on
+       MIPS64R6.
  
-       PR tree-optimization/69615
-       * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the
-       maximum or minimum of the type, try to merge it also as if
-       range1 is + [-, x - 1] or + [x + 1, -].
+       * config/mips/mips.c (DIRECT_BUILTIN_PURE): New macro. Add a
+       pure qualifier to the built-in.
+       (MSA_BUILTIN_PURE): New macro. Add a pure qualifier to the MSA
+       built-ins.
+       (struct mips_builtin_description): Add is_pure flag.
+       (mips_init_builtins): Mark built-in as pure if the flag in the
+       corresponding mips_builtin_description struct is set.
+       * config/mips/mips-msa.md (msa_insert_<msaftm_f>): Add an
+       alternative which covers the floating-point input value. Also
+       forbid the split of insert.d pattern for floating-point values.
+ 2019-10-28  Andrew Burgess  <andrew.burgess@embecosm.com>
  
-       PR c++/86025
-       * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
+       * config.gcc: Add riscv-sr.o to extra_objs for riscv.
+       * config/riscv/riscv-sr.c: New file.
+       * config/riscv/riscv.c (riscv_reorg): New function.
+       (TARGET_MACHINE_DEPENDENT_REORG): Define.
+       * config/riscv/riscv.h (SIBCALL_REG_P): Define.
+       (riscv_remove_unneeded_save_restore_calls): Declare.
+       * config/riscv/t-riscv (riscv-sr.o): New build rule.
  
- 2018-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 2019-10-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
-       PR tree-optimization/86034
-       * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to
-       the unsigned bitfield type in a bit insertion sequence if it does not
-       have a larger precision than the bitfield size.
-       (process_store): Also bypass widening conversions for BIT_INSERT_EXPR.
+       PR tree-optimization/92163
+       * tree-ssa-dse.c (delete_dead_or_redundant_assignment): New param
+       need_eh_cleanup with default value NULL. Gate on need_eh_cleanup
+       before calling bitmap_set_bit.
+       (dse_optimize_redundant_stores): Pass global need_eh_cleanup to
+       delete_dead_or_redundant_assignment.
+       (dse_dom_walker::dse_optimize_stmt): Likewise.
+       * tree-ssa-dse.h (delete_dead_or_redundant_assignment): Adjust prototype.
+ 2019-10-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+       PR middle-end/91272
+       * tree-vect-stmts.c (vectorizable_condition): Support
+       EXTRACT_LAST_REDUCTION with fully-masked loops.
+ 2019-10-28  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92252
+       * tree-vect-slp.c (vect_get_and_check_slp_defs): Adjust
+       STMT_VINFO_REDUC_IDX when swapping operands.
+ 2019-10-28  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92241
+       * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): When
+       we failed to update the reduction index do not use the pattern
+       stmts for the reduction chain.
+       (vectorizable_reduction): When the reduction chain is corrupt,
+       fail.
+       * tree-vect-patterns.c (vect_mark_pattern_stmts): Stop when we
+       fail to update the reduction chain.
+ 2019-10-28  Richard Biener  <rguenther@suse.de>
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
+       STMT_VINFO_REDUC_IDX from the actual stmt.
+       (vect_transform_reduction): Likewise.
+       (vectorizable_reduction): Compute the reduction chain length,
+       do not recompute the reduction operand index.  Remove no longer
+       necessary restriction for condition reduction chains.
+ 2019-10-28  UroÅ¡ Bizjak  <ubizjak@gmail.com>
+       PR target/92225
+       * config/i386/sse.md (REDUC_SSE_SMINMAX_MODE): Use TARGET_SSE4_2
+       condition for V2DImode.
+ 2019-10-28  UroÅ¡ Bizjak  <ubizjak@gmail.com>
+       * config/i386/sse.md (sse_cvtss2si<rex64namesuffix>_2):
+       Remove %k operand modifier.
+       (*vec_extractv2df_1_sse): Remove %q operand modifier.
+ 2019-10-28  Ilya Leoshkevich  <iii@linux.ibm.com>
+       PR rtl-optimization/92007
+       * cfgcleanup.c (thread_jump): Add an assertion that we don't
+       call it after reload if hot/cold partitioning has been done.
+       (class pass_postreload_jump): Rename to
+       pass_jump_after_combine.
+       (make_pass_postreload_jump): Rename to
+       make_pass_jump_after_combine.
+       * passes.def(pass_postreload_jump): Move before reload, rename
+       to pass_jump_after_combine.
+       * tree-pass.h (make_pass_postreload_jump): Rename to
+       make_pass_jump_after_combine.
+ 2019-10-25  Jan Hubicka  <hubicka@ucw.cz>
+       PR ipa/92242
+       * ipa-fnsummary.c (ipa_merge_fn_summary_after_inlining): Check
+       for missing EDGE_REF
+       * ipa-prop.c (update_jump_functions_after_inlining): Likewise.
+ 2019-10-25  Jiufu Guo  <guojiufu@linux.ibm.com>
+       PR tree-optimization/88760
+       * config/rs6000/rs6000-common.c (rs6000_option_optimization_table):
+       Enable -funroll-loops for -O2 and above.
+       * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
+       PARAM_MAX_UNROLL_TIMES to 2 and PARAM_MAX_UNROLLED_INSNS to 20, and
+       do not turn on web and rngreg implicitly, if the unroller is not
+       explicitly enabled.
+ 2019-10-27  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-prop.c (ipa_propagate_indirect_call_infos): Do not remove
+       jump functions.
+ 2019-10-27  Eric Botcazou <ebotcazou@adacore.com>
+       * cgraph.c (cgraph_node::rtl_info): Fix cut&pasto in comment.
+       * cgraph.h (cgraph_node::rtl_info): Likewise.
+ 2019-10-27  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-cp.c (propagate_constants_across_call): If args are not available
+       just drop everything to varying.
+       (find_aggregate_values_for_callers_subset): Watch for missing
+       edge summary.
+       (find_more_scalar_values_for_callers_subs): Likewise.
+       * ipa-prop.c (ipa_compute_jump_functions_for_edge,
+       update_jump_functions_after_inlining, propagate_controlled_uses):
+       Watch for missing summaries.
+       (ipa_propagate_indirect_call_infos): Remove summary after propagation
+       is finished.
+       (ipa_write_node_info): Watch for missing summaries.
+       (ipa_read_edge_info): Create new ref.
+       (ipa_edge_args_sum_t): Add remove.
+       (IPA_EDGE_REF_GET_CREATE): New macro.
+       * ipa-fnsummary.c (evaluate_properties_for_edge): Watch for missing
+       edge summary.
+       (remap_edge_change_prob): Likewise.
  
- 2018-06-03  Kito Cheng  <kito.cheng@gmail.com>
+ 2019-10-27  Jan Hubicka  <hubicka@ucw.cz>
  
-       * config/nds32/nds32-peephole2.md: Add new patterns for code size.
+       * ipa-inline-transform.c (inline_call): update function summaries
+       after expanidng thunk.
  
- 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
+ 2019-10-27  Jan Hubicka  <hubicka@ucw.cz>
  
-       * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J.
-       * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J.
-       * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking.
-       * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J).
+       * ipa-icf.c (sem_function::merge): Update function summaries.
+       * ipa-prop.h (ipa_get_param): Do not sanity check for WPA.
  
- 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
+ 2019-10-27  Hongtao Liu  <hongtao.liu@intel.com>
  
-       * common/config/nds32/nds32-common.c (nds32_option_optimization_table):
-       Disable -fdelete-null-pointer-checks for ELF toolchain.
+       * config/i386/sse.md (*<sse>_vm<plusminus_insn><mode>3,
+       <sse>_vm<multdiv_mnemonic><mode>3): Remove <iptr> since
+       operand already has scalar mode.
+       (iptr): Remove SF/DF.
  
- 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
-           Kito Cheng  <kito.cheng@gmail.com>
+ 2019-10-26  Segher Boessenkool  <segher@kernel.crashing.org>
  
-       * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
-       (nds32le-*-*, nds32be-*-*): Integrate checking process.
-       (nds32*-*-*): Add glibc and uclibc conditions.
-       * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
-       (TARGET_EXCEPT_UNWIND_INFO): Define.
-       * config/nds32/elf.h: New file.
-       * config/nds32/linux.h: New file.
-       * config/nds32/nds32-elf.opt: New file.
-       * config/nds32/nds32-linux.opt: New file.
-       * config/nds32/nds32-fp-as-gp.c
-       (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
-       * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
-       TARGET_LINUX_ABI.
-       (nds32_asm_file_end): Ditto.
-       (nds32_print_operand): Ditto.
-       (nds32_insert_attributes): Ditto.
-       (nds32_init_libfuncs): New function.
-       (TARGET_HAVE_TLS): Define.
-       (TARGET_INIT_LIBFUNCS): Define.
-       * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
-       spec content.
-       (TARGET_ELF): Apply different mcmodel setting.
-       (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
-       been migrated into elf.h and linux.h files.
-       * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
-       * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
-       (mcmodel): The content has been migrated into nds32-elf.opt and
-       nds32-linux.opt files.
-       * config/nds32/t-elf: New file.
-       * config/nds32/t-linux: New file.
- 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
-           Shiva Chen  <shiva0217@gmail.com>
+       PR target/91289
+       * config/rs6000/rs6000-logue.c (rs6000_emit_allocate_stack): Don't add
+       an immediate to r0; use r11 instead.  Save and restore r11 to r0 around
+       this.
  
-       * config/nds32/constants.md (unspec_volatile_element): Add
-       UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
-       * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
-       optimization.
-       * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
-       (make_pass_nds32_fp_as_gp): Declare.
-       * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
-       optmization pass.
-       (nds32_asm_function_end_prologue): Remove unused asm output.
-       (nds32_asm_function_begin_epilogue): Remove unused asm output.
-       (nds32_asm_file_start): Output necessary fp_as_gp information.
-       (nds32_option_override): Adjust register usage.
-       (nds32_expand_prologue): Consider fp_as_gp situation.
-       (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
-       * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
-       (epilogue): Ditto.
-       (return): Ditto.
-       (simple_return): Ditto.
-       (omit_fp_begin): Output special directive for fp_as_gp.
-       (omit_fp_end): Output special directive for fp_as_gp.
-       * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
-       mforbid-fp-as-gp): New options.
- 2018-06-01  Mark Wielaard  <mark@klomp.org>
-       * dwarf2out.c (dwarf2out_finish): Remove generation of
-       DW_AT_loclists_base.
- 2018-06-01  Eric Botcazou  <ebotcazou@adacore.com>
-       * gimple-ssa-store-merging.c: Include gimple-fold.h.
-       (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
-       (struct merged_store_group): Add bit_insertion field.
-       (dump_char_array): Use standard hexadecimal format.
-       (merged_store_group::merged_store_group): Set bit_insertion to false.
-       (merged_store_group::apply_stores): Use optimal buffer size.  Deal
-       with BIT_INSERT_EXPR stores.  Move up code updating the mask and
-       also print the mask in the dump file.
-       (pass_store_merging::gate): Minor tweak.
-       (imm_store_chain_info::coalesce_immediate): Fix wrong association
-       of stores with groups in dump.  Allow coalescing of BIT_INSERT_EXPR
-       stores with INTEGER_CST stores.
-       (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
-       (imm_store_chain_info::output_merged_store): Add try_bitpos variable
-       and use it throughout.  Generate bit insertion sequences if need be.
-       (pass_store_merging::process_store): Remove redundant condition.
-       Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
- 2018-06-01  Segher Boessenkool  <segher@kernel.crashing.org>
-       * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
-       the 128-bit floating point types.  Fix function comment.
- 2018-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 2019-10-26  Hongtao Liu  <hongtao.liu@intel.com>
  
-       * config/aarch64/aarch64-simd.md
-       (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
-       mnemonics.
-       (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
-       mnemonics.
+       * config/i386/sse.md
+       (<sse>_vm<plusminus_insn><mode>3<mask_scalar_name><round_scalar_name>,
+       <sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name><round_scalar_name>,
+       <sse>_vmsqrt<mode>2<mask_scalar_name><round_scalar_name>,
+       <sse>_vm<code><mode>3<mask_scalar_name><round_saeonly_scalar_name>,
+       <sse>_vmmaskcmp<mode>3):
+       Change predicates from vector_operand to nonimmediate_operand,
+       constraints xBm to xm, since scalar operations don't need
+       memory address alignment.
+       (avx512f_vmcmp<mode>3<round_saeonly_name>,
+       avx512f_vmcmp<mode>3_mask<round_saeonly_name>): Replace
+       round_saeonly_nimm_predicate with
+       round_saeonly_nimm_scalar_predicate.
+       (fmai_vmfmadd_<mode><round_name>, fmai_vmfmsub_<mode><round_name>,
+       fmai_vmfnmadd_<mode><round_name>,fmai_vmfnmsub_<mode><round_name>,
+       *fmai_fmadd_<mode>, *fmai_fmsub_<mode>,
+       *fmai_fnmadd_<mode><round_name>, *fmai_fnmsub_<mode><round_name>,
+       avx512f_vmfmadd_<mode>_mask3<round_name>,
+       avx512f_vmfmadd_<mode>_maskz_1<round_name>,
+       *avx512f_vmfmsub_<mode>_mask<round_name>,
+       avx512f_vmfmsub_<mode>_mask3<round_name>,
+       *avx512f_vmfmsub_<mode>_maskz_1<round_name>,
+       *avx512f_vmfnmadd_<mode>_mask<round_name>,
+       *avx512f_vmfnmadd_<mode>_mask3<round_name>,
+       *avx512f_vmfnmadd_<mode>_maskz_1<round_name>,
+       *avx512f_vmfnmsub_<mode>_mask<round_name>,
+       *avx512f_vmfnmsub_<mode>_mask3<round_name>,
+       *avx512f_vmfnmsub_<mode>_maskz_1<round_name>,
+       cvtusi2<ssescalarmodesuffix>32<round_name>,
+       cvtusi2<ssescalarmodesuffix>64<round_name>, ): Replace
+       round_nimm_predicate with round_nimm_scalr_predicate.
+       (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
+       avx512f_sfixupimm<mode>_mask<round_saeonly_name>,
+       avx512er_vmrcp28<mode><round_saeonly_name>,
+       avx512er_vmrsqrt28<mode><round_saeonly_name>,
+       ): Replace round_saeonly_nimm_predicate with
+       round_saeonly_nimm_scalar_predicate.
+       (avx512dq_vmfpclass<mode><mask_scalar_merge_name>): Replace
+       vector_operand with nonimmediate_operand.
+       * config/i386/subst.md (round_scalar_nimm_predicate,
+       round_saeonly_scalar_nimm_predicate): Replace
+       vector_operand with nonimmediate_operand.
+ 2019-10-26  Hongtao Liu  <hongtao.liu@intel.com>
+       PR target/89071
+       * config/i386/i386.md (*rcpsf2_sse): Add
+       avx_partial_xmm_update, prefer m constraint for TARGET_AVX.
+       (*rsqrtsf2_sse): Ditto.
+       (*sqrt<mode>2_sse): Ditto.
+       (sse4_1_round<mode>2): separate constraint vm, add
+       avx_partail_xmm_update, prefer m constraint for TARGET_AVX.
+       * config/i386/sse.md (*sse_vmrcpv4sf2"): New define_insn used
+       by pass rpad.
+       (*<sse>_vmsqrt<mode>2<mask_scalar_name><round_scalar_name>*):
+       Ditto.
+       (*sse_vmrsqrtv4sf2): Ditto.
+       (*avx512f_rndscale<mode><round_saeonly_name>): Ditto.
+       (*sse4_1_round<ssescalarmodesuffix>): Ditto.
+       (sse4_1_round<ssescalarmodesuffix>): Add m constraint and
+       <iptr> pointer size modifier since vround support memory operand.
+ 2019-10-18  Georg-Johann Lay  <avr@gjlay.de>
+       PR target/85969
+       * config/avr/gen-avr-mmcu-specs.c (str_prefix_p): Remove unused
+       static function.
+ 2019-10-25  Cesar Philippidis <cesar@codesourcery.com>
+           Tobias Burnus  <tobias@codesourcery.com>
+       * gimplify.c (oacc_default_clause): Privatize fortran common blocks.
+       (omp_notice_variable): Defer the expansion of DECL_VALUE_EXPR for
+       common block decls.
+ 2019-10-25  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92222
+       * tree-vect-slp.c (_slp_oprnd_info::first_pattern): Remove.
+       (_slp_oprnd_info::second_pattern): Likewise.
+       (_slp_oprnd_info::any_pattern): New.
+       (vect_create_oprnd_info): Adjust.
+       (vect_get_and_check_slp_defs): Compute whether any stmt is
+       in a pattern.
+       (vect_build_slp_tree_2): Avoid building up a node from scalars
+       if any of the operand defs, not just the first, is in a pattern.
+ 2019-10-25  Richard Biener  <rguenther@suse.de>
+       * tree-vect-slp.c (vect_get_and_check_slp_defs): Only fail
+       swapping if we actually have to modify the IL on a shared stmt.
+       (vect_build_slp_tree_2): Never fail swapping on shared stmts
+       because we no longer modify the IL.
+ 2019-10-25  Martin Liska  <mliska@suse.cz>
+       * tree.c (dump_tree_statistics): Use sorted index 'j' and not 'i'.
+ 2019-10-25  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-loop.c (vectorizable_reduction): Restrict the
+       LOOP_VINFO_CAN_FULLY_MASK_P handling to cases that will be
+       handled by vect_transform_reduction.  Allow fully-masked loops
+       to be used with reduction chains.
+       * tree-vect-stmts.c (vectorizable_operation): Handle reduction
+       operations in fully-masked loops.
+       (vectorizable_condition): Reject EXTRACT_LAST_REDUCTION
+       operations in fully-masked loops.
+ 2019-10-25  Richard Biener  <rguenther@suse.de>
+       * tree-vect-loop.c (vectorizable_reduction): Verify
+       STMT_VINFO_REDUC_IDX on the to be vectorized stmts is set up
+       correctly.
+       * tree-vect-patterns.c (vect_mark_pattern_stmts): Transfer
+       STMT_VINFO_REDUC_IDX from the original stmts to the pattern
+       stmts.
+ 2019-10-24  Jakub Jelinek  <jakub@redhat.com>
+       * gimplify.h (omp_construct_selector_matches): Declare.
+       * gimplify.c (struct gimplify_omp_ctx): Add code member.
+       (gimplify_call_expr): Call omp_resolve_declare_variant and remap
+       called function if needed for flag_openmp.
+       (gimplify_scan_omp_clauses): Set ctx->code.
+       (omp_construct_selector_matches): New function.
+       * omp-general.h (omp_constructor_traits_to_codes,
+       omp_context_selector_matches, omp_resolve_declare_variant): Declare.
+       * omp-general.c (omp_constructor_traits_to_codes,
+       omp_context_selector_matches, omp_resolve_declare_variant): New
+       functions.
  
- 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
+       * config/arc/arc.c (hwloop_optimize): Add missing space in string
+       literal.
+       * config/rx/rx.c (rx_print_operand): Likewise.
+       * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
+       * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
+       * ipa-sra.c (create_parameter_descriptors, process_scan_results):
+       Likewise.
+       * genemit.c (emit_c_code): Likewise.
+       * plugin.c (try_init_one_plugin): Likewise.  Formatting fix.
+ 2019-10-24  Jan Hubicka  <hubicka@ucw.cz>
+       * symbols-summary.h (fast_function_summary<T *, V>::release,
+       fast_call_summary<T *, V>::release): Free m_vector.
+ 2019-10-24  Jan Hubicka  <hubicka@ucw.cz>
+       * cgraphunit.c (symbol_table::process_new_functions): Call
+       ipa_free_size_summary.
+       * ipa-cp.c (ipcp_cloning_candidate_p): Update.
+       (devirtualization_time_bonus): Update.
+       (ipcp_propagate_stage): Update.
+       * ipa-fnsummary.c (ipa_size_summaries): New.
+       (ipa_fn_summary_alloc): Alloc size summary.
+       (dump_ipa_call_summary): Update.
+       (ipa_dump_fn_summary): Update.
+       (analyze_function_body): Update.
+       (compute_fn_summary): Likewise.
+       (ipa_get_stack_frame_offset): New function.
+       (inline_update_callee_summaries): Do not update frame offsets.
+       (ipa_merge_fn_summary_after_inlining): Update frame offsets here;
+       remove call and function summary.
+       (ipa_update_overall_fn_summary): Update.
+       (inline_read_section): Update.
+       (ipa_fn_summary_write): Update.
+       (ipa_free_fn_summary): Do not remove summaries.
+       (ipa_free_size_summary): New.
+       (release summary pass): Also run at WPA.
+       * ipa-fnsummary.h (ipa_size_summary): Declare.
+       (ipa_fn_summary): Remove size, self_size, stack_frame_offset,
+       estimated_self_stack_size.
+       (ipa_size_summary_t): New type.
+       (ipa_size_summaries): Declare.
+       (ipa_free_size_summary): Declare.
+       (ipa_get_stack_frame_offset): Declare.
+       * ipa-icf.c (sem_function::merge): Update.
+       * ipa-inline-analysis.c (estimate_size_after_inlining): Update.
+       (estimate_growth): Update.
+       (growth_likely_positive): Update.
+       (clone_inlined_nodes): Update.
+       (inline_call): Update.
+       * ipa-inline.c (caller_growth_limits): Update.
+       (edge_badness): Update.
+       (recursive_inlining): Update.
+       (inline_small_functions): Update.
+       (inline_to_all_callers_1): Update.
+       * ipa-prop.h (ipa_edge_args_sum_t): Update comment.
+ 2019-10-24  Segher Boessenkool  <segher@kernel.crashing.org>
+       * config/rs6000/altivec.md (altivec_vavgu<VI_char>): Rename to...
+       (uavg<mode>3_ceil): ... This.
+       (altivec_vavgs<VI_char>): Rename to...
+       (avg<mode>3_ceil): ... This.
+       * config/rs6000/rs6000-builtin.def (VAVGUB, VAVGSB, VAVGUH, VAVGSH,
+       VAVGUW, VAVGSW): Adjust.
+ 2019-10-24  Nathan Sidwell  <nathan@acm.org>
+       * dumpfile.c (dump_begin): Reorder decls to use RAII.
+ 2019-10-24  Martin Liska  <mliska@suse.cz>
+       * symbol-summary.h (gt_pch_nx): Mark all functions
+       with gcc_unreachable as we do not expect to be called.
+ 2019-10-24  Richard Biener  <rguenther@suse.de>
+       * tree-vect-slp.c (vect_get_and_check_slp_defs): For reduction
+       chains try harder with operand swapping and instead of
+       putting a shifted chain into the reduction operands put
+       a repetition of the final reduction op there as if we'd
+       reassociate the expression.
+ 2019-10-24  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-reference.c (ipa_reference_optimization_summary_d): Rename
+       statics_not_read and statics_not_written to statics_read and
+       statics_written respectively.
+       (no_module_statics): New static var.
+       (ipa_reference_get_not_read_global): Rename to ...
+       (ipa_reference_get_read_global): ... this.
+       (ipa_reference_get_not_written_global): Rename to ...
+       (ipa_reference_get_written_global): ... this.
+       (dump_static_vars_set_to_file): Dump no_module_statics.
+       (copy_static_var_set): Add for propagation parameter.
+       (ipa_init): Initialize no_module_statics.
+       (ipa_ref_opt_summary_t::duplicate): Update.
+       (ipa_ref_opt_summary_t::remove): Update.
+       (propagate): Update.
+       (write_node_summary_p): Look correctly for bitmap differences.
+       (ipa_reference_write_optimization_summary): Update.
+       (ipa_reference_read_optimization_summary): Update.
+       * ipa-reference.h
+       (ipa_reference_get_not_read_global): Rename to ...
+       (ipa_reference_get_read_global): ... this.
+       (ipa_reference_get_not_written_global): Rename to ...
+       (ipa_reference_get_written_global): ... this.
+       * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Update.
+       (call_may_clobber_ref_p_1): Update.
+ 2019-10-24  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config/msp430/msp430.c (msp430_hard_regno_nregs_has_padding): Remove
+       and add comment.
+       (msp430_hard_regno_nregs_with_padding): Remove.
+ 2019-10-24  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config/msp430/constraints.md: Allow post_inc for "Ya" constraint.
+       * config/msp430/msp430.md (430x_shift_left): Use RLAM when the constant
+       shift amount is between 1 and 4.
+       (430x_arithmetic_shift_right): Use RRAM when the constant shift amount
+       is between 1 and 4.
+ 2019-10-24  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92205
+       * tree-vect-loop.c (vectorizable_reduction): Restrict
+       search for alternate vectype_in to lane-reducing patterns
+       we support.
+ 2019-10-24  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92203
+       * treee-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt):
+       Skip eliminating conversion stmts inserted by insertion.
+ 2019-10-24  Ilya Leoshkevich  <iii@linux.ibm.com>
+       * config/s390/s390.c (s390_get_thread_pointer): Use
+       gen_get_thread_pointer.
+       (s390_expand_split_stack_prologue): Likewise.
+       * config/s390/s390.md (UNSPEC_GET_TP): New UNSPEC.
+       (*get_tp_31): New 31-bit splitter for UNSPEC_GET_TP.
+       (*get_tp_64): New 64-bit splitter for UNSPEC_GET_TP.
+       (get_thread_pointer<mode>): Use UNSPEC_GET_TP, use
+       parameterized name.
+ 2019-10-24  Richard Biener  <rguenther@suse.de>
+       * tree-vect-slp.c (vect_analyze_slp): When reduction group
+       SLP discovery fails try to handle the reduction as part
+       of SLP reduction discovery.
+ 2019-10-23  Michael Meissner  <meissner@linux.ibm.com>
+       * config/rs6000/rs6000-protos.h (rs6000_adjust_insn_length): New
+       declaration.
+       * config/rs6000/rs6000.c (rs6000_insn_cost): Use num_insns insn
+       attribute if it exists, rather than the insn size.  If we use the
+       insn size, adjust the size to remove the extra size that prefixed
+       instructions take.
+       (rs6000_adjust_insn_length): New function.
+       * config/rs6000/rs6000.h (ADJUST_INSN_LENGTH): New target hook to
+       update the instruction sized if prefixed instructions are used.
+       * config/rs6000/rs6000.md (prefixed_length attribute): Delete.
+       (non_prefixed_length attribute): Delete.
+       (num_insns attribute): New insn attribute to return the number of
+       instructions.
+       (max_prefixed_insns attribute): New insn attribute to return the
+       maximum number of prefixed instructions in an insn.
+       (length attribute): Do not adjust for prefix instructions here,
+       punt to ADJUST_INSN_LENGTH.
+       (mov<mode>_64bit): Set max_prefixed_insns and num_insns.
+       (movtd_64bit_nodm): Set max_prefixed_insns and num_insns.
+       (mov<mode>_ppc64): Set max_prefixed_insns and num_insns.
+       * config/rs6000/vsx.md: (vsx_mov<mode>_64bit): Set
+       max_prefixed_insns and num_insns.
+       * config/rs6000/rs6000.md (mov<mode>_64bit_dm): Reformat.
+       (movtd_64bit_nodm): Reformat.
+       (mov<mode>_32bit): Reformat.
+       (mov<mode>_softfloat): Reformat.
+       (FMOVE128_GPR splitter): Reformat.
+       (DIFD splitter): Reformat.
+       (TI2 splitter): Reformat.
+       * config/rs6000/predicates.md (lwa_operand): If the bottom two
+       bits of the offset for the memory address are non-zero, use PLWA
+       if prefixed instructions are available.
+ 2019-10-23  Jan Hubicka  <hubicka@ucw.cz>
+       * lto-streamer-out.c (cmp_symbol_files): Watch for overflow.
+ 2019-10-23  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-reference.c (varpool_removal_hook, ipa_reference_c_finalize): Fix
+       previous patch.
+ 2019-10-23  Jan Hubicka  <hubicka@ucw.cz>
+       * lto-streamer-out.c (output_constructor): Push CTORS_OUT timevar.
+       (cmp_symbol_files): New.
+       (lto_output): Copy sections in file order.
+       * lto-streamer.h (lto_file_decl_data): Add field order.
+ 2019-10-23  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-reference.h (ipa_reference_var_uid): Move offline.
+       * ipa-reference.c (reference_vars_map_t): new type.
+       (ipa_reference_vars_map, ipa_reference_vars_uids): New static vars.
+       (ipa_reference_var_uid): Implement.
+       (varpool_node_hooks): New static var.
+       (varpool_removal_hook): New function.
+       (is_improper): Do not check bitmap for id==-1
+       (get_static_name): Update.
+       (ipa_init): Initialize new datastructures.
+       (analyze_function): Do not recompute ids.
+       (propagate): Free reference_vars_to_consider.
+       (stream_out_bitmap): Update.
+       (ipa_reference_read_optimization_summary): Update.
+ 2019-10-23  qing zhao  <qing.zhao@oracle.com>
+       PR gcov-profile/91971
+       * coverage.c (coverage_init): Mangle the full path of filename when
+       filename is a absolute path.
+ 2019-10-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config/msp430/msp430-protos.h (msp430_has_hwmult): New.
+       * config/msp430/msp430.c (msp430_no_hwmult): Remove.
+       (msp430_has_hwmult): New.
+       (msp430_output_labelref):
+       s/msp430_hwmult_type != MSP430_HWMULT_NONE/msp430_has_hwmult ()/
+       * config/msp430/msp430.md (mulhisi3): Likewise.
+       (umulhisi3): Likewise.
+       (mulsidi3): Likewise.
+       (umulsidi3): Likewise.
  
-       PR tree-optimization/85989
-       * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
-       variable.
-       (backprop::intersect_uses): Check it when deciding whether this
-       is a backedge reference.
-       (backprop::process_block): Add each phi to m_visited_phis
-       after visiting it, then clear it at the end.
+ 2019-10-23  Jan Hubicka  <hubicka@ucw.cz>
  
- 2018-06-01  Richard Biener  <rguenther@suse.de>
+       PR ipa/92074
+       * params.def (inline-heuristics-hint-percent): Set to 600.
  
-       * tree-vectorizer.h (vect_dr_stmt): New function.
-       (vect_get_load_cost): Adjust.
-       (vect_get_store_cost): Likewise.
-       * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
-       Use vect_dr_stmt instead of DR_SMTT.
-       (vect_record_base_alignments): Likewise.
-       (vect_calculate_target_alignment): Likewise.
-       (vect_compute_data_ref_alignment): Likewise and make static.
-       (vect_update_misalignment_for_peel): Likewise.
-       (vect_verify_datarefs_alignment): Likewise.
-       (vector_alignment_reachable_p): Likewise.
-       (vect_get_data_access_cost): Likewise.  Pass down
-       vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
-       (vect_get_peeling_costs_all_drs): Likewise.
-       (vect_peeling_hash_get_lowest_cost): Likewise.
-       (vect_enhance_data_refs_alignment): Likewise.
-       (vect_find_same_alignment_drs): Likewise.
-       (vect_analyze_data_refs_alignment): Likewise.
-       (vect_analyze_group_access_1): Likewise.
-       (vect_analyze_group_access): Likewise.
-       (vect_analyze_data_ref_access): Likewise.
-       (vect_analyze_data_ref_accesses): Likewise.
-       (vect_vfa_segment_size): Likewise.
-       (vect_small_gap_p): Likewise.
-       (vectorizable_with_step_bound_p): Likewise.
-       (vect_prune_runtime_alias_test_list): Likewise.
-       (vect_analyze_data_refs): Likewise.
-       (vect_supportable_dr_alignment): Likewise.
-       * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
-       (vect_gen_prolog_loop_niters): Likewise.
-       * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
-       * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
-       modify DR_STMT.
+ 2019-10-23  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/65930
+       * tree-vect-loop.c (check_reduction_path): Allow conversions
+       that only change the sign.
+       (vectorizable_reduction): Relax latch def stmts we handle further.
+ 2019-10-23  Jakub Jelinek  <jakub@redhat.com>
+       PR debug/90231
+       * tree-ssa-loop-ivopts.c (get_debug_computation_at): New function.
+       (remove_unused_ivs): Use it instead of get_computation_at.  When
+       choosing best candidate, only consider candidates where
+       get_debug_computation_at actually returns non-NULL.
+ 2019-10-23  Eric Botcazou  <ebotcazou@adacore.com>
+       PR tree-optimization/92131
+       * tree-vrp.c (extract_range_from_plus_minus_expr): If the resulting
+       range would be symbolic, drop to varying for any explicit overflow
+       in the constant part or if neither range is a singleton.
+ 2019-10-23  Martin Liska  <mliska@suse.cz>
+       PR middle-end/81669
+       * fibonacci_heap.h (fibonacci_node::fibonacci_node):
+       Initialize m_data.
+ 2019-10-23  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use
+       int_mode_for_mode rather than mode_for_int_vector for scalars.
+ 2019-10-23  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92179
+       * tree-vect-stmts.c (vectorizable_shift): For shift args
+       that are all the same remove type restriction in the SLP case.
+       Adjust SLP code to handle converting of the shift arg to
+       only apply in case the modes are different.
+ 2019-10-23  Martin Liska  <mliska@suse.cz>
+       PR ipa/91969
+       * ipa-inline.c (recursive_inlining): Do not print
+       when curr->count is not initialized.
+ 2019-10-23  Richard Biener  <rguenther@suse.de>
+       * tree-vect-slp.c (vect_build_slp_tree_2): Do not build
+       op from scalars in case there's a constant operand in its
+       definition.
+ 2019-10-23  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Guard
+       against out of range max skip or log values.
+ 2019-10-22  Giuliano Belinassi  <giuliano.belinassi@usp.br>
+       * cgraph.c (dump_graphviz): Change name to dump_name
+ 2019-10-22  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (rsbsi_carryin_reg): New pattern.
+       * config/arm/arm.c (arm_rtx_costs_internal, case MINUS): Handle
+       subtraction from a carry operation.
+ 2019-10-22  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/predicates.md (arm_borrow_operation): Handle CC_ADCmode.
+ 2019-10-22  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92173
+       * tree-vect-loop.c (vectorizable_reduction): If
+       vect_transform_reduction cannot handle code-generation try without
+       the single-def-use-cycle optimization.  Pass optab_vector to
+       optab_for_tree_code to get vector shifts as that's what we'd
+       generate.
+ 2019-10-22  Michael Matz  <matz@suse.de>
+       PR middle-end/90796
+       * gimple-loop-jam.c (any_access_function_variant_p): New function.
+       (adjust_unroll_factor): Use it to constrain safety, new parameter.
+       (tree_loop_unroll_and_jam): Adjust call and profitable unroll factor.
+ 2019-10-22  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92173
+       * tree-vect-loop.c (vectorizable_reduction): If
+       vect_transform_reduction cannot handle code-generation try without
+       the single-def-use-cycle optimization.  Pass optab_vector to
+       optab_for_tree_code to get vector shifts as that's what we'd
+       generate.
+ 2019-10-22  Martin Liska  <mliska@suse.cz>
+       * diagnostic-format-json.cc (json_from_expanded_location):
+       Use json::integer_number.
+       * gcov.c (output_intermediate_json_line): Use new
+       json::integer_number.
+       (output_json_intermediate_file): Likewise.
+       * json.cc (number::print): Move to ...
+       (float_number::print): ... this.
+       (integer_number::print): New.
+       (test_writing_numbers): Move to ...
+       (test_writing_float_numbers): ... this.
+       (test_writing_integer_numbers): New.
+       (json_cc_tests): Register test_writing_integer_numbers.
+       * json.h (class value): Add forward declaration
+       for float_number and integer_number.
+       (enum kind): Add JSON_INTEGER and JSON_FLOAT.
+       (class number): Move to ...
+       (class float_number): ... this.
+       (class integer_number): New.
+       * optinfo-emit-json.cc (optrecord_json_writer::impl_location_to_json):
+       Use json::integer_number.
+       (optrecord_json_writer::location_to_json): Likewise.
+       (optrecord_json_writer::profile_count_to_json): Likewise.
+       (optrecord_json_writer::pass_to_json): Likewise.
+ 2019-10-22  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-slp.c (vect_slp_bb_region): Check whether
+       autodetected_vector_size rather than vector_size is zero.
+       * tree-vect-loop.c (vect_analyze_loop): Likewise.
+       Set autodetected_vector_size immediately after calling
+       vect_analyze_loop_2.  Check for a fatal error before advancing
+       next_size.
+ 2019-10-21  Jason Merrill  <jason@redhat.com>
+       * lock-and-run.sh: Check for process existence rather than timeout.
+ 2019-10-21  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * expr.c (expand_expr_real_2): Don't widen constant op1 when expanding
+       widening multiplication.
+ 2019-10-21  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/iterators.md (t2_binop0): Fix typo in comment.
+       * config/arm/arm.md (addsi3_carryin_shift): Simplify selection of the
+       type attribute.
+       (subsi3_carryin_shift): Separate into register and constant controlled
+       alternatives.  Use shift_amount_operand for operand 4.  Set shift
+       attribute and simplify type attribute.
+       (subsi3_carryin_shift_alt): Likewise.
+       (rsbsi3_carryin_shift): Likewise.
+       (rsbsi3_carryin_shift_alt): Likewise.
+       (andsi_not_shiftsi_si): Enable for TARGET_32BIT.  Separate constant
+       and register controlled shifts into distinct alternatives.
+       (andsi_not_shiftsi_si_scc_no_reuse): Likewise.
+       (andsi_not_shiftsi_si_scc): Likewise.
+       (arm_cmpsi_negshiftsi_si): Likewise.
+       (not_shiftsi): Remove redundant M constraint from alternative 1.
+       (not_shiftsi_compare0): Likewise.
+       (arm_cmpsi_insn): Remove redundant alternative 2.
+       (cmpsi_shift_swp): Likewise.
+       (sub_shiftsi): Likewise.
+       (sub_shiftsi_compare0_scratch): Likewise.
+       * config/arm/thumb2.md (thumb_andsi_not_shiftsi_si): Delete pattern.
+       (thumb2_cmpsi_neg_shiftsi): Likewise.
+ 2019-10-21  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92162
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Lookup
+       STMT_VINFO_REDUC_IDX in reduc_info.
+       * tree-vect-stmts.c (vectorizable_condition): Likewise.
+ 2019-10-21  Richard Biener  <rguenther@suse.de>
+       * tree-vectorizer.h (_slp_tree::ops): New member.
+       (SLP_TREE_SCALAR_OPS): New.
+       (vect_get_slp_defs): Adjust prototype.
+       * tree-vect-slp.c (vect_free_slp_tree): Release
+       SLP_TREE_SCALAR_OPS.
+       (vect_create_new_slp_node): Initialize it.  New overload for
+       initializing by an operands array.
+       (_slp_oprnd_info::ops): New member.
+       (vect_create_oprnd_info): Initialize it.
+       (vect_free_oprnd_info): Release it.
+       (vect_get_and_check_slp_defs): Populate the operands array.
+       Do not swap operands in the IL when not necessary.
+       (vect_build_slp_tree_2): Build SLP nodes for invariant operands.
+       Record SLP_TREE_SCALAR_OPS for all invariant nodes.  Also
+       swap operands in the operands array.  Do not swap operands in
+       the IL.
+       (vect_slp_rearrange_stmts): Re-arrange SLP_TREE_SCALAR_OPS as well.
+       (vect_gather_slp_loads): Fix.
+       (vect_detect_hybrid_slp_stmts): Likewise.
+       (vect_slp_analyze_node_operations_1): Search for a internal
+       def child for computing reduction SLP_TREE_NUMBER_OF_VEC_STMTS.
+       (vect_slp_analyze_node_operations): Skip ops-only stmts for
+       the def-type push/pop dance.
+       (vect_get_constant_vectors): Compute number_of_vectors here.
+       Use SLP_TREE_SCALAR_OPS and simplify greatly.
+       (vect_get_slp_vect_defs): Use gimple_get_lhs also for PHIs.
+       (vect_get_slp_defs): Simplify greatly.
+       * tree-vect-loop.c (vectorize_fold_left_reduction): Simplify.
+       (vect_transform_reduction): Likewise.
+       * tree-vect-stmts.c (vect_get_vec_defs): Simplify.
+       (vectorizable_call): Likewise.
+       (vectorizable_operation): Likewise.
+       (vectorizable_load): Likewise.
+       (vectorizable_condition): Likewise.
+       (vectorizable_comparison): Likewise.
+ 2019-10-21  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92161
+       * tree-vect-loop.c (vect_analyze_loop_2): Reset stmts def-type
+       for reductions.
+ 2019-10-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+       * config/aarch64/aarch64.md (UNSPEC_RNDR, UNSPEC_RNDRRS): Define.
+       (aarch64_rndr): New define_insn.
+       (aarch64_rndrrs): Likewise.
+       * config/aarch64/aarch64.h (AARCH64_ISA_RNG): Define.
+       (TARGET_RNG): Likewise.
+       * config/aarch64/aarch64.c (aarch64_expand_builtin): Use IGNORE
+       argument.
+       * config/aarch64/aarch64-protos.h (aarch64_general_expand_builtin):
+       Add fourth argument in prototype.
+       * config/aarch64/aarch64-builtins.c (enum aarch64_builtins):
+       Add AARCH64_BUILTIN_RNG_RNDR, AARCH64_BUILTIN_RNG_RNDRRS.
+       (aarch64_init_rng_builtins): Define.
+       (aarch64_general_init_builtins): Call aarch64_init_rng_builtins.
+       (aarch64_expand_rng_builtin): Define.
+       (aarch64_general_expand_builtin): Use IGNORE argument, handle
+       RNG builtins.
+       * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
+       __ARM_FEATURE_RNG when TARGET_RNG.
+       * config/aarch64/arm_acle.h (__rndr, __rndrrs): Define.
+ 2019-10-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       * tree-vect-stmts (ensure_base_align): Only change alignment if new
+       alignment is more restrictive.
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vectorizer.h (vec_info::vector_size): New member variable.
+       (vect_update_max_nunits): Update comment.
+       (current_vector_size): Delete.
+       * tree-vect-stmts.c (current_vector_size): Likewise.
+       (get_vectype_for_scalar_type): Use vec_info::vector_size instead
+       of current_vector_size.
+       (get_mask_type_for_scalar_type): Likewise.
+       * tree-vectorizer.c (try_vectorize_loop_1): Likewise.
+       * tree-vect-loop.c (vect_update_vf_for_slp): Likewise.
+       (vect_analyze_loop, vect_halve_mask_nunits): Likewise.
+       (vect_double_mask_nunits, vect_transform_loop): Likewise.
+       * tree-vect-slp.c (can_duplicate_and_interleave_p): Likewise.
+       (vect_make_slp_decision, vect_slp_bb_region): Likewise.
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vectorizer.h (vect_double_mask_nunits): Take a vec_info.
+       * tree-vect-loop.c (vect_double_mask_nunits): Likewise.
+       * tree-vect-stmts.c (supportable_narrowing_operation):  Update call
+       accordingly.
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vectorizer.h (vect_halve_mask_nunits): Take a vec_info.
+       * tree-vect-loop.c (vect_halve_mask_nunits): Likewise.
+       * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks): Update
+       call accordingly.
+       * tree-vect-stmts.c (supportable_widening_operation): Likewise.
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks): Take
+       a loop_vec_info.
+       (vect_set_loop_condition_masked): Update call accordingly.
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vectorizer.h (supportable_narrowing_operation): Take a vec_info.
+       * tree-vect-stmts.c (supportable_narrowing_operation): Likewise.
+       (simple_integer_narrowing): Update call accordingly.
+       (vectorizable_conversion): Likewise.
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-stmts.c (simple_integer_narrowing): Take a vec_info.
+       (vectorizable_call): Update call accordingly.
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vectorizer.h (can_duplicate_and_interleave_p): Take a vec_info.
+       * tree-vect-slp.c (can_duplicate_and_interleave_p): Likewise.
+       (duplicate_and_interleave): Update call accordingly.
+       * tree-vect-loop.c (vectorizable_reduction): Likewise.
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vectorizer.h (duplicate_and_interleave): Take a vec_info.
+       * tree-vect-slp.c (duplicate_and_interleave): Likewise.
+       (vect_get_constant_vectors): Update call accordingly.
+       * tree-vect-loop.c (get_initial_defs_for_reduction): Likewise.
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vectorizer.h (get_vectype_for_scalar_type): Take a vec_info.
+       * tree-vect-stmts.c (get_vectype_for_scalar_type): Likewise.
+       (vect_prologue_cost_for_slp_op): Update call accordingly.
+       (vect_get_vec_def_for_operand, vect_get_gather_scatter_ops)
+       (vect_get_strided_load_store_ops, vectorizable_simd_clone_call)
+       (vect_supportable_shift, vect_is_simple_cond, vectorizable_comparison)
+       (get_mask_type_for_scalar_type): Likewise.
+       (vect_get_vector_types_for_stmt): Likewise.
+       * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
+       * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
+       (get_initial_def_for_reduction, build_vect_cond_expr): Likewise.
+       * tree-vect-patterns.c (vect_supportable_direct_optab_p): Likewise.
+       (vect_split_statement, vect_convert_input): Likewise.
+       (vect_recog_widen_op_pattern, vect_recog_pow_pattern): Likewise.
+       (vect_recog_over_widening_pattern, vect_recog_mulhs_pattern): Likewise.
+       (vect_recog_average_pattern, vect_recog_cast_forwprop_pattern)
+       (vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern)
+       (vect_synth_mult_by_constant, vect_recog_mult_pattern): Likewise.
+       (vect_recog_divmod_pattern, vect_recog_mixed_size_cond_pattern)
+       (check_bool_pattern, adjust_bool_pattern_cast, adjust_bool_pattern)
+       (search_type_for_mask_1, vect_recog_bool_pattern): Likewise.
        (vect_recog_mask_conversion_pattern): Likewise.
-       (vect_try_gather_scatter_pattern): Likewise.
-       * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
-       to vect_get_store_cost.
-       (vect_get_store_cost): Get stmt_info instead of DR.
-       (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
-       (vect_get_load_cost): Get stmt_info instead of DR.
- 2018-06-01  Richard Biener  <rguenther@suse.de>
-       PR middle-end/86017
-       * gimple-fold.c (var_decl_component_p): Also allow offsetted
-       vars wrapped in MEM_REFs.
- 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
-       * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
-       Fix subreg tests so that we only return a choice between
-       GENERAL_REGS and FP_REGS if the original classes included both.
- 2018-06-01  Richard Biener  <rguenther@suse.de>
-       PR ipa/85960
-       * tree-ssa-structalias.c (get_function_part_constraint):
-       Handle NULL fi->decl.
-       (find_func_aliases_for_call): Properly handle indirect
-       fi from direct call.
-       (find_func_clobbers): Likewise.
-       (ipa_pta_execute): Likewise.
-       (create_variable_info_for): For functions that are ifunc_resolver
-       resolve to a varinfo that contains the result of the resolver call.
-       (associate_varinfo_to_alias): Do not treat ifunc resolvers as
-       aliases.
- 2018-05-31  Michael Collison  <michael.collison@arm.com>
-       * config/aarch64/aarch64.md:
-       (*fix_to_zero_extenddfdi2): New pattern.
-       * gcc.target/aarch64/fix_extend1.c: New testcase.
- 2018-05-31  Qing Zhao <qing.zhao@oracle.com>
-       PR middle-end/78809
-       PR middle-end/83026
-       * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
-       and BUILT_IN_STRNCMP_EQ.
-       * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
-       BUILT_IN_STRNCMP_EQ.
-       * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
-       handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
-       (gimple_fold_builtin): Likewise.
-       * tree-ssa-strlen.c (compute_string_length): New function.
-       (determine_min_obsize): New function.
-       (handle_builtin_string_cmp): New function to handle calls to
-       string compare functions.
-       (strlen_optimize_stmt): Add handling to builtin string compare
-       calls.
-       * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
-       Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
-       * tree.c (build_common_builtin_nodes): Add new defines of
-       BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
+       (vect_add_conversion_to_pattern): Likewise.
+       (vect_recog_gather_scatter_pattern): Likewise.
+       * tree-vect-slp.c (vect_build_slp_tree_2): Likewise.
+       (vect_analyze_slp_instance, vect_get_constant_vectors): Likewise.
  
- 2018-05-31  Jakub Jelinek  <jakub@redhat.com>
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
  
-       PR target/85984
-       * bb-reorder.c (pass_partition_blocks::gate): Return false for
-       functions with naked attribute.
+       * tree-vectorizer.h (get_mask_type_for_scalar_type): Take a vec_info.
+       * tree-vect-stmts.c (get_mask_type_for_scalar_type): Likewise.
+       (vect_check_load_store_mask): Update call accordingly.
+       (vect_get_mask_type_for_stmt): Likewise.
+       * tree-vect-patterns.c (check_bool_pattern): Likewise.
+       (search_type_for_mask_1, vect_recog_mask_conversion_pattern): Likewise.
+       (vect_convert_mask_for_vectype): Likewise.
  
- 2018-05-31  Uros Bizjak  <ubizjak@gmail.com>
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
  
-       * config/i386/sse.md (avx_vec_concat<mode>):
-       Substitute concat_tg_mode mode attribute with xtg_mode.
-       (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
-       (concat_tg_mode): Remove mode attribute.
+       * tree-vect-patterns.c (vect_supportable_direct_optab_p): Take
+       a vec_info.
+       (vect_recog_dot_prod_pattern): Update call accordingly.
+       (vect_recog_sad_pattern, vect_recog_pow_pattern): Likewise.
+       (vect_recog_widen_sum_pattern): Likewise.
  
- 2018-05-31  Martin Sebor  <msebor@redhat.com>
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
  
-       PR c/82063
-       * calls.c (alloc_max_size): Correct a logic error/typo.
-       Treat excessive arguments as infinite.  Warn for invalid arguments.
-       * doc/invoke.texi (-Walloc-size-larger-than): Update.
+       * tree-vectorizer.h (vect_supportable_shift): Take a vec_info.
+       * tree-vect-stmts.c (vect_supportable_shift): Likewise.
+       * tree-vect-patterns.c (vect_synth_mult_by_constant): Update call
+       accordingly.
  
- 2018-05-31  H.J. Lu  <hongjiu.lu@intel.com>
+ 2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vectorizer.c (get_vec_alignment_for_array_type): Use
+       get_vectype_for_scalar_type_and_size instead of
+       get_vectype_for_scalar_type.
+ 2019-10-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+       * common.opt (-fcommon): Fix description.
+ 2019-10-20  Jakub Jelinek  <jakub@redhat.com>
+       * config/i386/i386-protos.h (ix86_pre_reload_split): Declare.
+       * config/i386/i386.c (ix86_pre_reload_split): New function.
+       * config/i386/i386.md (*fix_trunc<mode>_i387_1, *add<mode>3_eq,
+       *add<mode>3_ne, *add<mode>3_eq_0, *add<mode>3_ne_0, *add<mode>3_eq,
+       *add<mode>3_ne, *add<mode>3_eq_1, *add<mode>3_eq_0, *add<mode>3_ne_0,
+       *anddi3_doubleword, *andndi3_doubleword, *<code>di3_doubleword,
+       *one_cmpldi2_doubleword, *ashl<dwi>3_doubleword_mask,
+       *ashl<dwi>3_doubleword_mask_1, *ashl<mode>3_mask, *ashl<mode>3_mask_1,
+       *<shift_insn><mode>3_mask, *<shift_insn><mode>3_mask_1,
+       *<shift_insn><dwi>3_doubleword_mask,
+       *<shift_insn><dwi>3_doubleword_mask_1, *<rotate_insn><mode>3_mask,
+       *<rotate_insn><mode>3_mask_1, *<btsc><mode>_mask, *<btsc><mode>_mask_1,
+       *btr<mode>_mask, *btr<mode>_mask_1, *jcc_bt<mode>, *jcc_bt<mode>_1,
+       *jcc_bt<mode>_mask, *popcounthi2_1, frndintxf2_<rounding>,
+       *fist<mode>2_<rounding>_1, *<code><mode>3_1, *<code>di3_doubleword):
+       Use ix86_pre_reload_split instead of can_create_pseudo_p in condition.
+       * config/i386/sse.md (*sse4_1_<code>v8qiv8hi2<mask_name>_2,
+       *avx2_<code>v8qiv8si2<mask_name>_2,
+       *sse4_1_<code>v4qiv4si2<mask_name>_2,
+       *sse4_1_<code>v4hiv4si2<mask_name>_2,
+       *avx512f_<code>v8qiv8di2<mask_name>_2,
+       *avx2_<code>v4qiv4di2<mask_name>_2, *avx2_<code>v4hiv4di2<mask_name>_2,
+       *sse4_1_<code>v2hiv2di2<mask_name>_2,
+       *sse4_1_<code>v2siv2di2<mask_name>_2, sse4_2_pcmpestr,
+       sse4_2_pcmpistr): Likewise.
+ 2019-10-20  Gerald Pfeifer  <gerald@pfeifer.com>
+       * doc/install.texi (Configuration, --enable-objc-gc): hboehm.info
+       now defaults to https.
+ 2019-10-20  Jan Hubicka  <hubicka@ucw.cz>
+       * tree-ssa-alias.c (nonoverlapping_refs_since_match_p): Do not
+       skip non-zero array accesses.
+ 2019-10-20  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-slp.c (vect_slp_analyze_bb_1): Take a bb_vec_info
+       and return a boolean success value.  Move the allocation and
+       initialization of the bb_vec_info to...
+       (vect_slp_bb_region): ...here.  Update call accordingly.
+       (vect_slp_bb): Apply PARAM_SLP_MAX_INSNS_IN_BB here rather
+       than in vect_slp_analyze_bb_1.
+ 2019-10-20  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-vect-slp.c (vect_slp_analyze_bb_1): Call save_datarefs
+       when processing the given datarefs for the first time and
+       check_datarefs subsequently.
+       (vect_slp_bb_region): New function, split out of...
+       (vect_slp_bb): ...here.  Don't recompute the region bounds and
+       dataref sets when retrying with a different vector size.
+ 2019-10-19  Jakub Jelinek  <jakub@redhat.com>
+           UroÅ¡ Bizjak  <ubizjak@gmail.com>
+       PR target/92140
+       * config/i386/predicates.md (int_nonimmediate_operand): New special
+       predicate.
+       * config/i386/i386.md (*add<mode>3_eq, *add<mode>3_ne,
+       *add<mode>3_eq_0, *add<mode>3_ne_0, *sub<mode>3_eq, *sub<mode>3_ne,
+       *sub<mode>3_eq_1, *sub<mode>3_eq_0, *sub<mode>3_ne_0): New
+       define_insn_and_split patterns.
  
-       PR target/85829
-       * config/i386/x86-tune.def: Re-enable partial_reg_dependency
-       and movx for Haswell.
+ 2019-10-19  Iain Sandoe  <iain@sandoe.co.uk>
  
- 2018-05-31  Chung-Lin Tang  <cltang@codesourcery.com>
-           Cesar Philippidis  <cesar@codesourcery.com>
+       * config/rs6000/rs6000.md: Delete out--of-date comment about
+       special-casing integer loads.
  
-       PR middle-end/85879
-       * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
-       when emitting error on private/firstprivate reductions.
-       * omp-low.c (lower_omp_target): Avoid reference-type processing
-       on pointers for firstprivate clause.
+ 2019-10-19  JeanHeyd Meneide  <phdofthehouse@gmail.com>
  
- 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
+       * escaped_string.h (escaped_string): New header.
+       * tree.c (escaped_string): Remove escaped_string class.
  
-       * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
-       (st1x2): Likewise.
-       (st1x3): Likewise.
-       * config/aarch64/aarch64-simd.md
-       (aarch64_ld1x3<VALLDIF:mode>): New pattern.
-       (aarch64_ld1_x3_<mode>): Likewise
-       (aarch64_st1x2<VALLDIF:mode>): Likewise
-       (aarch64_st1_x2_<mode>): Likewise
-       (aarch64_st1x3<VALLDIF:mode>): Likewise
-       (aarch64_st1_x3_<mode>): Likewise
-       * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
-       (vld1_s8_x3): Likewise.
-       (vld1_u16_x3): Likewise.
-       (vld1_s16_x3): Likewise.
-       (vld1_u32_x3): Likewise.
-       (vld1_s32_x3): Likewise.
-       (vld1_u64_x3): Likewise.
-       (vld1_s64_x3): Likewise.
-       (vld1_f16_x3): Likewise.
-       (vld1_f32_x3): Likewise.
-       (vld1_f64_x3): Likewise.
-       (vld1_p8_x3): Likewise.
-       (vld1_p16_x3): Likewise.
-       (vld1_p64_x3): Likewise.
-       (vld1q_u8_x3): Likewise.
-       (vld1q_s8_x3): Likewise.
-       (vld1q_u16_x3): Likewise.
-       (vld1q_s16_x3): Likewise.
-       (vld1q_u32_x3): Likewise.
-       (vld1q_s32_x3): Likewise.
-       (vld1q_u64_x3): Likewise.
-       (vld1q_s64_x3): Likewise.
-       (vld1q_f16_x3): Likewise.
-       (vld1q_f32_x3): Likewise.
-       (vld1q_f64_x3): Likewise.
-       (vld1q_p8_x3): Likewise.
-       (vld1q_p16_x3): Likewise.
-       (vld1q_p64_x3): Likewise.
-       (vst1_s64_x2): Likewise.
-       (vst1_u64_x2): Likewise.
-       (vst1_f64_x2): Likewise.
-       (vst1_s8_x2): Likewise.
-       (vst1_p8_x2): Likewise.
-       (vst1_s16_x2): Likewise.
-       (vst1_p16_x2): Likewise.
+ 2019-10-18  Martin Sebor  <msebor@redhat.com>
+       PR tree-optimization/92157
+       * tree-ssa-strlen.c (handle_builtin_string_cmp): Be prepared for
+       compute_string_length to return a negative result.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (negv<SIDI:mode>3): New expansion rule.
+       (negvsi3, negvdi3): Delete.
+       (negdi2_compare): Delete.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (subvdi4): Decompose calculation into 32-bit
+       operations.
+       (subdi3_compare1): Delete pattern.
+       (subvsi3_borrow): New insn pattern.
+       (subvsi3_borrow_imm): Likewise.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (subv<mode>4): Delete.
+       (subvdi4): New expander pattern.
+       (subvsi4): Likewise.  Handle some immediate values.
+       (subvsi3_intmin): New insn pattern.
+       (subvsi3): Likewise.
+       (subvsi3_imm1): Likewise.
+       * config/arm/arm.c (select_cc_mode): Also allow minus for CC_V
+       idioms.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (usubvdi4): Allow registers or integers for
+       incoming operands.  Early split the calculation into SImode
+       operations.
+       (usubvsi3_borrow): New insn pattern.
+       (usubvsi3_borrow_imm): Likewise.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (usubv<mode>4): Delete expansion.
+       (usubvsi4): New pattern.  Allow some immediate values for inputs.
+       (usubvdi4): New pattern.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.c (arm_select_cc_mode): Allow either the first
+       or second operand of the PLUS inside a DImode equality test to be
+       sign-extend when selecting CC_Vmode.
+       * config/arm/arm.md (addvdi4): Early-split the operation into SImode
+       instructions.
+       (addsi3_cin_vout_reg, addsi3_cin_vout_imm, addsi3_cin_vout_0): New
+       expand patterns.
+       (addsi3_cin_vout_reg_insn, addsi3_cin_vout_imm_insn): New patterns.
+       (addsi3_cin_vout_0): Likewise.
+       (adddi3_compareV): Delete.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (addsi3_compareV_reg_nosum): New insn.
+       (addsi3_compareV_imm_nosum): New insn.  Also add peephole2 patterns
+       to transform this back into the summation version when that leads
+       to smaller code.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (addv<mode>4): Delete.
+       (addvsi4): New pattern.  Handle immediate values that the architecture
+       supports.
+       (addvdi4): New pattern.
+       (addsi3_compareV): Rename to ...
+       (addsi3_compareV_reg): ... this.  Add constraints for thumb2 variants
+       and use COMPARE rather than NE.
+       (addsi3_compareV_imm): New pattern.
+       * config/arm/arm.c (arm_select_cc_mode): Return CC_Vmode for
+       a signed-overflow check.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm-modes.def (CC_ADC): New CC mode.
+       * config/arm/arm.c (arm_select_cc_mode): Detect selection of
+       CC_ADCmode.
+       (maybe_get_arm_condition_code): Handle CC_ADCmode.
+       * config/arm/arm.md (uaddvdi4): Early expansion of unsigned addition
+       with overflow.
+       (addsi3_cin_cout_reg, addsi3_cin_cout_imm, addsi3_cin_cout_0): New
+       expand patterns.
+       (addsi3_cin_cout_reg_insn, addsi3_cin_cout_0_insn): New insn patterns
+       (addsi3_cin_cout_imm_insn): Likewise.
+       (adddi3_compareC): Delete insn.
+       * config/arm/predicates.md (arm_carry_operation): Handle CC_ADCmode.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (adddi3): Call gen_addsi3_compare_op1.
+       * (uaddv<mode>4): Delete expansion pattern.
+       (uaddvsi4): New pattern.
+       (uaddvdi4): Likewise.
+       (addsi3_compareC): Delete pattern, change callers to use
+       addsi3_compare_op1.
+       (addsi3_compare_op1): No-longer anonymous.  Clean up constraints to
+       reduce the number of alternatives and re-work type attribute handling.
+       (addsi3_compare_op2): Clean up constraints to reduce the number of
+       alternatives and re-work type attribute handling.
+       (compare_addsi2_op0): Likewise.
+       (compare_addsi2_op1): Likewise.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm-modes.def (CC_NCV, CC_CZ): Delete CC modes.
+       * config/arm/arm.c (arm_select_cc_mode): Remove old selection code
+       for DImode operands.
+       (arm_gen_dicompare_reg): Remove unreachable expansion code.
+       (maybe_get_arm_condition_code): Remove support for CC_CZmode and
+       CC_NCVmode.
+       * config/arm/arm.md (arm_cmpdi_insn): Delete.
+       (arm_cmpdi_unsigned): Delete.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.c (arm_const_double_prefer_rsbs_rsc): New function.
+       (arm_canonicalize_comparison): For GT/LE/GTU/GEU, use the constant
+       unchanged only if that will be cheaper.
+       (arm_select_cc_mode): Recognize a swapped comparison that will
+       be regenerated using RSBS or RSCS.  Relax restriction on selecting
+       CC_RSBmode.
+       (arm_gen_dicompare_reg): Handle LE/GT/LEU/GEU comparisons against
+       a constant.
+       (arm_gen_compare_reg): Handle compare (CONST, X) when the mode
+       is CC_RSBmode.
+       (maybe_get_arm_condition_code): CC_RSBmode now returns the same codes
+       as CCmode.
+       * config/arm/arm.md (rsb_imm_compare_scratch): New pattern.
+       (rscsi3_<CC_EXTEND>out_scratch): New pattern.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm-modes.def (CC_NV, CC_B): New CC modes.
+       * config/arm/arm.c (arm_select_cc_mode): Recognize constructs that
+       need these modes.
+       (arm_gen_dicompare_reg): New code to early expand the sub-operations
+       of EQ, NE, LT, GE, LTU and GEU.
+       * config/arm/iterators.md (CC_EXTEND): New code attribute.
+       * config/arm/predicates.md (arm_adcimm_operand): New predicate..
+       * config/arm/arm.md (cmpsi3_carryin_<CC_EXTEND>out): New pattern.
+       (cmpsi3_imm_carryin_<CC_EXTEND>out): Likewise.
+       (cmpsi3_0_carryin_<CC_EXTEND>out): Likewise.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (cbranchdi4): Accept reg_or_int_operand for
+       operand 2.
+       (cstoredi4): Similarly, but for operand 3.
+       * config/arm/arm.c (arm_canoncialize_comparison): Allow
+       canonicalization of unsigned compares with a constant on Arm.
+       Prefer using const+1 and adjusting the comparison over swapping the
+       operands whenever the original constant was not valid.
+       (arm_gen_dicompare_reg): If Y is not a valid operand, force it to a
+       register here.
+       (arm_validize_comparison): Do not force invalid DImode operands to
+       registers here.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.c (arm_select_cc_mode): For DImode equality tests
+       return CC_Zmode if comparing against a constant where one word is
+       zero.
+       (arm_gen_compare_reg): Split DImode handling to ...
+       (arm_gen_dicompare_reg): ... here.  Handle equality comparisons
+       against simple constants.
+       * config/arm/arm.md (arm_cmpdi_zero): Delete pattern.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (subsi3_carryin_shift_alt): New pattern.
+       (rsbsi3_carryin_shift_alt): Likewise.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (negscc_borrow): New pattern.
+       (mov_negscc): Don't split if the insn would match negscc_borrow.
+       * config/arm/thumb2.md (thumb2_mov_negscc): Likewise.
+       (thumb2_mov_negscc_strict_it): Likewise.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.c (arm_insn_cost): New function.
+       (TARGET_INSN_COST): Override default definition.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.c (arm_rtx_costs_internal, case MINUS): Handle
+       borrow operations.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.c (strip_carry_operation): New function.
+       (arm_rtx_costs_internal, case PLUS): Handle addtion with carry-in
+       for SImode.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/predicates.md (arm_carry_operation): New special
+       predicate.
+       * config/arm/iterators.md (LTUGEU): Delete iterator.
+       (cnb): Delete code attribute.
+       (optab): Delete ltu and geu elements.
+       * config/arm/arm.md (addsi3_carryin): Renamed from
+       addsi3_carryin_<optab>.  Remove iterator and use arm_carry_operand.
+       (add0si3_carryin): Similarly, but from add0si3_carryin_<optab>.
+       (addsi3_carryin_alt2): Similarly, but from addsi3_carryin_alt2_<optab>.
+       (addsi3_carryin_clobercc): Similarly.
+       (addsi3_carryin_shift): Similarly.  Do not allow register shifts in
+       Thumb2 state.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (arm_subdi3): Delete insn.
+       (zextendsidi_negsi, negdi_extendsidi): Delete insn_and_split.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm-modes.def (CC_RSB): New CC mode.
+       * config/arm/predicates.md (arm_borrow_operation): Handle CC_RSBmode.
+       * config/arm/arm.c (arm_select_cc_mode): Detect when we should
+       return CC_RSBmode.
+       (maybe_get_arm_condition_code): Handle CC_RSBmode.
+       * config/arm/arm.md (subsi3_carryin): Make this pattern available to
+       expand.
+       (subdi3): Rewrite to early-expand the sub-operations.
+       (rsb_im_compare): New pattern.
+       (negdi2): Delete.
+       (negdi2_insn): Delete.
+       (arm_negsi2): Correct type attribute to alu_imm.
+       (negsi2_0compare): New insn pattern.
+       (negsi2_carryin): New insn pattern.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (addsi3_carryin_alt2): Use arm_not_operand for
+       operand 2.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (addsi3_carryin_shift_<optab>): Reorder operands
+       to match canonical form.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.md (zero_extend<mode>di2): Convert to define_expand.
+       (extend<mode>di2): Likewise.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm-protos.h (arm_decompose_di_binop): New prototype.
+       * config/arm/arm.c (arm_decompose_di_binop): New function.
+       * config/arm/arm.md (adddi3): Also accept any const_int for op2.
+       If not generating Thumb-1 code, decompose the operation into 32-bit
+       pieces.
+       * add0si_carryin_<optab>: New pattern.
+ 2019-10-18  Richard Earnshaw  <rearnsha@arm.com>
+       * arm.md (adddi3): Only accept register operands.
+       (arm_adddi3): Convert to simple insn with no split.  Do not accept
+       constants.
+       (adddi_sesidi_di): Delete patern.
+       (adddi_zesidi_di): Likewise.
+       (uaddv<mode>4): Use LTU as condition for branch.
+       (adddi3_compareV): Convert to simple insn with no split.
+       (addsi3_compareV_upper): Delete pattern.
+       (adddi3_compareC): Convert to simple insn with no split.  Correct
+       flags setting expression.
+       (addsi3_compareC_upper): Delete pattern.
+       (addsi3_compareC): Correct flags setting expression.
+       (subdi3_compare1): Convert to simple insn with no split.
+       (subsi3_carryin_compare): Delete pattern.
+       (arm_subdi3): Convert to simple insn with no split.
+       (subdi_zesidi): Delete pattern.
+       (subdi_di_sesidi): Delete pattern.
+       (subdi_zesidi_di): Delete pattern.
+       (subdi_sesidi_di): Delete pattern.
+       (subdi_zesidi_zesidi): Delete pattern.
+       (negvdi3): Use s_register_operand.
+       (negdi2_compare): Convert to simple insn with no split.
+       (negdi2_insn): Likewise.
+       (negsi2_carryin_compare): Delete pattern.
+       (negdi_zero_extendsidi): Delete pattern.
+       (arm_cmpdi_insn): Convert to simple insn with no split.
+       (negdi2): Don't call gen_negdi2_neon.
+       * config/arm/neon.md (adddi3_neon): Delete pattern.
+       (subdi3_neon): Delete pattern.
+       (negdi2_neon): Delete pattern.
+       (splits for negdi2_neon): Delete splits.
+ 2019-10-18  Jakub Jelinek  <jakub@redhat.com>
+       PR middle-end/92153
+       * ggc-page.c (release_pages): Read g->alloc_size before free rather
+       than after it.
+ 2019-10-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       * config/arm/t-multilib: Add rule to regenerate mutlilib header file
+       with any change to t-multilib, t-aprofile and t-rmprofile.  Also add
+       new multilib variants and new mappings.
+ 2019-10-18  Georg-Johann Lay  <avr@gjlay.de>
+       PR target/86040
+       * config/avr/avr.c (avr_out_lpm): Do not shortcut-return.
+ 2019-10-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+           Richard Sandiford  <richard.sandiford@arm.com>
+       PR target/86753
+       * tree-vectorizer.h (scalar_cond_masked_key): New struct,
+       and define hashmap traits for it.
+       (loop_vec_info::scalar_cond_masked_set): New member.
+       (vect_record_loop_mask): Adjust prototype.
+       * tree-vectorizer.c (scalar_cond_masked_key::get_cond_ops_from_tree):
+       Implement method.
+       * tree-vect-loop.c (vectorizable_reduction): Pass NULL as last arg to
+       vect_record_loop_mask.
+       (vectorizable_live_operation): Likewise.
+       (vect_record_loop_mask): New param scalar_mask. Add entry
+       cond, loop_mask to scalar_cond_masked_set if scalar_mask is non NULL.
+       * tree-vect-stmts.c (check_load_store_masking): New param scalar_mask.
+       Pass it as last arg to vect_record_loop_mask.
+       (vectorizable_call): Pass scalar_mask as last arg to
+       vect_record_loop_mask.
+       (vectorizable_store): Likewise.
+       (vectorizable_load): Likewise.
+       (vectorizable_condition): Check if another part of vectorized code
+       applies loop_mask to condition or to it's inverse, and if yes,
+       apply loop_mask to result of vector comparison.
+ 2019-10-17  John David Anglin  <danglin@gcc.gnu.org>
+       * config/pa/pa.c (pa_output_indirect_call): Fix typos in last change.
+ 2019-10-18  Jakub Jelinek  <jakub@redhat.com>
+       PR tree-optimization/92056
+       * tree-ssa-strlen.c (determine_min_objsize): Call init_object_sizes
+       before calling compute_builtin_object_size.
+ 2019-10-17  Iain Sandoe  <iain@sandoe.co.uk>
+       PR target/65342
+       * config/rs6000/darwin.md (movdi_low, movsi_low_st): Delete.
+       (movdi_low_st): Delete.
+       * config/rs6000/rs6000.c
+       (darwin_rs6000_legitimate_lo_sum_const_p): New.
+       (mem_operand_gpr): Validate Mach-O LO_SUM cases separately.
+       * config/rs6000/rs6000.md (movsi_low): Delete.
+ 2019-10-17  Jason Merrill  <jason@redhat.com>
+       * gimplify.h (get_initialized_tmp_var): Add default argument to
+       post_p.
+       * gimplify.c (gimplify_self_mod_expr, gimplify_omp_atomic): Remove
+       NULL post_p argument.
+       * targhooks (std_gimplify_va_arg_expr): Likewise.
+ 2019-10-17  Richard Biener  <rguenther@suse.de>
+       * tree-vectorizer.h (_stmt_vec_info::cond_reduc_code): Remove.
+       (STMT_VINFO_VEC_COND_REDUC_CODE): Likewise.
+       * tree-vectorizer.c (vec_info::new_stmt_vec_info): Do not
+       initialize STMT_VINFO_VEC_COND_REDUC_CODE.
+       * tree-vect-loop.c (vect_is_simple_reduction): Set
+       STMT_VINFO_REDUC_CODE.
+       (vectorizable_reduction): Remove dead and redundant code, use
+       STMT_VINFO_REDUC_CODE instead of STMT_VINFO_VEC_COND_REDUC_CODE.
+ 2019-10-17  Georg-Johann Lay  <avr@gjlay.de>
+       Fix breakage introduced by r276985.
+       * config/avr/avr.c (avr_option_override): Remove set of
+       PARAM_ALLOW_STORE_DATA_RACES.
+       * common/config/avr/avr-common.c (avr_option_optimization_table)
+       [OPT_LEVELS_ALL]: Turn on -fallow-store-data-races.
+ 2019-10-17  H.J. Lu  <hongjiu.lu@intel.com>
+       * config/i386/i386.h (processor_costs): Add clear_ratio.
+       (CLEAR_RATIO): Remove MIN and use ix86_cost->clear_ratio.
+       * config/i386/x86-tune-costs.h: Set clear_ratio to the minimum
+       of 6 and move_ratio in all cost models.
+ 2019-10-17  Richard Biener  <rguenther@suse.de>
+       * tree-vect-loop.c (check_reduction_path): Compute reduction
+       operation here.
+       (vect_is_simple_reduction): Remove special-case of single-stmt
+       reduction path detection.
+ 2019-10-17  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm-cpus.in (marvel-pj4): Add +fp to the architecture.
+ 2019-10-17  Yuliang Wang  <yuliang.wang@arm.com>
+       * config/aarch64/aarch64-sve2.md (aarch64_sve2_eor3<mode>)
+       (aarch64_sve2_nor<mode>, aarch64_sve2_nand<mode>)
+       (aarch64_sve2_bsl<mode>, aarch64_sve2_nbsl<mode>)
+       (aarch64_sve2_bsl1n<mode>, aarch64_sve2_bsl2n<mode>):
+       New combine patterns.
+       * config/aarch64/iterators.md (BSL_DUP): New int iterator for the
+       above.
+       (bsl_1st, bsl_2nd, bsl_dup, bsl_mov): Attributes for the above.
+ 2019-10-17  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.c (value_range_base::dump): Display +INF for both
+       pointers and integers when appropriate.
+ 2019-10-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       * tree-vect-loop.c (vect_analyze_loop_2): Use same condition to decide
+       when to use versioning threshold.
+ 2019-10-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       * tree-vect-loop.c (determine_peel_for_niter): New function contained
+       outlined code from ...
+       (vect_analyze_loop_2): ... here.
+ 2019-10-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+       * tree-vect-loop.c (vect_transform_loop): Move code from here...
+       * tree-vect-loop-manip.c (vect_loop_versioning): ... to here.
+       * tree-vectorizer.h (vect_loop_versioning): Remove unused parameters.
+ 2019-10-17  Richard Biener  <rguenther@suse.de>
+       * tree-vect-loop.c (needs_fold_left_reduction_p): Export.
+       (vect_is_simple_reduction): Move all validity checks ...
+       (vectorizable_reduction): ... here.  Compute whether we
+       need a fold-left reduction here.
+       * tree-vect-patterns.c (vect_reassociating_reduction_p): Merge
+       both overloads, check needs_fold_left_reduction_p directly.
+       * tree-vectorizer.h (needs_fold_left_reduction_p): Declare.
+ 2019-10-17  Richard Biener  <rguenther@suse.de>
+       * tree-ssa-pre.c (create_component_ref_by_pieces_1): Fix
+       TARGET_MEM_REF creation.
+ 2019-10-17  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92129
+       * tree-vect-loop.c (vectorizable_reduction): Also fail
+       on GIMPLE_SINGLE_RHS.
+ 2019-10-17  Jakub Jelinek  <jakub@redhat.com>
+       PR tree-optimization/92056
+       * tree-object-size.c (cond_expr_object_size): Return early if then_
+       processing resulted in unknown size.
+       PR tree-optimization/92115
+       * tree-ssa-ifcombine.c (ifcombine_ifandif): Force condition into
+       temporary if it could trap.
+ 2019-10-17  Richard Biener  <rguenther@suse.de>
+       PR debug/91887
+       * dwarf2out.c (gen_formal_parameter_die): Also try to match
+       context_die against a DW_TAG_GNU_formal_parameter_pack parent.
+ 2019-10-16  Jakub Jelinek  <jakub@redhat.com>
+       * tree-ssa-strlen.c (maybe_invalidate): Use
+       HOST_WIDE_INT_PRINT_UNSIGNED instead of "%zu".
+ 2019-10-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+           Jim Wilson  <jimw@sifive.com>
+       * config/riscv/riscv.h (REG_CLASS_CONTENTS): Add argument passing
+       regs to SIBCALL_REGS.
+       * config/riscv/riscv.c (riscv_regno_to_class): Change argument
+       passing regs to SIBCALL_REGS.
+ 2019-10-16  Martin Sebor  <msebor@redhat.com>
+       PR tree-optimization/83821
+       * tree-ssa-strlen.c (maybe_invalidate): Add argument.  Consider
+       the length of a string when available.
+       (handle_builtin_memset) Add argument.
+       (handle_store, strlen_check_and_optimize_call): Same.
+       (check_and_optimize_stmt): Same.  Pass it to callees.
+ 2019-10-16  Martin Sebor  <msebor@redhat.com>
+       PR tree-optimization/91996
+       * tree-ssa-strlen.c (maybe_warn_pointless_strcmp): Improve location
+       information.
+       (compare_nonzero_chars): Add an overload.
+       (count_nonzero_bytes): Add an argument.  Call overload above.
+       Handle non-constant lengths in some range.
+       (handle_store): Add an argument.
+       (check_and_optimize_stmt): Pass an argument to handle_store.
+ 2019-10-16  Richard Earnshaw  <rearnsha@arm.com>
+       * config/arm/arm.c (neon_valid_immediate): Clear bytes before use.
+ 2019-10-16  Mihailo Stojanovic  <mistojanovic@wavecomp.com>
+       * config/mips/mips.c (mips_expand_builtin_insn): Force the
+       operands which correspond to the same input-output register to
+       have the same pseudo assigned to them.
+ 2019-10-16  Ilya Leoshkevich  <iii@linux.ibm.com>
+       * cfgrtl.c (find_partition_fixes): Remove bbs_in_cold_partition.
+ 2019-10-16  Wilco Dijkstra  <wdijkstr@arm.com>
+       * config/aarch64/aarch64.c (aarch64_classify_symbol):
+       Apply reasonable limit to symbol offsets.
+ 2019-10-16  Richard Biener  <rguenther@suse.de>
+       * tree-vect-loop.c (vect_valid_reduction_input_p): Remove.
+       (vect_is_simple_reduction): Delay checking to
+       vectorizable_reduction and relax the checking.
+       (vectorizable_reduction): Check we have a simple use.  Check
+       for bogus condition reductions.
+       * tree-vect-stmts.c (vect_transform_stmt): Make sure we
+       are looking at the last stmt in a pattern sequence when
+       filling in backedge PHI values.
+ 2019-10-16  Peter Bergner <bergner@linux.ibm.com>
+           Jiufu Guo  <guojiufu@linux.ibm.com>
+       PR target/70010
+       * config/rs6000/rs6000.c (rs6000_can_inline_p): Prohibit inlining if
+       the callee explicitly disables some isa_flags the caller is using.
+ 2019-10-16  Richard Sandiford  <richard.sandiford@arm.com>
+       * function-abi.cc (expr_callee_abi): Assert for POINTER_TYPE_P.
+ 2019-10-16  Richard Sandiford  <richard.sandiford@arm.com>
+       * genmodes.c (mode_data::order): New field.
+       (blank_mode): Update accordingly.
+       (VECTOR_MODES_WITH_PREFIX): Add an order parameter.
+       (make_vector_modes): Likewise.
+       (VECTOR_MODES): Update use accordingly.
+       (cmp_modes): Sort by the new order field ahead of sorting by size.
+       * config/aarch64/aarch64-modes.def (VNx2QI, VN2xHI, VNx2SI)
+       (VNx4QI, VNx4HI, VNx8QI): New partial vector modes.
+       * config/aarch64/aarch64.c (VEC_PARTIAL): New flag value.
+       (aarch64_classify_vector_mode): Handle the new partial modes.
+       (aarch64_vl_bytes): New function.
+       (aarch64_hard_regno_nregs): Use it instead of BYTES_PER_SVE_VECTOR
+       when counting the number of registers in an SVE mode.
+       (aarch64_class_max_nregs): Likewise.
+       (aarch64_hard_regno_mode_ok): Don't allow partial vectors
+       in registers yet.
+       (aarch64_classify_address): Treat partial vectors analogously
+       to full vectors.
+       (aarch64_print_address_internal): Consolidate the printing of
+       MUL VL addresses, using aarch64_vl_bytes as the number of
+       bytes represented by "VL".
+       (aarch64_vector_mode_supported_p): Reject partial vector modes.
+ 2019-10-16  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64.c (aarch64_layout_frame): Use is_constant
+       rather than known_lt when choosing frame layouts.
+ 2019-10-16  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64.c (aarch64_layout_frame): Assert
+       that all the adjustments add up to the full frame size.
+       Use crtl->outgoing_args_size directly as the final adjustment
+       where appropriate.
+ 2019-10-16  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64.c (aarch64_layout_frame): Use a local
+       "frame" reference instead of always referring directly to
+       "cfun->machine->frame".
+ 2019-10-16  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92119
+       * tree-vect-patterns.c (vect_recog_rotate_pattern): Guard
+       against missing bswap lhs.
+ 2019-10-16  Richard Sandiford  <richard.sandiford@arm.com>
+       PR middle-end/92033
+       * poly-int.h (constant_lower_bound_with_limit): New function.
+       (constant_upper_bound_with_limit): Likewise.
+       * doc/poly-int.texi: Document them.
+       * tree-vrp.c (value_range_base::set): Convert POLY_INT_CST bounds
+       into the worst-case INTEGER_CST bounds.
+ 2019-10-16  Feng Xue  <fxue@os.amperecomputing.com>
+       PR ipa/91088
+       * doc/invoke.texi (ipa-max-param-expr-ops): Document new option.
+       * params.def (PARAM_IPA_MAX_PARAM_EXPR_OPS): New.
+       * ipa-predicat.h (struct expr_eval_op): New struct.
+       (expr_eval_ops): New typedef.
+       (struct condition): Add type and param_ops fields, remove size field.
+       (add_condition): Replace size parameter with type parameter, add
+       param_ops parameter.
+       * ipa-predicat.c (expr_eval_ops_equal_p): New function.
+       (predicate::add_clause): Add comparisons on type and param_ops.
+       (dump_condition): Add debug dump for param_ops.
+       (remap_after_inlining): Adjust call arguments to add_condition.
+       (add_condition): Replace size parameter with type parameter, add
+       param_ops parameter. Unshare constant value used in conditions.
+       * ipa-fnsummary.c (evaluate_conditions_for_known_args): Fold
+       parameter expressions using param_ops.
+       (decompose_param_expr):  New function.
+       (set_cond_stmt_execution_predicate): Use call to decompose_param_expr
+       to replace call to unmodified_parm_or_parm_agg_item.
+       (set_switch_stmt_execution_predicate): Likewise.
+       (will_be_nonconstant_expr_predicate): Likewise. Replace usage of size
+       with type.
+       (inline_read_section): Read param_ops from summary stream.
+       (ipa_fn_summary_write): Write param_ops to summary stream.
+ 2019-10-15  Segher Boessenkool  <segher@kernel.crashing.org>
+       PR rtl-optimization/92107
+       * genattrtab.c (write_attr_value) <do_operator>: Parenthesize the
+       expression written.
+ 2019-10-15  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c: Update description of fix and continue.
+ 2019-10-15  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (darwin_binds_local_p): Update to call
+       default_binds_local_p_3 () directly. amend comments.
+ 2019-10-15  Richard Biener  <rguenther@suse.de>
+       * lto-streamer-out.c (lto_variably_modified_type_p): New.
+       (tree_is_indexable): Use it.
+       * tree-streamer-out.c (pack_ts_type_common_value_fields):
+       Stream variably_modified_type_p as TYPE_LANG_FLAG_0.
+       * tree-streamer-in.c (unpack_ts_type_common_value_fields): Likewise.
+ 2019-10-15  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config/msp430/msp430.md (zero_extendqipsi2): New.
+       (zero_extendqisi2): Optimize case where src register and base dst
+       register are the same.
+       (zero_extendhipsi2): Don't use 430X insn for rYs->r case.
+       (zero_extendpsisi2): Optimize r->m case.
+       Add unnamed insn patterns to catch insns combine searches for when
+       optimizing pointer manipulation.
+ 2019-10-15  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config/msp430/msp430.md: Group zero_extend* insns together.
+ 2019-10-15  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config/msp430/constraints.md: Allow post_inc operand for "Ya"
+       constraint.
+       * config/msp430/msp430.c (msp430_legitimate_address_p): Handle
+       POST_INC.
+       (msp430_subreg): Likewise.
+       (msp430_split_addsi): Likewise.
+       (msp430_print_operand_addr): Likewise.
+       * config/msp430/msp430.h (HAVE_POST_INCREMENT): Define.
+       (USE_STORE_POST_INCREMENT): Define.
+       * config/msp430/msp430.md: Use the msp430_general_dst_operand or
+       msp430_general_dst_nonv_operand predicates for the lvalues of insns.
+       * config/msp430/predicates.md (msp430_nonpostinc_operand): New.
+       (msp430_general_dst_operand): New.
+       (msp430_general_dst_nonv_operand): New.
+       (msp430_nonsubreg_operand): Remove.
+       (msp430_nonsubreg_dst_operand): New.
+       (msp430_nonsubreg_or_imm_operand): Allow reg or mem operands in place
+       of defunct msp430_nonsubreg_operand.
+       (msp430_nonsubregnonpostinc_or_imm_operand): New.
+ 2019-10-15  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/91929
+       * tree-ssa-pre.c (pre_expr_d::loc): New member.
+       (get_or_alloc_expr_for_name): Initialize it.
+       (get_or_alloc_expr_for_constant): Likewise.
+       (phi_translate_1): Copy it.
+       (create_expression_by_pieces): Use the original location
+       of the expression for the inserted stmt.
+       (compute_avail): Record the location of the stmt for the
+       expressions created.
+ 2019-10-15  Richard Sandiford  <richard.sandiford@arm.com>
+       * tree-ssa-strlen.c (count_nonzero_bytes): Check tree_fits_uhwi_p
+       before using tree_to_uhwi.
+ 2019-10-15  Ilya Leoshkevich  <iii@linux.ibm.com>
+       * config/s390/s390.md: Run %a0:DI splitters only after reload.
+ 2019-10-15  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92094
+       * tree-vect-loop.c (vectorizable_reduction): For nested cycles
+       do not adjust the reduction definition def type.
+       * tree-vect-stmts.c (vect_transform_stmt): Verify the scalar stmt
+       defines the latch argument of the PHI.
+ 2019-10-15  Hongyu Wang  <hongtao.wang@intel.com>
+       PR target/92035
+       * config/i386/avx512fintrin.h (_mm_mask_roundscale_ss,
+       _mm_maskz_roundscale_ss, _mm_maskz_roundscale_round_ss,
+       _mm_maskz_roundscale_round_ss, _mm_mask_roundscale_sd,
+       _mm_maskz_roundscale_sd, _mm_mask_roundscale_round_sd,
+       _mm_maskz_roundscale_round_sd): New intrinsics.
+       (_mm_roundscale_ss, _mm_roundscale_round_ss): Use
+       __builtin_ia32_rndscales?_mask_round builtins instead of
+       __builtin_ia32_rndscales?_round.
+       * config/i386/i386-builtin.def (__builtin_ia32_rndscaless_round,
+       __builtin_ia32_rndscalesd_round): Remove.
+       (__builtin_ia32_rndscaless_mask_round,
+       __builtin_ia32_rndscalesd_mask_round): New intrinsics.
+       * config/i386/sse.md
+       (avx512f_rndscale<mode><round_saeonly_name>): Renamed to ...
+       (avx512f_rndscale<mode><mask_scalar_name><round_saeonly_scalar_name>):
+        ... this, adjust and add subst atrributes to make it maskable.
+ 2019-10-15  Richard Biener  <rguenther@suse.de>
+       PR middle-end/92046
+       * common.opt (fallow-store-data-races): New.
+       * params.def (PARAM_ALLOW_STORE_DATA_RACES): Remove.
+       * params.h (ALLOW_STORE_DATA_RACES): Likewise.
+       * doc/invoke.texi (fallow-store-data-races): Document.
+       (--param allow-store-data-races): Remove docs.
+       * opts.c (default_options_table): Enable -fallow-store-data-races
+       at -Ofast.
+       (default_options_optimization): Do not enable --param
+       allow-store-data-races at -Ofast.
+       * tree-if-conv.c (ifcvt_memrefs_wont_trap): Use flag_store_data_races
+       instead of PARAM_ALLOW_STORE_DATA_RACES.
+       * tree-ssa-loop-im.c (execute_sm): Likewise.
+ 2019-10-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+       PR tree-optimization/92085
+       * tree-if-conv.c (ifcvt_local_dce): Call gsi_next in else clause,
+       instead of calling it unconditionally after
+       delete_dead_or_redundant_assignment and fix indentation.
+ 2019-10-15  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
+       * config/arm/vfp.md (fma<SDF:mode>4): Enable DF only when
+       TARGET_VFP_DOUBLE.
+       (*fmsub<SDF:mode>4): Likewise.
+       *fnmsub<SDF:mode>4): Likewise.
+       (*fnmadd<SDF:mode>4): Likewise.
+ 2019-10-14 Joel Hutton  <Joel.Hutton@arm.com>
+       * doc/tree-ssa.texi: Update renamed macro name.
+ 2019-10-14  Mihailo Stojanovic  <mistojanovic@wavecomp.com>
+       * config/mips/mips.c (mips_cannot_force_const_mem): Reject
+       vector constants.
+ 2019-10-14  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c: Use unsigned ints for the picbase label
+       counters, initialise the vars explicitly.
+       (update_pic_label_number_if_needed): Move a variable declaration
+       to where it's needed.
+       (machopic_output_function_base_name): Use a more strict checking
+       assert, and and unsigned int for the picbase label counter.
+       (machopic_get_function_picbase): Likewise.
+ 2019-10-14  Richard Biener  <rguenther@suse.de>
+       PR middle-end/92046
+       * dse.c (scan_insn): Use param max_active_local_stores.
+       (dse_step1): Get PARAM_MAX_DSE_ACTIVE_LOCAL_STORES and adjust
+       based on optimization level.
+       * loop-invariant.c (move_loop_invariants): Adjust
+       LOOP_INVARIANT_MAX_BBS_IN_LOOP based on optimization level.
+       * opts.c (default_options_optimization): Do not adjust
+       PARAM_MAX_DSE_ACTIVE_LOCAL_STORES and
+       LOOP_INVARIANT_MAX_BBS_IN_LOOP here.
+ 2019-10-14  Wilco Dijkstra  <wdijkstr@arm.com>
+       * config/arm/arm.c (arm_legitimize_address): Remove Thumb-2 bailout.
+ 2019-10-14  Wilco Dijkstra  <wdijkstr@arm.com>
+       * config/arm/arm.c (arm_option_override): Don't override sched
+       pressure algorithm.
+ 2019-10-14  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92069
+       * tree-vect-loop.c (vect_analyze_scalar_cycles_1): For nested
+       cycles do not set vect_nested_cycle on the latch definition.
+ 2019-10-14  Richard Sandiford  <richard.sandiford@arm.com>
+       * function-abi.h (expr_callee_abi): Declare.
+       * function-abi.cc (expr_callee_abi): New function.
+ 2019-10-14  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.c (value_range_base::set): Normalize unsigned ~[0,0]
+       into [1,MAX].
+       * tree-vrp.h (value_range_base::nonzero_p): Adjust for unsigned
+       non-zero being represented as [1,MAX].
+ 2019-10-14  Xiong Hu Luo  <luoxhu@linux.ibm.com>
+       * tree-sra.c (dump_access): Add missing braces.
+ 2019-10-13  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (machopic_indirection_name): Rework the
+       function to emit linker-visible symbols only for indirections
+       in the data section.  Clean up the code and update comments.
+ 2019-10-13  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (machopic_indirect_data_reference): Remove
+       redundant code.
+ 2019-10-13  Nathan Sidwell  <nathan@acm.org>
+       * gengtype-lex.l (CXX_KEYWORD): Add 'mutable'.
+ 2019-10-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+       * doc/sourcebuild.texi (Test Directives, Add Options): Remove
+       c99_runtime.
+ 2019-10-12  Jan Hubicka  <hubicka@ucw.cz>
+       * lto-streamer-out.c (collect_block_tree_leafs): Renumber statements
+       so non-virutal are before virutals.
+       (output_function): Avoid body modifications.
+ 2019-10-12  John David Anglin  <danglin@gcc.gnu.org>
+       * config/pa/pa.c (pa_output_call): Load descriptor address to register
+       %r22.  Load function address before global pointer.
+       (pa_attr_length_indirect_call): Adjust length of inline versions of
+       $$dyncall.
+       (pa_output_indirect_call): Remove fast inline version of $$dyncall
+       before normal cases.  Update inline $$dyncall sequences to preserve
+       function descriptor address in register %r22.
+       (TRAMPOLINE_CODE_SIZE): Adjust.
+       (pa_asm_trampoline_template): Revise 32-bit trampoline.  Don't assume
+       register %r22 contains trampoline address.
+       (pa_trampoline_init): Adjust offsets.
+       (pa_trampoline_adjust_address): Likewise.
+       * config/pa/pa.h (TRAMPOLINE_SIZE): Adjust 32-bit size.
+ 2019-10-12  Iain Sandoe  <iain@sandoe.co.uk>
+       PR target/67183
+       * config/darwin.c (machopic_indirection): New field to flag
+       non-lazy-symbol-pointers in the data section.
+       (machopic_indirection_name): Compute if an indirection should
+       appear in the data section.
+       (machopic_output_data_section_indirection): New callback split
+       from machopic_output_indirection.
+       (machopic_output_stub_indirection): Likewise.
+       (machopic_output_indirection): Retain the code for non-lazy
+       symbol pointers in their regular section.
+       (machopic_finish): Use the new callbacks to order the indirection
+       output.
+ 2019-10-12  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin-protos.h (machopic_finish): Delete.
+       * config/darwin.c (machopic_finish): Make static.
+ 2019-10-12  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (darwin_file_end): Only emit empty CTOR/DTOR
+       sections when building kernel extension code.
+ 2019-10-12  Palmer Dabbelt  <palmer@sifive.com>
+       * doc/extend.texi (Alternate Keywords): Change "-std=c11" to "a
+       later standard."
+ 2019-10-12  John David Anglin  <danglin@gcc.gnu.org>
+       * config/pa/pa.c (pa_option_override): Remove trailing comma
+       from warning.
+ 2019-10-12  Jakub Jelinek  <jakub@redhat.com>
+       PR middle-end/92063
+       * tree-eh.c (operation_could_trap_helper_p) <case COND_EXPR>
+       <case VEC_COND_EXPR>: Return false with *handled = false.
+       (tree_could_trap_p): For {,VEC_}COND_EXPR return false instead of
+       recursing on the first operand.
+       * fold-const.c (simple_operand_p_2): Use generic_expr_could_trap_p
+       instead of tree_could_trap_p.
+       * tree-ssa-sccvn.c (vn_nary_may_trap): Formatting fixes.
+ 2019-10-11  Jim Wilson  <jimw@sifive.com>
+       PR rtl-optimization/91860
+       * combine.c (subst): If new_rtx is a constant, also check for
+       SIGN_EXTEND when deciding whether to call simplify_unary_operation.
+ 2019-10-11  Richard Sandiford  <richard.sandiford@arm.com>
+       * expr.c (store_expr): Use rtx_to_poly_int64 rather than
+       INTVAL when calling store_bit_field.
+ 2019-10-11  Wilco Dijkstra  <wdijkstr@arm.com>
+       * config/arm/arm.h (HONOR_REG_ALLOC_ORDER): Set when optimizing for
+       size.
+ 2019-10-11  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+       * tree-vect-loop.c (vect_analyze_loop_operations): Adjust call to
+       vectorizable_live_operation.
+       (vectorizable_live_operation): Adjust parameters.
+       * tree-vect-stmts.c (vect_init_vector,
+       vect_gen_widened_results_half): Fix typo in function comment.
+       (can_vectorize_live_stmts): Adjust function comment.
+       Adjust parameters.  Adjust call to vectorizable_live_operation.
+       (vect_analyze_stmt): Adjust call to can_vectorize_live_stmts.
+       (vect_transform_stmt): Adjust function comment.  Adjust call to
+       can_vectorize_live_stmts.
+       * tree-vectorizer.h (vectorizable_live_operation): Adjust parameters.
+ 2019-10-11  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/90883
+       PR tree-optimization/91091
+       * tree-ssa-sccvn.c (vn_reference_lookup_3): Use correct
+       alias-sets both for recording VN table entries and continuing
+       walking after translating through copies.  Handle same-sized
+       reads from SSA names by returning the plain SSA name.
+       (eliminate_dom_walker::eliminate_stmt): Properly handle
+       non-size precision stores in redundant store elimination.
+ 2019-10-11  Jan Hubicka  <hubicka@ucw.cz>
+       * ggc-page.c (release_pages): Output statistics when !quiet_flag.
+       (ggc_collect): Dump later to not interfere with release_page dump.
+       (ggc_trim): New function.
+       * ggc-none.c (ggc_trim): New.
+       * ggc.h (ggc_trim): Declare.
+ 2019-10-11  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/92066
+       PR tree-optimization/92046
+       * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
+       Fix bogus cost model check.
+ 2019-10-11  Tobias Burnus  <tobias@codesourcery.com>
+       * langhooks-def.h (LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR): Define.
+       (LANG_HOOKS_DECLS): Add it.
+       * langhooks.h (lang_hooks_for_decls): Add omp_is_allocatable_or_ptr;
+       update comment for omp_is_optional_argument.
+       * omp-general.c (omp_is_allocatable_or_ptr): New.
+       * omp-general.h (omp_is_allocatable_or_ptr): Declare.
+       * omp-low.c (scan_sharing_clauses, lower_omp_target): Handle
+       Fortran's optional arguments and allocatable/pointer scalars
+       with use_device_addr.
+ 2019-10-11  Ilya Leoshkevich  <iii@linux.ibm.com>
+       PR target/77918
+       * config/s390/2827.md: Add new opcodes.
+       * config/s390/2964.md: Likewise.
+       * config/s390/3906.md: Likewise.
+       * config/s390/8561.md: Likewise.
+       * config/s390/s390-builtins.def (s390_vfchesb): Use
+       the new vec_cmpgev4sf_quiet_nocc.
+       (s390_vfchedb): Use the new vec_cmpgev2df_quiet_nocc.
+       (s390_vfchsb): Use the new vec_cmpgtv4sf_quiet_nocc.
+       (s390_vfchdb): Use the new vec_cmpgtv2df_quiet_nocc.
+       (vec_cmplev4sf): Use the new vec_cmplev4sf_quiet_nocc.
+       (vec_cmplev2df): Use the new vec_cmplev2df_quiet_nocc.
+       (vec_cmpltv4sf): Use the new vec_cmpltv4sf_quiet_nocc.
+       (vec_cmpltv2df): Use the new vec_cmpltv2df_quiet_nocc.
+       * config/s390/s390-modes.def (CCSFPS): New mode.
+       * config/s390/s390.c (s390_match_ccmode_set): Support CCSFPS.
+       (s390_select_ccmode): Return CCSFPS for LT, LE, GT, GE and LTGT.
+       (s390_branch_condition_mask): Reuse CCS for CCSFPS.
+       (s390_expand_vec_compare): Use non-signaling patterns where
+       necessary.
+       (s390_reverse_condition): Support CCSFPS.
+       * config/s390/s390.md (*cmp<mode>_ccsfps): New pattern.
+       * config/s390/vector.md: (VFCMP_HW_OP): Remove.
+       (asm_fcmp_op): Likewise.
+       (*smaxv2df3_vx): Use pattern for quiet comparison.
+       (*sminv2df3_vx): Likewise.
+       (*vec_cmp<VFCMP_HW_OP:code><mode>_nocc): Remove.
+       (*vec_cmpeq<mode>_quiet_nocc): New pattern.
+       (vec_cmpgt<mode>_quiet_nocc): Likewise.
+       (vec_cmplt<mode>_quiet_nocc): New expander.
+       (vec_cmpge<mode>_quiet_nocc): New pattern.
+       (vec_cmple<mode>_quiet_nocc): New expander.
+       (*vec_cmpeq<mode>_signaling_nocc): New pattern.
+       (*vec_cmpgt<mode>_signaling_nocc): Likewise.
+       (*vec_cmpgt<mode>_signaling_finite_nocc): Likewise.
+       (*vec_cmpge<mode>_signaling_nocc): Likewise.
+       (*vec_cmpge<mode>_signaling_finite_nocc): Likewise.
+       (vec_cmpungt<mode>): New expander.
+       (vec_cmpunge<mode>): Likewise.
+       (vec_cmpuneq<mode>): Use quiet patterns.
+       (vec_cmpltgt<mode>): Allow only on z14+.
+       (vec_cmpordered<mode>): Use quiet patterns.
+       (vec_cmpunordered<mode>): Likewise.
+       (VEC_CMP_EXPAND): Add ungt and unge.
+ 2019-10-11  Jan Hubicka  <hubicka@ucw.cz>
+       * gimple-streamer-out.c (output_gimple_stmt): Add explicit function
+       parameter.
+       * lto-streamer-out.c: Include tree-dfa.h.
+       (output_cfg): Do not use cfun.
+       (lto_prepare_function_for_streaming): New.
+       (output_function): Do not push cfun; do not initialize loop optimizer.
+       * lto-streamer.h (lto_prepare_function_for_streaming): Declare.
+       * passes.c (ipa_write_summaries): Use it.
+       (ipa_write_optimization_summaries): Do not modify bodies.
+       * tree-dfa.c (renumber_gimple_stmt_uids): Add function parameter.
+       * tree.dfa.h (renumber_gimple_stmt_uids): Update prototype.
+       * tree-ssa-dse.c (pass_dse::execute): Update use of
+       renumber_gimple_stmt_uids.
+       * tree-ssa-math-opts.c (pass_optimize_widening_mul::execute): Likewise.
+ 2019-10-11  Kewen Lin  <linkw@gcc.gnu.org>
+       * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Lower
+       vec_promote_demote cost to 1 for non-Power7 VSX architectures.
+ 2019-10-10  Joseph Myers  <joseph@codesourcery.com>
+       * ginclude/float.h [!__DEC32_MANT_DIG__]: Do not define DFP
+       macros.
+       [__STDC_WANT_IEC_60559_DFP_EXT__ || __STDC_VERSION__ > 201710L]:
+       Also define DFP macros for these conditions.
+       [!__STDC_WANT_DEC_FP__] (DEC32_SUBNORMAL_MIN, DEC64_SUBNORMAL_MIN,
+       DEC128_SUBNORMAL_MIN): Do not define.
+       [__STDC_WANT_IEC_60559_DFP_EXT__ || __STDC_VERSION__ > 201710L]
+       (DEC32_TRUE_MIN, DEC64_TRUE_MIN, DEC128_TRUE_MIN): New macros.
+ 2019-10-10  Xiong Hu Luo  <luoxhu@linux.ibm.com>
+           Sandra Loosemore  <sandra@codesourcery.com>
+       PR middle-end/26241
+       * doc/lto.texi (IPA): Reference to the IPA passes.
+       * doc/passes.texi (Pass manager): Add node IPA passes and
+         description for each IPA pass.
+ 2019-10-10  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-reference.c: Do not include splay-tree.h
+       (reference_vars_to_consider): Turn to hash map.
+       (get_static_name, ipa_init, analyze_function, propagate,
+       stream_out_bitmap, ipa_reference_write_optimization_summary,
+       ipa_reference_write_optimization_summary): Update.
+ 2019-10-10  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-reference.c (propagate): Fix releasing of IPA summaries.
+ 2019-10-10  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c: Lookup Objective C metadata and force indirection
+       for IVAR refs.
+ 2019-10-10  Michael Meissner  <meissner@linux.ibm.com>
+       * config/rs6000/rs6000.c (quad_address_p): Add check for prefixed
+       addresses.
+       (mem_operand_gpr): Add check for prefixed addresses.
+       (mem_operand_ds_form): Add check for prefixed addresses.
+       (rs6000_legitimate_offset_address_p): If we support prefixed
+       addresses, check for a 34-bit offset instead of 16-bit.
+       (rs6000_legitimate_address_p): Add check for prefixed addresses.
+       Do not allow load/store with update if the address is prefixed.
+       (rs6000_mode_dependent_address):  If we support prefixed
+       addresses, check for a 34-bit offset instead of 16-bit.
+ 2019-10-10  Ilya Leoshkevich  <iii@linux.ibm.com>
+       PR target/77918
+       * config/s390/vector.md (vcond_comparison_operator): New
+       predicate.
+       (vcond<V_HW:mode><V_HW2:mode>): Use vcond_comparison_operator.
+ 2019-10-10  David Malcolm  <dmalcolm@redhat.com>
+       PR 87488
+       * Makefile.in (CFLAGS-opts.o): Pass in DOCUMENTATION_ROOT_URL via
+       -D.
+       * configure.ac (--with-documentation-root-url): New option.
+       * configure: Regenerate.
+       * diagnostic-format-json.cc (json_end_diagnostic): If there is an
+       option URL, add it as a new string field of the diagnostic option.
+       * diagnostic.c (diagnostic_initialize): Initialize get_option_url.
+       (print_option_information): If get_option_url is non-NULL, call
+       it, and if the result is non-NULL, potentially emit an escape
+       sequence to markup the option text with the resulting URL.
+       * diagnostic.h (diagnostic_context::get_option_url): New callback.
+       * doc/invoke.texi (-fdiagnostics-format=): Add "option_url" to
+       example of JSON output.
+       * opts-diagnostic.h (get_option_url): New decl.
+       * opts.c (get_option_url): New function.
+       * toplev.c (general_init): Initialize the get_option_url callback.
+ 2019-10-10  David Malcolm  <dmalcolm@redhat.com>
+       PR 87488
+       * common.opt (fdiagnostics-urls=): New option.
+       (diagnostic-url.h): Add SourceInclude.
+       (diagnostic_url_rule): New enum.
+       * diagnostic-color.c: Include "diagnostic-url.h".
+       (diagnostic_urls_enabled_p): New function.
+       * diagnostic-url.h: New file.
+       * diagnostic.c: Include "diagnostic-url.h".
+       (diagnostic_urls_init): New function.
+       * diagnostic.h (diagnostic_urls_init): New decl.
+       * doc/invoke.texi (Diagnostic Message Formatting Options): Add
+       -fdiagnostics-urls to the list.
+       (-fdiagnostics-urls): New option.
+       * gcc.c (driver_handle_option): Handle OPT_fdiagnostics_urls_.
+       (driver::global_initializations): Call diagnostic_urls_init.
+       * opts-global.c (init_options_once): Likewise.
+       * opts.c (common_handle_option): Handle OPT_fdiagnostics_urls_.
+       * pretty-print.c (pretty_printer::pretty_printer): Initialize
+       show_urls.
+       (pp_begin_url): New function.
+       (pp_end_url): New function.
+       (selftest::test_urls): New selftest.
+       (selftest::pretty_print_c_tests): Call it.
+       * pretty-print.h (pretty_printer::show_urls): New field.
+       (pp_begin_url): New decl.
+       (pp_end_url): New decl.
+ 2019-10-10  UroÅ¡ Bizjak  <ubizjak@gmail.com>
+       PR target/92022
+       * config/alpha/alpha.c (alpha_handle_trap_shadows): Skip DEBUG_INSN.
+ 2019-10-10  Oleg Endo  <olegendo@gcc.gnu.org>
+       PR target/88630
+       * config/sh/sh.h (TARGET_FPU_SH4_300): New macro.
+       * config/sh/sh.c (sh_option_override): Enable fsca and fsrra insns
+       also for TARGET_FPU_SH4_300.
+       (sh_emit_mode_set): Check for TARGET_FPU_SH4_300 instead of
+       TARGET_SH4_300.
+       * config/sh/sh.md (toggle_pr): Add TARGET_FPU_SH4_300 condition.
+       (negsf2): Expand to either negsf2_fpscr or negsf2_no_fpscr.
+       (*negsf2_i): Split into ...
+       (negsf2_fpscr, negsf2_no_fpscr): ... these new patterns.
+       (abssf2): Expand to either abssf2_fpsc or abssf2_no_fpsc.
+       (**abssf2_i): Split into ...
+       (abssf2_fpscr, abssf2_no_fpscr): ... these new patterns.
+       (negdf2): Expand to either negdf2_fpscr or negdf2_no_fpscr.
+       (*negdf2_i): Split into ...
+       (negdf2_fpscr, negdf2_no_fpscr): ... these new patterns.
+       (absdf2): Expand to either absdf2_fpscr or absdf2_no_fpsc.
+       (**abssf2_i): Split into ...
+       (absdf2_fpscr, absdf2_no_fpscr): ... these new patterns.
+ 2019-10-10  Richard Biener  <rguenther@suse.de>
+       PR middle-end/92046
+       * opts.c (finish_options): Do not influence global --params
+       from options that are adjustable per function.
+       * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
+       Apply --param adjustment based on active cost-model.
+       * tree-ssa-phiopt.c (cond_if_else_store_replacement): Disable
+       further store-sinking when vectorization or if-conversion
+       are not enabled.
+ 2019-10-10  Jan Hubicka  <hubicka@ucw.cz>
+       PR middle-end/92037
+       * cgraph.c (symbol_table_test::symbol_table_test): Use ggc_alloc
+       rather than ggc_alloc_cleared to alloc symbol table.
+       * toplev.c (general_init): Likewise.
+       * cgraph.h (symbol_table): Explicitly construct every field.
+ 2019-10-10  Andreas Krebbel  <krebbel@linux.ibm.com>
+       * common/config/s390/s390-common.c (PF_ARCH13): Rename to...
+       (PF_Z15): ... this.
+       * config.gcc: Add z15 as option for --with-arch and --with-tune
+       configure switches.
+       * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Add
+       error reporting for unsupported builtins.
+       * config/s390/s390-opts.h (enum processor_type): Rename
+       PROCESSOR_8561_ARCH13 to PROCESSOR_8561_Z15.
+       * config/s390/8561.md: Rename arch13 to z15 throughout the file.
+       * config/s390/driver-native.c (s390_host_detect_local_cpu):
+       Likewise.
+       * config/s390/s390-builtins.def: Likewise.
+       * config/s390/s390.c (processor_table): Add z15 as option and keep arch13 as alternative.
+       (s390_expand_builtin): Add missing check for unsupported builtins.
+       (s390_canonicalize_comparison): Rename TARGET_ARCH13 to TARGET_Z15.
+       (s390_rtx_costs): Likewise.
+       (s390_get_sched_attrmask): Rename arch13 to z15.
+       (s390_get_unit_mask): Likewise.
+       (s390_is_fpd): Likewise.
+       (s390_is_fxd): Likewise.
+       * config/s390/s390.h (enum processor_flags): Likewise.
+       * config/s390/s390.md: Likewise.
+       * config/s390/vector.md: Likewise.
+       * config/s390/vx-builtins.md: Likewise.
+       * config/s390/s390.opt: Add z15 to processor_type value.
+ 2019-10-10  Andreas Krebbel  <krebbel@linux.ibm.com>
+       PR target/91035
+       * config/s390/s390-protos.h (s390_output_split_stack_data): Add
+       prototype.
+       * config/s390/s390.md (UNSPECV_SPLIT_STACK_DATA): Remove.
+       ("split_stack_data", "split_stack_call")
+       ("split_stack_call_<mode>", "split_stack_cond_call")
+       ("split_stack_cond_call_<mode>"): Remove.
+       ("@split_stack_call<mode>", "@split_stack_cond_call<mode>"): New
+       insn definition.
+       * config/s390/s390.c (s390_output_split_stack_data): New function.
+       (s390_expand_split_stack_prologue): Use the merged expander.
+ 2019-10-09  Martin Sebor  <msebor@redhat.com>
+       PR tree-optimization/90879
+       * builtins.c (check_access): Avoid using maxbound when null.
+       * calls.c (maybe_warn_nonstring_arg): Adjust to get_range_strlen change.
+       * doc/invoke.texi (-Wstring-compare): Document new warning option.
+       * gimple-fold.c (get_range_strlen_tree): Make setting maxbound
+       conditional.
+       (get_range_strlen): Overwrite initial maxbound when non-null.
+       * gimple-ssa-sprintf.c (get_string_length): Adjust to get_range_strlen
+       changes.
+       * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same.
+       (used_only_for_zero_equality): New function.
+       (handle_builtin_memcmp): Call it.
+       (determine_min_objsize): Return an integer instead of tree.
+       (get_len_or_size, strxcmp_eqz_result): New functions.
+       (maybe_warn_pointless_strcmp): New function.
+       (handle_builtin_string_cmp): Call it.  Fold zero-equality of strcmp
+       between a longer string and a smaller array.
+       (get_range_strlen_dynamic): Overwrite initial maxbound when non-null.
+ 2019-10-09  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (darwin_override_options): Make the check for
+       Objective-C ABI version more specific for 64bit code.
+ 2019-10-09  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (machopic_indirect_data_reference): Set flag to
+       indicate that the new symbol is an indirection.
+       (machopic_indirect_call_target): Likewise.
+       * config/darwin.h (MACHO_SYMBOL_FLAG_INDIRECTION): New.
+       (MACHO_SYMBOL_INDIRECTION_P): New.
+       (MACHO_SYMBOL_FLAG_STATIC): Adjust bit number.
+ 2019-10-08  Jason Merrill  <jason@redhat.com>
+       * doc/invoke.texi: Document -fconcepts-ts.
+ 2019-10-09  Richard Biener  <rguenther@suse.de>
+       * tree-vect-loop.c (vect_is_simple_reduction): Simplify and
+       allow stmts other than GIMPLE_ASSIGN in nested cycles.
+ 2019-10-08  Richard Biener  <rguenther@suse.de>
+       * tree-vectorizer.h (_stmt_vec_info::reduc_vectype_in): New.
+       (_stmt_vec_info::force_single_cycle): Likewise.
+       (STMT_VINFO_FORCE_SINGLE_CYCLE): New.
+       (STMT_VINFO_REDUC_VECTYPE_IN): Likewise.
+       * tree-vect-loop.c (vectorizable_reduction): Set
+       STMT_VINFO_REDUC_VECTYPE_IN and STMT_VINFO_FORCE_SINGLE_CYCLE.
+       (vect_transform_reduction): Use them to remove redundant code.
+       (vect_transform_cycle_phi): Likewise.
+ 2019-10-08  Dmitrij Pochepko <dmitrij.pochepko@bell-sw.com>
+       PR tree-optimization/90836
+       * match.pd (popcount): New pattern.
+ 2019-10-08  Martin Sebor  <msebor@redhat.com>
+       PR middle-end/92026
+       PR middle-end/92014
+       * tree-ssa-strlen.c (count_nonzero_bytes): Avoid recursing for MEM_REF
+       again once nbytes has been set.  Set the access size when not yet set.
+ 2019-10-08  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (machopic_select_section): Remove dead code for
+       old Objective-C section selection method, replace with unreachable.
+ 2019-10-08  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (machopic_indirect_data_reference): Check for
+       required indirections before making direct access to defined
+       values.
+       (machopic_output_indirection): Place the indirected pointes for
+       required indirections into the non-lazy symbol pointers section.
+       (darwin_encode_section_info):
+       * config/darwin.h (MACHO_SYMBOL_FLAG_MUST_INDIRECT): New.
+       (MACHO_SYMBOL_MUST_INDIRECT_P): New.
+ 2019-10-08  UroÅ¡ Bizjak  <ubizjak@gmail.com>
+       PR target/91994
+       * config/i386/i386.c (x86_avx_u128_mode_needed): Use SSE_REG
+       instead of ALL_SSE_REG to check if function call preserves some
+       256-bit SSE registers.
+ 2019-10-08  Tulio Magno Quites Machado Filho  <tuliom@linux.ibm.com>
+       * config.gcc: Move -L usage from LINK_OS_EXTRA_SPEC32 and
+       LINK_OS_EXTRA_SPEC64 to MD_STARTFILE_PREFIX and
+       MD_STARTFILE_PREFIX_1 when using --with-advance-toolchain.
+ 2019-10-08  Richard Biener  <rguenther@suse.de>
+       * tree-vectorizer.h (_stmt_vec_info::v_reduc_type): Remove.
+       (_stmt_vec_info::is_reduc_info): Add.
+       (STMT_VINFO_VEC_REDUCTION_TYPE): Remove.
+       (vectorizable_condition): Remove.
+       (vectorizable_shift): Likewise.
+       (vectorizable_reduction): Adjust.
+       (info_for_reduction): New.
+       * tree-vect-loop.c (vect_force_simple_reduction): Fold into...
+       (vect_analyze_scalar_cycles_1): ... here.
+       (vect_analyze_loop_operations): Adjust.
+       (needs_fold_left_reduction_p): Simplify for single caller.
+       (vect_is_simple_reduction): Likewise.  Remove stmt restriction
+       for nested cycles not part of double reductions.
+       (vect_model_reduction_cost): Pass in the reduction type.
+       (info_for_reduction): New function.
+       (vect_create_epilog_for_reduction): Use it, access reduction
+       meta off the stmt info it returns.  Use STMT_VINFO_REDUC_TYPE
+       instead of STMT_VINFO_VEC_REDUCTION_TYPE.
+       (vectorize_fold_left_reduction): Remove pointless assert.
+       (vectorizable_reduction): Analyze the full reduction when
+       visiting the outermost PHI.  Simplify.  Use STMT_VINFO_REDUC_TYPE
+       instead of STMT_VINFO_VEC_REDUCTION_TYPE.  Direct reduction
+       stmt code-generation to vectorizable_* in most cases.  Verify
+       code-generation only for cases handled by
+       vect_transform_reductuon.
+       (vect_transform_reduction): Use info_for_reduction to get at
+       reduction meta.  Simplify.
+       (vect_transform_cycle_phi): Likewise.
+       (vectorizable_live_operation): Likewise.
+       * tree-vect-patterns.c (vect_reassociating_reduction_p): Look
+       at the PHI node for STMT_VINFO_REDUC_TYPE.
+       * tree-vect-slp.c (vect_schedule_slp_instance): Remove no
+       longer necessary code.
+       * tree-vect-stmts.c (vectorizable_shift): Make static again.
+       (vectorizable_condition): Likewise.  Get at reduction related
+       info via info_for_reduction.
+       (vect_analyze_stmt): Adjust.
+       (vect_transform_stmt): Likewise.
+       * tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
+       STMT_VINFO_REDUC_TYPE instead of STMT_VINFO_VEC_REDUCTION_TYPE.
+ 2019-10-08  Joseph Myers  <joseph@codesourcery.com>
+       * doc/invoke.texi (-ffp-int-builtin-inexact): Document
+       -fno-fp-int-builtin-inexact default for C2X.
+ 2019-10-07  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+           Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/91532
+       * tree-if-conv.c: Include tree-ssa-dse.h.
+       (ifcvt_local_dce): Change param from bb to loop,
+       and call dse_classify_store.
+       (tree_if_conversion): Pass loop instead of loop->header as arg
+       to ifcvt_local_dce.
+       * tree-ssa-dse.c: Include tree-ssa-dse.h.
+       (delete_dead_or_redundant_assignment): Remove static qualifier from
+       declaration, and add prototype in tree-ssa-dse.h.
+       (dse_store_status): Move to tree-ssa-dse.h.
+       (dse_classify_store): Remove static qualifier and add new tree param
+       stop_at_vuse, and add prototype in tree-ssa-dse.h.
+       * tree-ssa-dse.h: New header.
+ 2019-10-07  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (machopic_output_indirection): Don't put
+       hidden symbol indirections into the .data section, use the
+       non-lazy symbol pointers section as normal.
+       (darwin_encode_section_info): Record if a symbol is hidden.
+       * config/darwin.h (MACHO_SYMBOL_FLAG_HIDDEN_VIS): New.
+       (MACHO_SYMBOL_HIDDEN_VIS_P): New.
+ 2019-10-07  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (machopic_symbol_defined_p): Use symbol flag
+       predicates instead of accessing bits directly.
+       (machopic_indirect_call_target): Likewise.
+       (machopic_output_indirection): Likewise.
+       (darwin_encode_section_info): Improve description.  Use renamed
+       symbol flags.  Use predicate macros for variables and functions.
+       * config/darwin.h:
+       Rename MACHO_SYMBOL_VARIABLE to MACHO_SYMBOL_FLAG_VARIABLE.
+       Rename MACHO_SYMBOL_DEFINED to MACHO_SYMBOL_FLAG_DEFINED.
+       Rename MACHO_SYMBOL_STATIC to MACHO_SYMBOL_FLAG_STATIC.
+       (MACHO_SYMBOL_VARIABLE_P): New.
+       (MACHO_SYMBOL_DEFINED_P):New.
+       (MACHO_SYMBOL_STATIC_P): New.
+       * config/i386/darwin.h (MACHO_SYMBOL_FLAG_VARIABLE): Delete.
+       (SYMBOL_FLAG_SUBT_DEP): New.
+       * config/rs6000/darwin.h (SYMBOL_FLAG_SUBT_DEP): New.
+ 2019-10-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config/msp430/msp430.c (msp430_file_end): s/msp_/msp430_/
+       (msp430_expand_epilogue): Likewise.
+       * config/msp430/predicates.md: Likewise.
+       * config/msp430/msp430.md: Likewise.
+       Replace blocks of 8 spaces with tabs.
+ 2019-10-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config/msp430/msp430-protos.h (msp430_split_addsi): New prototype.
+       * config/msp430/msp430.c (msp430_split_addsi): New.
+       * config/msp430/msp430.md: Call msp430_split_addsi () instead of using
+       a block of C code for splitting addsi.
+ 2019-10-07  UroÅ¡ Bizjak  <ubizjak@gmail.com>
+       * config/i386/i386-expand.c (ix86_expand_floorceildf_32,
+       ix86_expand_rounddf_32): Reorder functions.
+       * config/i386/i386-protos.h: Update.
+ 2019-10-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+       * config.in: Regenerate.
+       * config/msp430/constraints.md: Fix docstring for "Ys" constraint.
+       Add new "Yx" constraint.
+       * config/msp430/driver-msp430.c (msp430_propagate_region_opt): New spec
+       function.
+       * config/msp430/msp430-protos.h (msp430_op_not_in_high_mem): New
+       prototype.
+       * config/msp430/msp430.c (msp430_option_override): Allow the lower
+       code/data region to be selected in the small memory model.
+       (msp430_section_attr): Don't warn if the "section" and "lower"
+       attributes are used together.
+       (msp430_handle_generic_attribute): Likewise.
+       (msp430_var_in_low_mem): New function.
+       (TARGET_ENCODE_SECTION_INFO): Define.
+       (msp430_encode_section_info): New function.
+       (gen_prefix): Return early in the small memory model.
+       Require TARGET_USE_LOWER_REGION_PREFIX to be set before adding the
+       ".lower" prefix if -m{code,data}-region=lower have been passed.
+       (msp430_output_aligned_decl_common): Emit common symbols when
+       -mdata-region=lower is passed unless TARGET_USE_LOWER_REGION_PREFIX is
+       set.
+       (TARGET_ASM_FILE_END): Define.
+       (msp430_file_end): New function.
+       (msp430_do_not_relax_short_jumps): Allow relaxation when
+       function will be in the lower region.
+       (msp430_op_not_in_high_mem): New function.
+       (msp430_print_operand): Check "msp430_op_not_in_high_mem" for
+       the 'X' operand selector.
+       Clarify comment for 'x' operand selector.
+       * config/msp430/msp430.h (LINK_SPEC): Propagate
+       -m{code,data}-region to the linker via spec function
+       msp430_propagate_region_opt.
+       (msp430_propagate_region_opt): New prototype.
+       (EXTRA_SPEC_FUNCTIONS): Add msp430_propagate_region_opt.
+       (SYMBOL_FLAG_LOW_MEM): Define.
+       * config/msp430/msp430.md (addsipsi3): Add missing "%X" operand
+       selector.
+       (zero_extendqihi2): Fix operand number used by "%X" selector.
+       (zero_extendqisi2): Likewise.
+       (zero_extendhisi2): Likewise.
+       (movqi): Use "Yx" constraint in place of "%X" operand selector.
+       (movhi): Likewise.
+       (addqi3): Likewise.
+       (addhi3): Likewise.
+       (addsi3): Likewise.
+       (addhi3_cy): Likewise.
+       (addchi4_cy): Likewise.
+       (subqi3): Likewise.
+       (subhi3): Likewise.
+       (subsi3): Likewise.
+       (bic<mode>3): Likewise.
+       (and<mode>3): Likewise.
+       (ior<mode>3): Likewise.
+       (xor<mode>3): Likewise.
+       (slli_1): Add missing "%X" operand selector.
+       (slll_1): Likewise.
+       (slll_2): Likewise.
+       (srai_1): Likewise.
+       (sral_1): Likewise.
+       (sral_2): Likewise.
+       (srli_1): Likewise.
+       (srll_1): Likewise.
+       (cbranchqi4_real): Use "Yx" constraint in place of "%X" operand
+       selector.
+       (cbranchhi4_real): Likewise.
+       (cbranchqi4_reversed): Likewise.
+       (cbranchhi4_reversed): Likewise.
+       (*bitbranch<mode>4): Likewise.
+       (*bitbranch<mode>4_z): Remove unnecessary "%x" operand selector.
+       * config/msp430/msp430.opt (mcode-region=): Set default to
+       MSP430_REGION_LOWER. Improve docstring.
+       (mdata-region=): Likewise.
+       (muse-lower-region-prefix): New option.
+       * config/msp430/t-msp430 (MULTILIB_OPTIONS): Add
+       mdata-region=none multilib.
+       (MULTILIB_MATCHES): Set mdata-region={upper,either} to match
+       mdata-region=none multilib.
+       MULTILIB_EXCEPTIONS: Remove.
+       MULTILIB_REQUIRED: Define.
+       * configure: Regenerate.
+       * configure.ac: Define HAVE_AS_GNU_ATTRIBUTE and
+       HAVE_AS_MSPABI_ATTRIBUTE if GAS version >= 2.33.50.
+       * doc/extend.texi: Clarify comment for {upper,lower,either}
+       function attributes.
+       Add separate description for "lower" variable attribute.
+ 2019-10-07  Ilya Leoshkevich  <iii@linux.ibm.com>
+       PR target/77918
+       * optabs-tree.c (vcond_icode_p): New function.
+       (vcond_eq_icode_p): Likewise.
+       (expand_vec_cond_expr_p): Use vcond_icode_p and
+       vcond_eq_icode_p.
+       * optabs.c (can_vcond_compare_p): New function.
+       * optabs.h (can_vcond_compare_p): Likewise.
+ 2019-10-07  Ilya Leoshkevich  <iii@linux.ibm.com>
+       PR target/77918
+       * gimple-expr.c (gimple_cond_get_ops_from_tree): Assert that the
+       caller passes a non-trapping condition.
+       (is_gimple_condexpr): Allow trapping conditions.
+       (is_gimple_condexpr_1): New helper function.
+       (is_gimple_condexpr_for_cond): New function, acts like old
+       is_gimple_condexpr.
+       * gimple-expr.h (is_gimple_condexpr_for_cond): New function.
+       * gimple.c (gimple_could_trap_p_1): Handle COND_EXPR and
+       VEC_COND_EXPR. Fix an issue with statements like i = (fp < 1.).
+       * gimplify.c (gimplify_cond_expr): Use
+       is_gimple_condexpr_for_cond.
+       (gimplify_expr): Allow is_gimple_condexpr_for_cond.
+       * tree-eh.c (operation_could_trap_p): Assert on COND_EXPR and
+       VEC_COND_EXPR.
+       (tree_could_trap_p): Handle COND_EXPR and VEC_COND_EXPR.
+       * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Use
+       is_gimple_condexpr_for_cond, remove pointless tmp check
+       (forward_propagate_into_cond): Remove pointless tmp check.
+ 2019-10-07 Vladislav Ivanishin  <vlad@ispras.ru>
+       * gimple-iterator.h (gsi_next_nonvirtual_phi): Change the semantics to
+       match that of other gsi_next_* functions.  Adjust the comment.
+       (gsi_start_nonvirtual_phis): New function.
+       * ipa-icf.c (sem_function::compare_phi_node): Update uses of
+       gsi_next_nonvirtual_phi accordingly.  (No functional change.)
+ 2019-10-07 Vladislav Ivanishin  <vlad@ispras.ru>
+       * doc/invoke.texi (-Wuninitialized): Don't mention the clobbered by
+       setjmp situation here.  Fix a verb's ending: "the exact variables or
+       elements for which there are warnings depends" -> "... depend".
+ 2019-10-07  Aldy Hernandez  <aldyh@redhat.com>
+       * ipa-prop.c (ipa_vr::nonzero_p): Add TYPE_UNSIGNED check.
+ 2019-10-07  Aldy Hernandez  <aldyh@redhat.com>
+       * ipa-prop.c (ipa_vr::nonzero_p): New.
+       (ipcp_update_vr): Use nonzero_p instead of open-coding check for
+       non-zero range.
+       * ipa-prop.h (class ipa_vr): Add nonzero_p.
+       * tree-vrp.c (range_has_numeric_bounds_p): New.
+       (range_int_cst_p): Use range_has_numeric_bounds_p.
+       (get_range_op_handler): New.
+       (supported_types_p): New.
+       (defined_ranges_p): New.
+       (drop_undefines_to_varying): New.
+       (range_fold_binary_symbolics_p): New.
+       (range_fold_unary_symbolics_p): New.
+       (range_fold_unary_expr): Extract out into above functions.
+       (range_fold_binary_expr): Same.
+       (value_range_base::normalize_addresses): New.
+       (value_range_base::normalize_symbolics): Normalize addresses.
+       * tree-vrp.h (class value_range_base): Add normalize_addresses.
+ 2019-10-07  Aldy Hernandez  <aldyh@redhat.com>
+       * tree-vrp.c (value_range_base::singleton_p): Use
+       value_range_base::num_pairs instead of vrp_val_is* to check
+       if a range has one sub-range.
+ 2019-10-07  Richard Sandiford  <richard.sandiford@arm.com>
+       * ira-lives.c (check_and_make_def_conflict): Handle cases in which
+       DEF is not a true earlyclobber but is tied to a specific input
+       operand, and so is effectively earlyclobber wrt inputs that have
+       different values.
+       (make_early_clobber_and_input_conflicts): Pass this case to the above.
+ 2019-10-07  Richard Sandiford  <richard.sandiford@arm.com>
+       * machmode.h (opt_mode): Mark constructors with CONSTEXPR.
+       (pod_mode): Mark operators likewise.
+       (scalar_int_mode): Mark non-default constructors and
+       operators with CONSTEXPR.
+       (scalar_float_mode, scalar_mode, complex_mode): Likewise.
+       (fixed_size_mode): Likewise.
+ 2019-10-07  Richard Sandiford  <richard.sandiford@arm.com>
+       PR target/91994
+       * config/i386/sse.md (avx_vzeroupper): Turn into a define_expand
+       and wrap the unspec_volatile in a parallel.
+       (*avx_vzeroupper): New define_insn.  Use a match_parallel around
+       the unspec_volatile.
+       * config/i386/predicates.md (vzeroupper_pattern): Expect the
+       unspec_volatile to be wrapped in a parallel.
+       * config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper)
+       (ix86_add_reg_usage_to_vzerouppers): New functions.
+       (rest_of_handle_insert_vzeroupper): Use them to add register
+       usage information to the vzeroupper instructions.
+ 2019-10-07  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/91975
+       * tree-ssa-loop-ivcanon.c (constant_after_peeling): Consistently
+       handle invariants.
+ 2019-10-06  Richard Sandiford  <richard.sandiford@arm.com>
+       * var-tracking.c (dataflow_set_clear_at_call): Hoist temporary
+       function result outside of EXECUTE_IF_SET_IN_HARD_REG_SET.
+ 2019-10-06  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (darwin_override_options): Adjust objective-c
+       ABI version error messages to avoid punctuation and contracted
+       negations.
+ 2019-10-05  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-inline.c: Fix type; compute size rather than self_size
+       for size of caller function.
+ 2019-10-05  Iain Sandoe  <iain@sandoe.co.uk>
+       PR target/59888
+       * config/darwin.c (darwin_rodata_section): Add relocation flag,
+       choose const_data section for constants with relocations.
+       (machopic_select_section): Pass relocation flag to
+       darwin_rodata_section ().
+ 2019-10-05  Jakub Jelinek  <jakub@redhat.com>
+       PR tree-optimization/91734
+       * generic-match-head.c: Include fold-const-call.h.
+       * match.pd (sqrt(x) cmp c): Check the boundary value and
+       in case inexact computation of c*c affects comparison of the boundary,
+       turn LT_EXPR into LE_EXPR, GE_EXPR into GT_EXPR, LE_EXPR into LT_EXPR
+       or GT_EXPR into GE_EXPR.  Punt for sqrt comparisons against NaN and
+       for -frounding-math.  For c2, try the next smaller or larger floating
+       point constant depending on comparison code and if it has the same
+       sqrt as c2, use it instead of c2.
+ 2019-10-04  Martin Sebor  <msebor@redhat.com>
+       PR middle-end/91977
+       * tree-ssa-strlen.c (count_nonzero_bytes): Handle assignments with
+       MEM_REF right operand.  Avoid failing for MEM_REF assignments from
+       uninitialized objects.
+ 2019-10-04  Martin Sebor  <msebor@redhat.com>
+       * builtins.c (compute_objsize): Add an argument.
+       * tree-object-size.c (addr_object_size): Same.
+       (compute_builtin_object_size): Same.
+       * tree-object-size.h (compute_builtin_object): Same.
+ 2019-10-04  Jan Hubicka  <hubicka@ucw.cz>
+       * ipa-inline.c (inline_insns_single, inline_insns_auto): Fix typo.
+ 2019-10-04  Rafael Tsuha  <rafael.tsuha@usp.br>
+       * match.pd (sinh (x) / cosh (x)): New simplification rule.
+ 2019-10-04  Martin Jambor  <mjambor@suse.cz>
+       * tree-ssa-forwprop.c (simplify_builtin_call): Set gimple call
+       fntype when switching to calling memcpy instead of memset.
+ 2019-10-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+       * hash-table.h (hash_table::empty_slow): Don't assign
+       size_t values to int variables.
+ 2019-10-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+       * expr.c (convert_mode_scalar): Remove shadowing local var.
+       (emit_block_move): Rename local vars.
+       (block_move_libcall_safe_for_call_parm): Remove shadowing local var.
+       (emit_push_insn): Rename local vars.
+       (expand_assignment): Fix wrong mode in assign_stack_temp.  Remove
+       shadowing local vars.
+       (store_constructor): Remove shadowing local vars.  Rename local var.
+       (store_field, expand_cond_expr_using_cmove,
+       expand_expr_real_2): Remove shadowing local vars.
+       (expand_expr_real_1,
+       do_store_flag): Remove shadowing local vars.  Rename local vars.
+ 2019-10-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+       * cgraph.h (FOR_EACH_ALIAS): Avoid shadowing the loop variable.
+ 2019-10-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+       * genmatch.c (commutate): Rename local var.
+       (lower_cond): Reuse local var.
+       (dt_node::gen, dt_node::gen_kids, dt_node::gen_kids_1,
+       dt_operand::gen, dt_operand::gen_gimple_expr,
+       dt_simplify::gen): Add a param.  Rename generated vars.
+       (decision_tree::insert_operand,
+       (capture_info::walk_match, capture_info::walk_result,
+       capture_info::walk_c_expr): Rename local vars.
+       (expr::gen_transform): Rename generated vars.
+       Use snprintf.  Rename local vars.
+       (capture::gen_transform, dt_operand::get_name,
+       dt_operand::gen_opname): Rename generated vars.
+       (write_predicate): Adjust call to gen_kids.
+       (parser::get_internal_capture_id): Rename generated vars.
+       (parser::parse_expr): Rename local vars.
+       (parser::parse_if): Remove local var.
+       (parser::parse_pattern, add_operator): Rename local vars.
+ 2019-10-04  Joseph Myers  <joseph@codesourcery.com>
+       * builtins.def (DEF_C2X_BUILTIN): New macro.
+       (exp10, exp10f, exp10l, fabsd32, fabsd64, fabsd128, nand32)
+       (nand64, nand128, roundeven, roundevenf, roundevenl, strdup)
+       (strndup): Use DEF_C2X_BUILTIN.
+       * coretypes.h (enum function_class): Add function_c2x_misc.
+ 2019-10-04  Maya Rashish  <coypu@sdf.org>
+       * ira-color.c (update_costs_from_allocno): Call
+       ira_init_register_move_cost_if_necessary.
+ 2019-10-04  Jeff Law  <law@redhat.com>
+       * config/h8300/h8300.md (cpymemsi): Disable.
+       (movmd, movmd_internal_<mode>, movstr, movsd):
+       (movstr, movsd, stpcpy_internal_<mode>: Likewise.
+       (movmd splitter, movsd splitter): Likewise.
+       * range-op.cc (range_tests): Avoid two tests when ints and
+       shorts are the same size.
+ 2019-10-04  Richard Biener  <rguenther@suse.de>
+       PR lto/91968
+       * tree.c (find_decls_types_r): Do not remove LABEL_DECLs from
+       BLOCK_VARS.
+ 2019-10-04  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/91982
+       * tree-vect-loop.c (vectorizable_live_operation): Also guard
+       against EXTRACT_LAST_REDUCTION.
+       * tree-vect-stmts.c (vect_transform_stmt): Likewise.
+ 2019-10-04  Aldy Hernandez  <aldyh@redhat.com>
+       * range-op.o (value_range_from_overflowed_bounds): Rename from
+       adjust_overflow_bound.
+       (value_range_with_overflow): Rename from
+       create_range_with_overflow.
+       (create_possibly_reversed_range): Adjusted for above renames.
+       (operator_*::wi_fold): Same.
+       (cross_product_operator::wi_cross_productor): Same.
+ 2019-10-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+       * doc/invoke.texi (-Wshadow=global, -Wshadow=local,
+       -Wshadow=compatible-local): Fix description.
+       Add an example where -Wshadow=compatible-local does not
+       warn.
+ 2019-10-03  John David Anglin  <danglin@gcc.gnu.org>
+       * config/pa/pa.h (MAX_PCREL17F_OFFSET): Adjust.
+       * config/pa/pa.c (pa_output_call): Remove 64-bit sibcall sequence.
+       (pa_attr_length_call): Adjust length for 64-bit plabel sequence.
+ 2019-10-03  Aaron Sawdey <acsawdey@linux.ibm.com>
+       * expr.c (emit_block_move_hints): Slightly cleaner fix to
+       can_move_by_pieces issue.
+ 2019-10-03  Iain Sandoe  <iain@sandoe.co.uk>
+       PR target/87243
+       * config/darwin-driver.c (maybe_get_sysroot_from_sdkroot): New.
+       (darwin_driver_init): Use the sysroot provided by SDKROOT when that
+       is available and the user has not set one on the command line.
+ 2019-10-03  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+       PR target/91769
+       * config/mips/mips.c (mips_split_move): Use reg_overlap_mentioned_p
+       instead of REGNO equality check on addr.reg.
+ 2019-10-03  Jan Hubicka  <hubicka@ucw.cz>
+       * params.def (PARAM_INLINE_HEURISTICS_HINT_PERCENT,
+       PARAM_INLINE_HEURISTICS_HINT_PERCENT_O2): New.
+       * doc/invoke.texi (inline-heuristics-hint-percent,
+       inline-heuristics-hint-percent-O2): Document.
+       * tree-inline.c (inline_insns_single, inline_insns_auto): Add new
+       hint attribute.
+       (can_inline_edge_by_limits_p): Use it.
+ 2019-10-03  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/arm/arm.c (arm_print_value): Use real_to_decimal
+       to print CONST_DOUBLEs.
+ 2019-10-03  Andrea Corallo  <andrea.corallo@arm.com>
+       * ipa-cp.c (ipa_cp_c_finalize): Release ipcp_transformation_sum.
+       * ipa-prop.c (ipcp_free_transformation_sum): New function.
+       * ipa-prop.h (ipcp_free_transformation_sum): Add declaration.
+ 2019-10-03  Aldy Hernandez  <aldyh@redhat.com>
+       * Makefile.in (OBJS): Add range.o and range-op.o.
+       Remove wide-int-range.o.
+       * function-tests.c (test_ranges): New.
+       (function_tests_c_tests): Call test_ranges.
+       * ipa-cp.c (ipa_vr_operation_and_type_effects): Call
+       range_fold_unary_expr instead of extract_range_from_unary_expr.
+       * ipa-prop.c (ipa_compute_jump_functions_for_edge): Same.
+       * range-op.cc: New file.
+       * range-op.h: New file.
+       * range.cc: New file.
+       * range.h: New file.
+       * selftest.h (range_tests): New prototype.
+       * ssa.h: Include range.h.
+       * tree-vrp.c (value_range_base::value_range_base): New
+       constructors.
+       (value_range_base::singleton_p): Do not call
+       ranges_from_anti_range until sure we will need to.
+       (value_range_base::type): Rename gcc_assert to
+       gcc_checking_assert.
+       (vrp_val_is_max): New argument.
+       (vrp_val_is_min): Same.
+       (wide_int_range_set_zero_nonzero_bits): Move from
+       wide-int-range.cc.
+       (extract_range_into_wide_ints): Remove.
+       (extract_range_from_multiplicative_op): Remove.
+       (extract_range_from_pointer_plus_expr): Abstract POINTER_PLUS code
+       from extract_range_from_binary_expr.
+       (extract_range_from_plus_minus_expr): Abstract PLUS/MINUS code
+       from extract_range_from_binary_expr.
+       (extract_range_from_binary_expr): Remove.
+       (normalize_for_range_ops): New.
+       (range_fold_binary_expr): New.
+       (range_fold_unary_expr): New.
+       (value_range_base::num_pairs): New.
+       (value_range_base::lower_bound): New.
+       (value_range_base::upper_bound): New.
+       (value_range_base::upper_bound): New.
+       (value_range_base::contains_p): New.
+       (value_range_base::invert): New.
+       (value_range_base::union_): New.
+       (value_range_base::intersect): New.
+       (range_compatible_p): New.
+       (value_range_base::operator==): New.
+       (determine_value_range_1): Call range_fold_*expr instead of
+       extract_range_from_*expr.
+       * tree-vrp.h (class value_range_base): Add new constructors.
+       Add methods for union_, intersect, operator==, contains_p,
+       num_pairs, lower_bound, upper_bound, invert.
+       (vrp_val_is_min): Add handle_pointers argument.
+       (vrp_val_is_max): Same.
+       (extract_range_from_unary_expr): Remove.
+       (extract_range_from_binary_expr): Remove.
+       (range_fold_unary_expr): New.
+       (range_fold_binary_expr): New.
+       * vr-values.c (vr_values::extract_range_from_binary_expr): Call
+       range_fold_binary_expr instead of extract_range_from_binary_expr.
+       (vr_values::extract_range_basic): Same.
+       (vr_values::extract_range_from_unary_expr): Call
+       range_fold_unary_expr instead of extract_range_from_unary_expr.
+       * wide-int-range.cc: Remove.
+       * wide-int-range.h: Remove.
+ 2019-10-02   Michael Meissner  <meissner@linux.ibm.com>
+       * config/rs6000/rs6000.c (mem_operand_gpr): Use
+       SIGNED_16BIT_OFFSET_EXTRA_P macro.
+       (mem_operand_ds_form): Use SIGNED_16BIT_OFFSET_EXTRA_P macro.
+       (rs6000_mode_dependent_address): Use SIGNED_16BIT_OFFSET_EXTRA_P
+       macro.
+ 2019-10-02  Joseph Myers  <joseph@codesourcery.com>
+       * ginclude/stdint-gcc.h [__STDC_WANT_IEC_60559_BFP_EXT__]: Change
+       condition on WIDTH macros to [__STDC_WANT_IEC_60559_BFP_EXT__ ||
+       (__STDC_VERSION__ && __STDC_VERSION__ > 201710L)].
+       * glimits.h: Likewise.
+ 2019-10-03  Jakub Jelinek  <jakub@redhat.com>
+       PR rtl-optimization/91976
+       * expr.c (emit_block_move_hints): Don't call can_move_by_pieces if
+       size is not CONST_INT_P, set pieces_ok to false in that case.  Simplify
+       CONST_INT_P (size) && pieces_ok to pieces_ok.  Formatting fix.
+ 2019-10-02  Martin Sebor  <msebor@redhat.com>
+       PR tree-optimization/80936
+       * builtins.def (bcmp, bcopy, bzero): Declare nonnull.
+ 2019-10-02  Richard Sandiford  <richard.sandiford@arm.com>
+       * cgraph.c (cgraph_node::rtl_info): Use SET_HARD_REG_SET
+       instead of reg_class_contents[ALL_REGS].
+ 2019-09-30  Jason Merrill  <jason@redhat.com>
+       Add some hash_map_safe_* functions like vec_safe_*.
+       * hash-map.h (default_hash_map_size): New variable.
+       (create_ggc): Use it as default argument.
+       (hash_map_maybe_create, hash_map_safe_get)
+       (hash_map_safe_get_or_insert, hash_map_safe_put): New fns.
+ 2019-10-02  Jan Hubicka  <hubicka@ucw.cz>
+       * cif-code.def (MAX_INLINE_INSNS_SINGLE_O2_LIMIT,
+       MAX_INLINE_INSNS_AUTO_O2_LIMIT): New.
+       * ipa-inline.c (inline_insns_single, inline_insns_auto): New functions.
+       (can_inline_edge_by_limits_p): Use it.
+       (big_speedup_p): Use PARAM_INLINE_MIN_SPEEDUP_O2.
+       (want_inline_small_function_p): Use O2 bounds.
+       (edge_badness): LIkewise.
+       * opts.c (default_options): Add OPT_finline_functions.
+       * params.def (PARAM_INLINE_MIN_SPEEDUP_O2,
+       PARAM_MAX_INLINE_INSNS_SINGLE_O2, PARAM_MAX_INLINE_INSNS_AUTO_O2):
+       New parameters.
+       * doc/invoke.texi (-finline-functions): Update documentation.
+       (max-inline-insns-single-O2, max-inline-insns-auto-O2,
+       inline-min-speedup-O2): Document.
+       (early-inlining-insns-O2): Simplify docs.
+ 2019-10-02  Alexander Monakov  <amonakov@ispras.ru>
+       PR rtl-optimization/87047
+       * ifcvt.c (average_cost): New static function.  Use it...
+       (noce_process_if_block): ... here.
+ 2019-10-02  Aaron Sawdey <acsawdey@linux.ibm.com>
+       * config/rs6000/rs6000-protos.h (expand_block_move): Change prototype.
+       * config/rs6000/rs6000-string.c (expand_block_move): Add
+       might_overlap parm.
+       * config/rs6000/rs6000.md (movmemsi): Add new pattern.
+       (cpymemsi): Add might_overlap parm to expand_block_move() call.
+ 2019-10-02  Aaron Sawdey <acsawdey@linux.ibm.com>
+       * builtins.c (expand_builtin_memory_copy_args): Add might_overlap parm.
+       (expand_builtin_memcpy): Use might_overlap parm.
+       (expand_builtin_mempcpy_args): Use might_overlap parm.
+       (expand_builtin_memmove): Call expand_builtin_memory_copy_args.
+       (expand_builtin_memory_copy_args): Add might_overlap parm.
+       * expr.c (emit_block_move_via_cpymem): Rename to
+       emit_block_move_via_pattern, add might_overlap parm, use cpymem
+       or movmem optab as appropriate.
+       (emit_block_move_hints): Add might_overlap parm, do the right
+       thing for might_overlap==true.
+       * expr.h (emit_block_move_hints): Update prototype.
+ 2019-10-02  Eric Botcazou  <ebotcazou@adacore.com>
+       * tree-eh.h (unsplit_eh_edges): Declare.
+       * tree-eh.c (maybe_remove_unreachable_handlers): Detect more cases.
+       (unsplit_eh_edges): New function wrapping unsplit_all_eh.
+       * gimple-ssa-store-merging.c: Include cfganal.h cfgcleanup.h except.h.
+       (struct store_immediate_info): Add lp_nr field.
+       (store_immediate_info::store_immediate_info): Add NR2 parameter and
+       initialize lp_nr with it.
+       (struct merged_store_group): Add lp_nr and only_constants fields.
+       (merged_store_group::merged_store_group): Initialize them.
+       (merged_store_group::can_be_merged_into): Deal with them.
+       (pass_store_merging): Rename terminate_and_release_chain into
+       terminate_and_process_chain.
+       (pass_store_merging::terminate_and_process_all_chains): Adjust to above
+       renaming and remove useless assertions.
+       (pass_store_merging::terminate_all_aliasing_chains): Small tweak.
+       (stmts_may_clobber_ref_p): Be prepared for different basic blocks.
+       (imm_store_chain_info::coalesce_immediate_stores): Use only_constants
+       instead of always recomputing it and compare lp_nr.
+       (imm_store_chain_info::output_merged_store): If the group is in an
+       active EH region, register new stores if they can throw.  Moreover,
+       if the insertion has created new basic blocks, adjust the PHI nodes
+       of the post landing pad.
+       (imm_store_chain_info::output_merged_stores): If the original stores
+       are in an active EH region, deregister them.
+       (lhs_valid_for_store_merging_p): Prettify.
+       (adjust_bit_pos): New function extracted from...
+       (mem_valid_for_store_merging): ...here.  Use it for the base address
+       and also for the offset if it is the addition of a constant.
+       (lp_nr_for_store): New function.
+       (pass_store_merging::process_store): Change return type to bool.
+       Call lp_nr_for_store to initialize the store info.  Propagate the
+       return status of various called functions to the return value.
+       (store_valid_for_store_merging_p): New predicate.
+       (enum basic_block_status): New enumeration.
+       (get_status_for_store_merging): New function.
+       (pass_store_merging::execute): If the function can throw and catch
+       non-call exceptions, unsplit the EH edges on entry and clean up the
+       CFG on exit if something changed.  Call get_status_for_store_merging
+       for every basic block and keep the chains open across basic blocks
+       when possible.  Terminate and process open chains at the end, if any.
+ 2019-10-02  Richard Sandiford  <richard.sandiford@arm.com>
+       * reginfo.c (globalize_reg): Fix shadowed variable in
+       function_abis walk.
+ 2019-10-02  Martin Jambor  <mjambor@suse.cz>
+       * cgraph.c (symbol_table::create_edge): New parameter cloning_p,
+       do not compute some stuff when set.
+       (cgraph_node::create_edge): Likewise.
+       (cgraph_node::create_indirect_edge): Renamed last parameter to
+       coning_p and flipped its meaning, don't even calculate
+       inline_failed when set.
+       * cgraph.h (cgraph_node::create_edge): Add new parameter.
+       (symbol_table::::create_edge): Likewise.
+       (cgraph_node::create_indirect_edge): Rename last parameter, flip
+       the default value.
+       * cgraphclones.c (cgraph_edge::clone): Pass true cloning_p to all
+       call graph edge creating functions.
+ 2019-10-01  Jan Hubicka  <hubicka@ucw.cz>
+       PR c++/91222
+       * ipa-devirt.c (warn_types_mismatch): Fix conditional on anonymous
+       namespace types.
+ 2019-10-02  Shahab Vahedi  <shahab@synopsys.com>
+       * config/arc/arc.h (ASM_SPEC): Pass -mcode-density.
+ 2019-10-02  Richard Biener  <rguenther@suse.de>
+       * tree-vectorizer.h (vect_transform_reduction): Declare.
+       * tree-vect-stmts.c (vect_transform_stmt): Use it.
+       * tree-vect-loop.c (vectorizable_reduction): Split out reduction
+       stmt transform to ...
+       (vect_transform_reduction): ... this.
+ 2019-10-02  Tobias Burnus  <tobias@codesourcery.com>
+       * omp-low.c (lower_omp_target): Dereference optional argument
+       to work with the right pointer.
+ 2019-10-02  Kwok Cheung Yeung  <kcy@codesourcery.com>
+       * langhooks-def.h (LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT): Default to
+       false.
+       (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT.
+       * langhooks.h (omp_is_optional_argument): New hook.
+       * omp-general.c (omp_is_optional_argument): New.
+       * omp-general.h (omp_is_optional_argument): New declaration.
+       * omp-low.c (lower_omp_target): Create temporary for received value
+       and take the address for new_var if the original variable was a
+       DECL_BY_REFERENCE.  Use size of referenced object when a
+       pass-by-reference optional argument used as argument to firstprivate.
+ 2019-10-02  Jakub Jelinek  <jakub@redhat.com>
+       PR tree-optimization/91940
+       * tree-vect-patterns.c: Include tree-vector-builder.h and
+       vec-perm-indices.h.
+       (vect_recog_rotate_pattern): Also handle __builtin_bswap16, either by
+       unpromoting the argument back to uint16_t, or by converting into a
+       rotate, or into shifts plus ior.
+ 2019-10-02  Richard Biener  <rguenther@suse.de>
+       * tree-vectorizer.h (stmt_vec_info_type::cycle_phi_info_type):
+       New.
+       (vect_transform_cycle_phi): Declare.
+       * tree-vect-stmts.c (vect_transform_stmt): Call
+       vect_transform_cycle_phi.
+       * tree-vect-loop.c (vectorizable_reduction): Split out
+       PHI transformation stage to ...
+       (vect_transform_cycle_phi): ... here.
+ 2019-10-02  Richard Sandiford  <richard.sandiford@arm.com>
+       PR middle-end/91957
+       * lra-lives.c (make_hard_regno_dead): Don't record conflicts for
+       eliminable registers.
+       (make_hard_regno_live): Likewise, and don't make them live.
+ 2019-10-01  David Malcolm  <dmalcolm@redhat.com>
+       * diagnostic-show-locus.c (layout::print_gap_in_line_numbering):
+       Call pp_emit_prefix.
+       (layout::print_source_line): Likewise.
+       (layout::start_annotation_line): Likewise.
+       (diagnostic_show_locus): Remove call to temporarily clear the
+       prefix.
+       (selftest::test_one_liner_fixit_remove): Add test coverage for the
+       interaction of pp_set_prefix with rulers and fix-it hints.
+       * diagnostic.c (default_diagnostic_finalizer): Temporarily clear
+       prefix when calling diagnostic_show_locus, rather than destroying
+       it afterwards.
+       (print_parseable_fixits): Temporarily clear prefix.
+       * pretty-print.c (pp_format): Save and restore line_length, rather
+       than assuming it is zero.
+       (pp_output_formatted_text): Remove assertion that line_length is
+       zero.
+ 2019-10-01  Jan Hubicka  <hubicka@ucw.cz>
+       * tree-ssa-alias.c (nonoverlapping_component_refs_since_match_p):
+       Rename to ...
+       (nonoverlapping_refs_since_match_p): ... this; handle also
+       ARRAY_REFs.
+       (alias_stats): Update stats.
+       (dump_alias_stats): Likewise.
+       (cheap_array_ref_low_bound): New function.
+       (aliasing_matching_component_refs_p): Add partial_overlap
+       argument;
+       pass it to nonoverlapping_refs_since_match_p.
+       (aliasing_component_refs_walk): Update call of
+       aliasing_matching_component_refs_p
+       (nonoverlapping_array_refs_p): New function.
+       (decl_refs_may_alias_p, indirect_ref_may_alias_decl_p,
+       indirect_refs_may_alias_p): Update calls of
+       nonoverlapping_refs_since_match_p.
+ 2019-10-01  Maya Rashish  <coypu@sdf.org>
+       PR target/85401
+       * ira-color.c (allocno_copy_cost_saving): Call
+       ira_init_register_move_cost_if_necessary.
+ 2019-10-01  Maciej W. Rozycki  <macro@wdc.com>
+       * Makefile.in (gnat_install_lib): New variable.
+       * configure.ac: Substitute it.
+       * configure: Regenerate.
+ 2019-10-01  Jan Hubicka  <hubicka@ucw.cz>
+       PR lto/91222
+       * ipa-devirt.c (warn_types_mismatch): Do not ICE when anonymous type
+       is matched with non-C++ type
+ 2019-10-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+       * tree-if-conv.c (tree_if_conversion): Move call to ifcvt_local_dce
+       after local CSE.
+ 2019-10-01  Jan Hubicka  <hubicka@ucw.cz>
+       * doc/invoke.texi (early-inlining-insns-O2): Document.
+       (early-inlining-insns): Update.
+       * params.def (early-inlining-insns-O2): New bound.
+       (early-inlining-insns): Update docs.
+       * ipa-inline.c (want_early_inline_function_p): Use new bound.
+ 2019-10-01  Oleg Endo  <olegendo@gcc.gnu.org>
+       PR target/88562
+       * config/sh/sh.c (sh_extending_set_of_reg::use_as_extended_reg): Use
+       sh_check_add_incdec_notes to preserve REG_INC notes when replacing
+       a memory access insn.
+ 2019-10-01  Bill Schmidt  <wschmidt@linux.ibm.com>
+       * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Don't swap
+       vpmsumd.
+ 2019-10-01  Ilya Leoshkevich  <iii@linux.ibm.com>
+       PR target/77918
+       * config/s390/s390.c (s390_expand_vec_compare): Use
+       gen_vec_cmpordered and gen_vec_cmpunordered.
+       * config/s390/vector.md (vec_cmpuneq, vec_cmpltgt, vec_ordered,
+       vec_unordered): Delete.
+       (vec_ordered<mode>): Rename to vec_cmpordered<mode>.
+       (vec_unordered<mode>): Rename to vec_cmpunordered<mode>.
+       (VEC_CMP_EXPAND): New iterator for the generic dispatcher.
+       (vec_cmp<code>): Generic dispatcher.
+ 2019-10-01  Ilya Leoshkevich  <iii@linux.ibm.com>
+       PR target/77918
+       * config/s390/vector.md (V_HW): Add V1TI in order to make
+       vcond$a$b generate vcondv1tiv1tf.
+ 2019-10-01  Richard Sandiford  <richard.sandiford@arm.com>
+       PR rtl-optimization/91948
+       * ira-build.c (ira_create_allocno): Initialize
+       ALLOCNO_CROSSED_CALLS_ABIS.
+       * ira-color.c (allocno_reload_assign): Pass hard_regno rather
+       than regno to ira_need_caller_save_p.
+ 2019-10-01  Alexandre Oliva <oliva@adacore.com>
+       * config/i386/i386-options.c
+       (ix86_recompute_optlev_based_flags): New, moved out of...
+       (ix86_option_override_internal): ... this.  Call it.
+       (ix86_override_options_after_change): Call it here too.
+       PR debug/91507
+       * dwarf2out.c (override_type_for_decl_p): New.
+       (gen_variable_die): Use it.
+ 2019-10-01  Richard Biener  <rguenther@suse.de>
+       * tree-vect-loop.c (vectorizable_reduction): Move variables
+       to where they are used.
+ 2019-10-01  Segher Boessenkool  <segher@kernel.crashing.org>
+       * regrename.c (hide_operands): Use pc_rtx instead of cc0_rtx.
+       (build_def_use): Use PC instead of CC0 in a comment.
+ 2019-10-01  Richard Sandiford  <richard.sandiford@arm.com>
+       * rtl.def (CLOBBER_HIGH): Delete.
+       * doc/rtl.texi (clobber_high): Remove documentation.
+       * rtl.h (SET_DEST): Remove CLOBBER_HIGH from the list of codes.
+       (reg_is_clobbered_by_clobber_high): Delete.
+       (gen_hard_reg_clobber_high): Likewise.
+       * alias.c (record_set): Remove CLOBBER_HIGH handling.
+       * cfgexpand.c (expand_gimple_stmt): Likewise.
+       * combine-stack-adj.c (single_set_for_csa): Likewise.
+       * combine.c (find_single_use_1, set_nonzero_bits_and_sign_copies)
+       (can_combine_p, is_parallel_of_n_reg_sets, try_combine)
+       (record_dead_and_set_regs_1, reg_dead_at_p_1): Likewise.
+       * cse.c (invalidate_reg): Remove clobber_high parameter.
+       (invalidate): Update call accordingly.
+       (canonicalize_insn): Remove CLOBBER_HIGH handling.
+       (invalidate_from_clobbers, invalidate_from_sets_and_clobbers)
+       (count_reg_usage, insn_live_p): Likewise.
+       * cselib.h (cselib_invalidate_rtx): Remove sett argument.
+       * cselib.c (cselib_invalidate_regno, cselib_invalidate_rtx): Likewise.
+       (cselib_invalidate_rtx_note_stores): Update call accordingly.
+       (cselib_expand_value_rtx_1): Remove CLOBBER_HIGH handling.
+       (cselib_invalidate_regno, cselib_process_insn): Likewise.
+       * dce.c (deletable_insn_p, mark_nonreg_stores_1): Likewise.
+       (mark_nonreg_stores_2): Likewise.
+       * df-scan.c (df_find_hard_reg_defs, df_uses_record): Likewise.
+       (df_get_call_refs): Likewise.
+       * dwarf2out.c (mem_loc_descriptor): Likewise.
+       * emit-rtl.c (verify_rtx_sharing): Likewise.
+       (copy_insn_1, copy_rtx_if_shared_1): Likewise.
+       (hard_reg_clobbers_high, gen_hard_reg_clobber_high): Delete.
+       * genconfig.c (walk_insn_part): Remove CLOBBER_HIGH handling.
+       * genemit.c (gen_exp, gen_insn): Likewise.
+       * genrecog.c (validate_pattern, remove_clobbers): Likewise.
+       * haifa-sched.c (haifa_classify_rtx): Likewise.
+       * ira-build.c (create_insn_allocnos): Likewise.
+       * ira-costs.c (scan_one_insn): Likewise.
+       * ira.c (equiv_init_movable_p, memref_referenced_p): Likewise.
+       (rtx_moveable_p, interesting_dest_for_shprep): Likewise.
+       * jump.c (mark_jump_label_1): Likewise.
+       * lra-int.h (lra_insn_reg::clobber_high): Delete.
+       * lra-eliminations.c (lra_eliminate_regs_1): Remove CLOBBER_HIGH
+       handling.
+       (mark_not_eliminable): Likewise.
+       * lra-lives.c (process_bb_lives): Likewise.
+       * lra.c (new_insn_reg): Remove clobber_high parameter.
+       (collect_non_operand_hard_regs): Likewise.  Update call to new
+       insn_reg.  Remove CLOBBER_HIGH handling.
+       (lra_set_insn_recog_data): Remove CLOBBER_HIGH handling.  Update call
+       to collect_non_operand_hard_regs.
+       (add_regs_to_insn_regno_info): Remove CLOBBER_HIGH handling.
+       Update call to new_insn_reg.
+       (lra_update_insn_regno_info): Remove CLOBBER_HIGH handling.
+       * postreload.c (reload_cse_simplify, reload_combine_note_use)
+       (move2add_note_store): Likewise.
+       * print-rtl.c (print_pattern): Likewise.
+       * recog.c (store_data_bypass_p_1, store_data_bypass_p): Likewise.
+       (if_test_bypass_p): Likewise.
+       * regcprop.c (kill_clobbered_value, kill_set_value): Likewise.
+       * reginfo.c (reg_scan_mark_refs): Likewise.
+       * reload1.c (maybe_fix_stack_asms, eliminate_regs_1): Likewise.
+       (elimination_effects, mark_not_eliminable, scan_paradoxical_subregs)
+       (forget_old_reloads_1): Likewise.
+       * reorg.c (find_end_label, try_merge_delay_insns, redundant_insn)
+       (own_thread_p, fill_simple_delay_slots, fill_slots_from_thread)
+       (dbr_schedule): Likewise.
+       * resource.c (update_live_status, mark_referenced_resources)
+       (mark_set_resources): Likewise.
+       * rtl.c (copy_rtx): Likewise.
+       * rtlanal.c (reg_referenced_p, set_of_1, single_set_2, noop_move_p)
+       (note_pattern_stores): Likewise.
+       (reg_is_clobbered_by_clobber_high): Delete.
+       * sched-deps.c (sched_analyze_reg, sched_analyze_insn): Remove
+       CLOBBER_HIGH handling.
+ 2019-10-01  Richard Sandiford  <richard.sandiford@arm.com>
+       PR target/91452
+       * config/aarch64/aarch64.h (ARM_PCS_TLSDESC): New arm_pcs.
+       * config/aarch64/aarch64-protos.h (aarch64_tlsdesc_abi_id): Declare.
+       * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
+       Handle ARM_PCS_TLSDESC.
+       (aarch64_tlsdesc_abi_id): New function.
+       * config/aarch64/aarch64.md (tlsdesc_small_sve_<mode>): Use a call
+       rtx instead of a list of clobbers and clobber_highs.
+       (tlsdesc_small_<mode>): Update accordingly.
+ 2019-10-01  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64-protos.h (aarch64_expand_call): Take an
+       extra callee_abi argument.
+       * config/aarch64/aarch64.c (aarch64_expand_call): Likewise.
+       Insert a CALLEE_ABI unspec into the call pattern as the second
+       element in the PARALLEL.
+       (aarch64_simd_call_p): Delete.
+       (aarch64_insn_callee_abi): Get the arm_pcs of the callee from
+       the new CALLEE_ABI element of the PARALLEL.
+       (aarch64_init_cumulative_args): Get the arm_pcs of the callee
+       from the function type, if given.
+       (aarch64_function_arg_advance): Handle ARM_PCS_SIMD.
+       (aarch64_function_arg): Likewise.  Return the arm_pcs of the callee
+       when passed the function_arg_info end marker.
+       (aarch64_output_mi_thunk): Pass the arm_pcs of the callee as the
+       final argument of gen_sibcall.
+       * config/aarch64/aarch64.md (UNSPEC_CALLEE_ABI): New unspec.
+       (call): Make operand 2 a const_int_operand and pass it to expand_call.
+       Wrap it in an UNSPEC_CALLEE_ABI unspec for the dummy define_expand
+       pattern.
+       (call_value): Likewise operand 3.
+       (sibcall): Likewise operand 2.  Place the unspec before rather than
+       after the return.
+       (sibcall_value): Likewise operand 3.
+       (*call_insn, *call_value_insn): Include an UNSPEC_CALLEE_ABI.
+       (tlsgd_small_<mode>, *tlsgd_small_<mode>): Likewise.
+       (*sibcall_insn, *sibcall_value_insn): Likewise.  Remove empty
+       constraint strings.
+       (untyped_call): Pass const0_rtx as the callee ABI to gen_call.
+ 2019-10-01  Richard Sandiford  <richard.sandiford@arm.com>
+       * regs.h (HARD_REGNO_CALLER_SAVE_MODE): Update call to
+       choose_hard_reg_mode.
+       * config/sparc/sparc.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
+ 2019-10-01  Segher Boessenkool  <segher@kernel.crashing.org>
+       * doc/md.texi (vec_pack_trunc_@var{m}): Fix typo.
+       (vec_pack_sfix_trunc_@var{m}, vec_pack_ufix_trunc_@var{m}): Ditto.
+       (vec_packs_float_@var{m}, vec_packu_float_@var{m}): Ditto.
+ 2019-09-30  David Malcolm  <dmalcolm@redhat.com>
+       * diagnostic-show-locus.c (line_label::line_label): Initialize
+       m_has_vbar.
+       (line_label::comparator): Reverse the sort order by m_state_idx,
+       so that when the list is walked backwards the labels appear in
+       order of insertion into the rich_location.
+       (line_label::m_has_vbar): New field.
+       (layout::print_any_labels): When dealing with multiple labels at
+       the same line and column, only print vertical bars for the one
+       with the highest label_line.
+       (selftest::test_one_liner_labels): Update test for multiple labels
+       to expect the labels to be in the order of insertion into the
+       rich_location.  Add a test for many such labels, where the column
+       numbers are out-of-order relative to the insertion order.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/i386/i386.h (ix86_frame::expensive_p): New field.
+       (ix86_frame::expensive_count): Likewise.
+       * config/i386/i386.c (ix86_compute_frame_layout): Make the choice
+       of use_fast_prologue_epilogue robust against incidental changes
+       in function size.
+ 2019-09-30  Ilya Leoshkevich  <iii@linux.ibm.com>
+       PR target/77918
+       * config/s390/vector.md (vec_unordered<mode>): Call
+       gen_vec_ordered<mode>.
+ 2019-09-30  Yuliang Wang  <yuliang.wang@arm.com>
+       * config/aarch64/aarch64-sve.md (sdiv_pow2<mode>3):
+       New pattern for ASRD.
+       * config/aarch64/iterators.md (UNSPEC_ASRD): New unspec.
+       * internal-fn.def (IFN_DIV_POW2): New internal function.
+       * optabs.def (sdiv_pow2_optab): New optab.
+       * tree-vect-patterns.c (vect_recog_divmod_pattern):
+       Modify pattern to support new operation.
+       * doc/md.texi (sdiv_pow2$var{m3}): Documentation for the above.
+       * doc/sourcebuild.texi (vect_sdiv_pow2_si):
+       Document new target selector.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64.c (aarch64_layout_frame): Use crtl->abi
+       to test whether we're compiling a vector PCS function and to test
+       whether the function needs to save a particular register.
+       Remove the vector PCS handling of df_set_regs_ever_live.
+       (aarch64_components_for_bb): Use crtl->abi to test whether
+       the function needs to save a particular register.
+       (aarch64_process_components): Use crtl->abi to test whether
+       we're compiling a vector PCS function.
+       (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
+       (aarch64_epilogue_uses): Remove handling of vector PCS functions.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p):
+       Delete.
+       * config/aarch64/aarch64.c (aarch64_components_for_bb): Check
+       whether the block calls a function that clobbers more registers
+       than the current function is allowed to.
+       (aarch64_use_simple_return_insn_p): Delete.
+       * config/aarch64/aarch64.md (simple_return): Remove condition.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * function-abi.h (function_abi_aggregator): New class.
+       * function-abi.cc (function_abi_aggregator::caller_save_regs): New
+       function.
+       * ira.c (update_equiv_regs_prescan): New function.  Call
+       set_paradoxical_subreg here rather than...
+       (update_equiv_regs): ...here.
+       (ira): Call update_equiv_regs_prescan.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * hard-reg-set.h (regs_invalidated_by_call): Only define if
+       IN_TARGET_CODE.
+       (call_used_or_fixed_regs): Likewise.
+       (call_used_or_fixed_reg_p): Likewise.
+       * reginfo.c (regs_invalidated_by_call): New macro.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * shrink-wrap.c: Include function-abi.h.
+       (requires_stack_frame_p): Use crtl->abi to test whether the
+       current function can use a register without saving it first.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * sel-sched-ir.h (_def::crosses_call): Replace with...
+       (_def::crossed_call_abis): ..this new field.
+       (def_list_add): Take a mask of ABIs instead of a crosses_call
+       boolean.
+       * sel-sched-ir.c (def_list_add): Likewise.  Update initialization
+       of _def accordingly.
+       * sel-sched.c: Include function-abi.h.
+       (hard_regs_data::regs_for_call_clobbered): Delete.
+       (reg_rename::crosses_call): Replace with...
+       (reg_rename::crossed_call_abis): ...this new field.
+       (fur_static_params::crosses_call): Replace with...
+       (fur_static_params::crossed_call_abis): ...this new field.
+       (init_regs_for_mode): Don't initialize sel_hrd.regs_for_call_clobbered.
+       (init_hard_regs_data): Use crtl->abi to test which registers the
+       current function would need to save before it uses them.
+       (mark_unavailable_hard_regs): Update handling of call-clobbered
+       registers, using call_clobbers_in_region to find out which registers
+       might be call-clobbered (but without taking -fipa-ra into account
+       for now).  Remove separate handling of partially call-clobbered
+       registers.
+       (verify_target_availability): Use crossed_call_abis instead of
+       crosses_call.
+       (get_spec_check_type_for_insn, find_used_regs): Likewise.
+       (fur_orig_expr_found, fur_on_enter, fur_orig_expr_not_found): Likewise.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * sched-deps.c (deps_analyze_insn): Use the ABI of the target
+       function to test whether a register is fully or partly clobbered.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * rtlanal.c: Include function-abi.h.
+       (reg_set_p): Use insn_callee_abi to get the ABI of the called
+       function and clobbers_reg_p to test whether the register
+       is call-clobbered.
+       (find_all_hard_reg_sets): When implicit is true, use insn_callee_abi
+       to get the ABI of the called function and full_reg_clobbers to
+       get the set of fully call-clobbered registers.  Warn about the
+       pitfalls of using this mode.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * reload.c: Include function-abi.h.
+       (find_equiv_reg): Use clobbers_reg_p to test whether either
+       of the equivalent registers is clobbered by a call.
+       * reload1.c: Include function-abi.h.
+       (reg_reloaded_call_part_clobbered): Delete.
+       (reload): Use crtl->abi to test which registers would need
+       saving in the prologue before use.
+       (find_reg): Likewise.
+       (emit_reload_insns): Remove code for reg_reloaded_call_part_clobbered.
+       (reload_as_needed): Likewise.  Use full_and_partial_reg_clobbers
+       instead of call_used_or_fixed_regs | reg_reloaded_call_part_clobbered.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * regrename.h (du_head::call_clobber_mask): New field.
+       (du_head::need_caller_save_reg): Replace with...
+       (du_head::call_abis): ...this new field.
+       * regrename.c: Include function-abi.h.
+       (call_clobbered_in_chain_p): New function.
+       (check_new_reg_p): Use crtl->abi when deciding whether a register
+       is free for use after RA.  Use call_clobbered_in_chain_p to test
+       whether a candidate register would be clobbered by a call.
+       (find_rename_reg): Don't add call-clobber conflicts here.
+       (rename_chains): Check call_abis instead of need_caller_save_reg.
+       (merge_chains): Update for changes to du_head.
+       (build_def_use): Use insn_callee_abi to get the ABI of the call insn
+       target.  Record the ABI identifier in call_abis and the set of
+       fully or partially clobbered registers in call_clobber_mask.
+       Add fully-clobbered registers to hard_conflicts here rather
+       than in find_rename_reg.
+       * config/aarch64/cortex-a57-fma-steering.c: Include function-abi.h.
+       (rename_single_chain): Check call_abis instead of need_caller_save_reg.
+       * config/aarch64/falkor-tag-collision-avoidance.c: Include
+       function-abi.h.
+       * config/c6x/c6x.c: Likewise.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * regcprop.c (copyprop_hardreg_forward_1): Use the recorded
+       mode of the register when deciding whether it is no longer
+       available after a call.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * recog.c: Include function-abi.h.
+       (peep2_find_free_register): Use crtl->abi when deciding whether
+       a register is free for use after RA.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * postreload-gcse.c: Include regs.h and function-abi.h.
+       (record_opr_changes): Use insn_callee_abi to get the ABI of the
+       call insn target.  Conservatively assume that partially-clobbered
+       registers are altered.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * postreload.c (reload_combine_recognize_pattern): Use crtl->abi
+       when deciding whether a register is free for use after RA.
+       (reload_combine): Remove unnecessary use of fixed_reg_set.
+       (reload_cse_move2add): Use insn_callee_abi to get the ABI of the
+       call insn target.  Use reg_mode when testing whether a register
+       is no longer available.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * target.def (return_call_with_max_clobbers): Delete.
+       * doc/tm.texi.in (TARGET_RETURN_CALL_WITH_MAX_CLOBBERS): Delete.
+       * doc/tm.texi: Regenerate.
+       * config/aarch64/aarch64.c (aarch64_return_call_with_max_clobbers)
+       (TARGET_RETURN_CALL_WITH_MAX_CLOBBERS): Delete.
+       * lra-int.h (lra_reg::actual_call_used_reg_set): Delete.
+       (lra_reg::call_insn): Delete.
+       * lra.c: Include function-abi.h.
+       (initialize_lra_reg_info_element): Don't initialize the fields above.
+       (lra): Use crtl->abi to test whether the current function needs to
+       save a register in the prologue.  Remove special pre-inheritance
+       lra_create_live_ranges pass for flag_ipa_ra.
+       * lra-assigns.c: Include function-abi.h
+       (find_hard_regno_for_1): Use crtl->abi to test whether the current
+       function needs to save a register in the prologue.
+       (lra_assign): Assert that registers aren't allocated to a
+       conflicting register, rather than checking only for overlaps
+       with call_used_or_fixed_regs.  Do this even for flag_ipa_ra,
+       and for registers that are not live across a call.
+       * lra-constraints.c (last_call_for_abi): New variable.
+       (full_and_partial_call_clobbers): Likewise.
+       (setup_next_usage_insn): Remove the register from
+       full_and_partial_call_clobbers.
+       (need_for_call_save_p): Use call_clobbered_in_region_p to test
+       whether the register needs a caller save.
+       (need_for_split_p): Use full_and_partial_reg_clobbers instead
+       of call_used_or_fixed_regs.
+       (inherit_in_ebb): Initialize and maintain last_call_for_abi and
+       full_and_partial_call_clobbers.
+       * lra-lives.c (check_pseudos_live_through_calls): Replace
+       last_call_used_reg_set and call_insn arguments with an abi argument.
+       Remove handling of lra_reg::call_insn.  Use function_abi::mode_clobbers
+       as the set of conflicting registers.
+       (calls_have_same_clobbers_p): Delete.
+       (process_bb_lives): Track the ABI of the last call instead of an
+       insn/HARD_REG_SET pair.  Update calls to
+       check_pseudos_live_through_calls.  Use eh_edge_abi to calculate
+       the set of registers that could be clobbered by an EH edge.
+       Include partially-clobbered as well as fully-clobbered registers.
+       (lra_create_live_ranges_1): Don't initialize lra_reg::call_insn.
+       * lra-remat.c: Include function-abi.h.
+       (call_used_regs_arr_len, call_used_regs_arr): Delete.
+       (set_bb_regs): Use insn_callee_abi to get the set of call-clobbered
+       registers and bitmap_view to combine them into dead_regs.
+       (call_used_input_regno_present_p): Take a function_abi argument
+       and use it to test whether a register is call-clobbered.
+       (calculate_gen_cands): Use insn_callee_abi to get the ABI of the
+       call insn target.  Update tje call to call_used_input_regno_present_p.
+       (do_remat): Likewise.
+       (lra_remat): Remove the initialization of call_used_regs_arr_len
+       and call_used_regs_arr.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * loop-iv.c: Include regs.h and function-abi.h.
+       (simplify_using_initial_values): Use insn_callee_abi to get the
+       ABI of the call insn target.  Conservatively assume that
+       partially-clobbered registers are altered.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * function-abi.h (call_clobbers_in_region): Declare.
+       (call_clobbered_in_region_p): New function.
+       * function-abi.cc (call_clobbers_in_region): Likewise.
+       * ira-int.h: Include function-abi.h.
+       (ira_allocno::crossed_calls_abis): New field.
+       (ALLOCNO_CROSSED_CALLS_ABIS): New macro.
+       (ira_need_caller_save_regs): New function.
+       (ira_need_caller_save_p): Likewise.
+       * ira.c (setup_reg_renumber): Use ira_need_caller_save_p instead
+       of call_used_or_fixed_regs.
+       (do_reload): Use crtl->abi to test whether the current function
+       needs to save a register in the prologue.  Count registers that
+       need to be saved rather than registers that don't.
+       * ira-build.c (create_cap_allocno): Copy ALLOCNO_CROSSED_CALLS_ABIS.
+       Remove unnecessary | from ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS.
+       (propagate_allocno_info): Merge ALLOCNO_CROSSED_CALLS_ABIS too.
+       (propagate_some_info_from_allocno): Likewise.
+       (copy_info_to_removed_store_destinations): Likewise.
+       (ira_flattening): Say that ALLOCNO_CROSSED_CALLS_ABIS and
+       ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS are handled conservatively.
+       (ira_build): Use ira_need_caller_save_regs instead of
+       call_used_or_fixed_regs.
+       * ira-color.c (calculate_saved_nregs): Use crtl->abi to test
+       whether the current function would need to save a register
+       before using it.
+       (calculate_spill_cost): Likewise.
+       (allocno_reload_assign): Use ira_need_caller_save_regs and
+       ira_need_caller_save_p instead of call_used_or_fixed_regs.
+       * ira-conflicts.c (ira_build_conflicts): Use
+       ira_need_caller_save_regs rather than call_used_or_fixed_regs
+       as the set of call-clobbered registers.  Remove the
+       call_used_or_fixed_regs mask from the calculation of
+       temp_hard_reg_set and mask its use instead.  Remove special
+       handling of partially-clobbered registers.
+       * ira-costs.c (ira_tune_allocno_costs): Use ira_need_caller_save_p.
+       * ira-lives.c (process_bb_node_lives): Use mode_clobbers to
+       calculate the set of conflicting registers for calls that
+       can throw.  Record the ABIs of calls in ALLOCNO_CROSSED_CALLS_ABIS.
+       Use full_and_partial_reg_clobbers rather than full_reg_clobbers
+       for the calculation of ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS.
+       Use eh_edge_abi to calculate the set of registers that could
+       be clobbered by an EH edge.  Include partially-clobbered as
+       well as fully-clobbered registers.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * haifa-sched.c: Include function-abi.h.
+       (alloc_global_sched_pressure_data): Use crtl->abi to check whether
+       the function would need to save a register before using it.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * gcse.c: Include function-abi.h.
+       (compute_hash_table_work): Use insn_callee_abi to get the ABI of
+       the call insn target.  Invalidate partially call-clobbered
+       registers as well as fully call-clobbered ones.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * function.c (aggregate_value_p): Work out which ABI the
+       function is using before testing which registers are at least
+       partly preserved by a call.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * early-remat.c: Include regs.h and function-abi.h.
+       (early_remat::maybe_add_candidate): Don't check for call-clobbered
+       registers here.
+       (early_remat::restrict_remat_for_unavail_regs): New function.
+       (early_remat::restrict_remat_for_call): Likewise.
+       (early_remat::process_block): Before calling emit_remat_insns
+       for a previous call in the block, invalidate any candidates
+       that would clobber call-preserved registers.
+       (early_remat::emit_remat_insns_for_block): Likewise for the
+       final call in a block.  Do the same thing for live-in registers
+       when calling emit_remat_insns at the head of a block.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * df-scan.c (df_get_entry_block_def_set): Use crtl->abi to test
+       whether the current function needs to save at least part of a
+       register before using it.
+       (df_get_exit_block_use_set): Likewise for epilogue restores.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * df-problems.c: Include regs.h and function-abi.h.
+       (df_rd_problem_data): Rename sparse_invalidated_by_call to
+       sparse_invalidated_by_eh and dense_invalidated_by_call to
+       dense_invalidated_by_eh.
+       (df_print_bb_index): Update accordingly.
+       (df_rd_alloc, df_rd_start_dump, df_rd_confluence_n): Likewise.
+       (df_lr_confluence_n): Use eh_edge_abi to get the set of registers
+       that are clobbered by an EH edge.  Clobber partially-clobbered
+       registers as well as fully-clobbered ones.
+       (df_md_confluence_n): Likewise.
+       (df_rd_local_compute): Likewise.  Update for changes to
+       df_rd_problem_data.
+       * df-scan.c (df_scan_start_dump): Use eh_edge_abi to get the set
+       of registers that are clobbered by an EH edge.  Includde partially-
+       clobbered registers as well as fully-clobbered ones.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * cselib.c (cselib_process_insn): If we know what mode a
+       register was set in, check whether it is clobbered in that
+       mode by a call.  Only fall back to reg_raw_mode if that fails.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * cse.c: Include regs.h and function-abi.h.
+       (invalidate_for_call): Take the call insn as an argument.
+       Use insn_callee_abi to get the ABI of the call and invalidate
+       partially clobbered registers as well as fully clobbered ones.
+       (cse_insn): Update call accordingly.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * combine.c: Include function-abi.h.
+       (record_dead_and_set_regs): Use insn_callee_abi to get the ABI
+       of the target of call insns.  Invalidate partially-clobbered
+       registers as well as fully-clobbered ones.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * cfgloopanal.c: Include regs.h and function-abi.h.
+       (init_set_costs): Use default_function_abi to test whether
+       a general register is call-clobbered.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * cfgcleanup.c (old_insns_match_p): Compare the ABIs of calls
+       instead of the call-clobbered sets.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * caller-save.c (setup_save_areas): Remove redundant |s of
+       fixed_reg_set.
+       (save_call_clobbered_regs): Likewise.  Use the call ABI rather
+       than call_used_or_fixed_regs to decide whether a REG_RETURNED
+       value is useful.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * rtl.h (predefined_function_abi): Declare.
+       (choose_hard_reg_mode): Take a pointer to a predefined_function_abi
+       instead of a boolean call_save flag.
+       * config/gcn/gcn.c (gcn_hard_regno_caller_save_mode): Update call
+       accordingly.
+       * config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
+       * config/ia64/ia64.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
+       * config/mips/mips.c (mips_hard_regno_caller_save_mode): Likewise.
+       * config/msp430/msp430.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
+       * config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
+       * config/sh/sh.c (sh_hard_regno_caller_save_mode): Likewise.
+       * reginfo.c (init_reg_modes_target): Likewise.
+       (choose_hard_reg_mode): Take a pointer to a predefined_function_abi
+       instead of a boolean call_save flag.
+       * targhooks.c: Include function-abi.h.
+       (default_dwarf_frame_reg_mode): Update call to choose_hard_reg_mode,
+       using eh_edge_abi to choose the mode.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * target.def (hard_regno_call_part_clobbered): Take an ABI
+       identifier instead of an rtx_insn.
+       * doc/tm.texi: Regenerate.
+       * hooks.h (hook_bool_insn_uint_mode_false): Delete.
+       (hook_bool_uint_uint_mode_false): New function.
+       * hooks.c (hook_bool_insn_uint_mode_false): Delete.
+       (hook_bool_uint_uint_mode_false): New function.
+       * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
+       Take an ABI identifier instead of an rtx_insn.
+       * config/avr/avr.c (avr_hard_regno_call_part_clobbered): Likewise.
+       * config/i386/i386.c (ix86_hard_regno_call_part_clobbered): Likewise.
+       * config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
+       * config/pru/pru.c (pru_hard_regno_call_part_clobbered): Likewise.
+       * config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered):
+       Likewise.
+       * config/s390/s390.c (s390_hard_regno_call_part_clobbered): Likewise.
+       * cselib.c: Include function-abi.h.
+       (cselib_process_insn): Update call to
+       targetm.hard_regno_call_part_clobbered, using insn_callee_abi
+       to get the appropriate ABI identifier.
+       * function-abi.cc (predefined_function_abi::initialize): Update call
+       to targetm.hard_regno_call_part_clobbered.
+       * ira-conflicts.c (ira_build_conflicts): Likewise.
+       * ira-costs.c (ira_tune_allocno_costs): Likewise.
+       * lra-constraints.c: Include function-abi.h.
+       (need_for_call_save_p): Update call to
+       targetm.hard_regno_call_part_clobbered, using insn_callee_abi
+       to get the appropriate ABI identifier.
+       * lra-lives.c (check_pseudos_live_through_calls): Likewise.
+       * regcprop.c (copyprop_hardreg_forward_1): Update call
+       to targetm.hard_regno_call_part_clobbered.
+       * reginfo.c (choose_hard_reg_mode): Likewise.
+       * regrename.c (check_new_reg_p): Likewise.
+       * reload.c (find_equiv_reg): Likewise.
+       * reload1.c (emit_reload_insns): Likewise.
+       * sched-deps.c: Include function-abi.h.
+       (deps_analyze_insn): Update call to
+       targetm.hard_regno_call_part_clobbered, using insn_callee_abi
+       to get the appropriate ABI identifier.
+       * sel-sched.c (init_regs_for_mode, mark_unavailable_hard_regs): Update
+       call to targetm.hard_regno_call_part_clobbered.
+       * targhooks.c (default_dwarf_frame_reg_mode): Likewise.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/i386/i386.c: Include function-abi.h.
+       (ix86_avx_u128_mode_needed): Treat function calls as AVX_U128_ANY
+       if they preserve some 256-bit or 512-bit SSE registers.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * target.def (insn_callee_abi): New hook.
+       (remove_extra_call_preserved_regs): Delete.
+       * doc/tm.texi.in (TARGET_INSN_CALLEE_ABI): New macro.
+       (TARGET_REMOVE_EXTRA_CALL_PRESERVED_REGS): Delete.
+       * doc/tm.texi: Regenerate.
+       * targhooks.h (default_remove_extra_call_preserved_regs): Delete.
+       * targhooks.c (default_remove_extra_call_preserved_regs): Delete.
+       * config/aarch64/aarch64.c (aarch64_simd_call_p): Constify the
+       insn argument.
+       (aarch64_remove_extra_call_preserved_regs): Delete.
+       (aarch64_insn_callee_abi): New function.
+       (TARGET_REMOVE_EXTRA_CALL_PRESERVED_REGS): Delete.
+       (TARGET_INSN_CALLEE_ABI): New macro.
+       * rtl.h (get_call_fndecl): Declare.
+       (cgraph_rtl_info): Fix formatting.  Tweak comment for
+       function_used_regs.  Remove function_used_regs_valid.
+       * rtlanal.c (get_call_fndecl): Moved from final.c
+       * function-abi.h (insn_callee_abi): Declare.
+       (target_function_abi_info): Mention insn_callee_abi.
+       * function-abi.cc (fndecl_abi): Handle flag_ipa_ra in a similar
+       way to get_call_reg_set_usage did.
+       (insn_callee_abi): New function.
+       * regs.h (get_call_reg_set_usage): Delete.
+       * final.c: Include function-abi.h.
+       (collect_fn_hard_reg_usage): Add fixed and stack registers to
+       function_used_regs before the main loop rather than afterwards.
+       Use insn_callee_abi instead of get_call_reg_set_usage.  Exit early
+       if function_used_regs ends up not being useful.
+       (get_call_fndecl): Move to rtlanal.c
+       (get_call_cgraph_rtl_info, get_call_reg_set_usage): Delete.
+       * caller-save.c: Include function-abi.h.
+       (setup_save_areas, save_call_clobbered_regs): Use insn_callee_abi
+       instead of get_call_reg_set_usage.
+       * cfgcleanup.c: Include function-abi.h.
+       (old_insns_match_p): Use insn_callee_abi instead of
+       get_call_reg_set_usage.
+       * cgraph.h (cgraph_node::rtl_info): Take a const_tree instead of
+       a tree.
+       * cgraph.c (cgraph_node::rtl_info): Likewise.  Initialize
+       function_used_regs.
+       * df-scan.c: Include function-abi.h.
+       (df_get_call_refs): Use insn_callee_abi instead of
+       get_call_reg_set_usage.
+       * ira-lives.c: Include function-abi.h.
+       (process_bb_node_lives): Use insn_callee_abi instead of
+       get_call_reg_set_usage.
+       * lra-lives.c: Include function-abi.h.
+       (process_bb_lives): Use insn_callee_abi instead of
+       get_call_reg_set_usage.
+       * postreload.c: Include function-abi.h.
+       (reload_combine): Use insn_callee_abi instead of
+       get_call_reg_set_usage.
+       * regcprop.c: Include function-abi.h.
+       (copyprop_hardreg_forward_1): Use insn_callee_abi instead of
+       get_call_reg_set_usage.
+       * resource.c: Include function-abi.h.
+       (mark_set_resources, mark_target_live_regs): Use insn_callee_abi
+       instead of get_call_reg_set_usage.
+       * var-tracking.c: Include function-abi.h.
+       (dataflow_set_clear_at_call): Use insn_callee_abi instead of
+       get_call_reg_set_usage.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * target.def (fntype_abi): New target hook.
+       * doc/tm.texi.in (TARGET_FNTYPE_ABI): Likewise.
+       * doc/tm.texi: Regenerate.
+       * target.h (predefined_function_abi): Declare.
+       * function-abi.cc (fntype_abi): Call targetm.calls.fntype_abi,
+       if defined.
+       * config/aarch64/aarch64.h (ARM_PCS_SIMD): New arm_pcs value.
+       * config/aarch64/aarch64.c: Include function-abi.h.
+       (aarch64_simd_abi, aarch64_fntype_abi): New functions.
+       (TARGET_FNTYPE_ABI): Define.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * Makefile.in (OBJS): Add function-abi.o.
+       (GTFILES): Add function-abi.h.
+       * function-abi.cc: New file.
+       * function-abi.h: Likewise.
+       * emit-rtl.h (rtl_data::abi): New field.
+       * function.c: Include function-abi.h.
+       (prepare_function_start): Initialize crtl->abi.
+       * read-rtl-function.c: Include regs.h and function-abi.h.
+       (read_rtl_function_body): Initialize crtl->abi.
+       (read_rtl_function_body_from_file_range): Likewise.
+       * reginfo.c: Include function-abi.h.
+       (init_reg_sets_1): Initialize default_function_abi.
+       (globalize_reg): Call add_full_reg_clobber for each predefined ABI
+       when making a register global.
+       * target-globals.h (this_target_function_abi_info): Declare.
+       (target_globals::function_abi_info): New field.
+       (restore_target_globals): Copy it.
+       * target-globals.c: Include function-abi.h.
+       (default_target_globals): Initialize the function_abi_info field.
+       (target_globals): Allocate it.
+       (save_target_globals): Free it.
+ 2019-09-30  Nick Clifton  <nickc@redhat.com>
+       PR target/85978
+       * config/frv/frv.c (frv_register_move_cost): Add break statements
+       to avoid falling through to the wrong cases.  Tidy code.
+ 2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
+       For multi-registers modes, test how big each register part is.
+ 2019-09-30  Nick Clifton  <nickc@redhat.com>
+       PR target/59205
+       * config/iq2000/iq2000.c (iq2000_select_section): Delete.
+       (TARGET_ASM_SELECT_SECTION): Remove definition.
+       (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Allow definition.
+ 2019-09-30  Ilya Leoshkevich  <iii@linux.ibm.com>
+       * emit-rtl.c (init_raw_REG): New function.
+       (gen_raw_REG): Use init_raw_REG.
+       * gengenrtl.c (gendef): Emit init_* functions and alloca_*
+       macros.
+       * rtl.c (rtx_alloc_stat_v): Use rtx_init.
+       * rtl.h (rtx_init): New function.
+       (rtx_alloca): New function.
+       (init_raw_REG): New function.
+       (alloca_raw_REG): New macro.
+ 2019-09-30  Michael Meissner  <meissner@linux.ibm.com>
+       * config/rs6000/predicates.md (pcrel_address): Delete predicate.
+       (pcrel_local_address): Replace pcrel_address predicate, use the
+       new function address_to_insn_form.
+       (pcrel_external_address): Replace with new implementation using
+       address_to_insn_form..
+       (prefixed_mem_operand): Delete predicate which is now unused.
+       (pcrel_external_mem_operand): Delete predicate which is now
+       unused.
+       * config/rs6000/rs6000-protos.h (enum insn_form): New
+       enumeration.
+       (enum non_prefixed_form): New enumeration.
+       (address_to_insn_form): New declaration.
+       (prefixed_load_p): New declaration.
+       (prefixed_store_p): New declaration.
+       (prefixed_paddi_p): New declaration.
+       (rs6000_asm_output_opcode): New declaration.
+       (rs6000_final_prescan_insn): Move declaration and update calling
+       signature.
+       (address_is_prefixed): New helper inline function.
+       * config/rs6000/rs6000.c(print_operand_address): Check for either
+       PC-relative local symbols or PC-relative external symbols.
+       (rs6000_emit_move): Support loading PC-relative addresses.
+       (mode_supports_prefixed_address_p): Delete, no longer used.
+       (rs6000_prefixed_address_mode_p): Delete, no longer used.
+       (address_to_insn_form): New function to decode an address format.
+       (reg_to_non_prefixed): New function to identify what the
+       non-prefixed memory instruction format is for a register.
+       (prefixed_load_p): New function to identify prefixed loads.
+       (prefixed_store_p): New function to identify prefixed stores.
+       (prefixed_paddi_p): New function to identify prefixed load
+       immediates.
+       (next_insn_prefixed_p): New static state variable.
+       (rs6000_final_prescan_insn): New function to determine if an insn
+       uses a prefixed instruction.
+       (rs6000_asm_output_opcode): New function to emit 'p' in front of a
+       prefixed instruction.
+       * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): New target hook.
+       (ASM_OUTPUT_OPCODE): New target hook.
+       * config/rs6000/rs6000.md (prefixed): New insn attribute for
+       prefixed instructions.
+       (prefixed_length): New insn attribute for the size of prefixed
+       instructions.
+       (non_prefixed_length): New insn attribute for the size of
+       non-prefixed instructions.
+       (pcrel_local_addr): New insn to load up a local PC-relative
+       address.
+       (pcrel_extern_addr): New insn to load up an external PC-relative
+       address.
+       (mov<mode>_64bit_dm): Split the alternatives for loading 0.0 to a
+       GPR and loading a 128-bit floating point type to a GPR.
+ 2019-09-30  Richard Biener  <rguenther@suse.de>
+       * gimple.c (gimple_get_lhs): For PHIs return the result.
+       * tree-vectorizer.h (vectorizable_live_operation): Also get the
+       SLP instance as argument.
+       * tree-vect-loop.c (vect_analyze_loop_operations): Also handle
+       double-reduction PHIs with vectorizable_lc_phi.
+       (vect_analyze_loop_operations): Adjust.
+       (vect_create_epilog_for_reduction): Remove all code not dealing
+       with reduction LC PHI or epilogue generation.
+       (vectorizable_live_operation): Call vect_create_epilog_for_reduction
+       for live stmts of reductions.
+       * tree-vect-stmts.c (vectorizable_condition): When !for_reduction
+       do not handle defs that are not vect_internal_def.
+       (can_vectorize_live_stmts): Adjust.
+       (vect_analyze_stmt): When the vectorized stmt defined a value
+       used on backedges adjust the backedge uses of vectorized PHIs.
+ 2019-09-30  Martin Jambor  <mjambor@suse.cz>
+       PR ipa/91853
+       * tree-inline.c (force_value_to_type): New function.
+       (setup_one_parameter): Use force_value_to_type to convert type.
+       * tree-inline.c (force_value_to_type): Declare.
+       * ipa-param-manipulation.c (ipa_param_adjustments::modify_call): Deal
+       with register type mismatches.
+ 2019-09-30  Andreas Tobler  <andreast@gcc.gnu.org>
+       * config.gcc: Use the secure-plt on FreeBSD 13 and upwards for
+       32-bit PowerPC.
+       Define TARGET_FREEBSD32_SECURE_PLT for 64-bit PowerPC.
+       * config/rs6000/t-freebsd64: Make use of the above define and build
+       the 32-bit libraries with secure-plt.
+ 2019-09-30  Jakub Jelinek  <jakub@redhat.com>
+       PR target/91931
+       * config/i386/i386-expand.c (ix86_expand_adjust_ufix_to_sfix_si): Use
+       gen_int_mode instead of GEN_INT.
+ 2019-09-29  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (gen_macho_low): Amend to include the mode
+       argument.
+       (machopic_indirect_data_reference): Amend gen_macho_low call
+       to include mode argument
+       * config/rs6000/rs6000.c (emit_move): Likewise. Amend a comment.
+       * config/rs6000/darwin.md (@macho_low_<mode>): New, replaces
+       the macho_high expander and two define_insn entries.
+ 2019-09-29  Jakub Jelinek  <jakub@redhat.com>
+       PR bootstrap/90543
+       * optc-save-gen.awk: Fix up printing string option differences.
+ 2019-09-29  Kewen Lin  <linkw@gcc.gnu.org>
+       * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Lower
+       vec_perm cost to 1 for non-Power7 VSX architectures.
+ 2019-09-29  Kewen Lin  <linkw@gcc.gnu.org>
+       * config/rs6000/vsx.md (vec_pack[su]_float_v2di): New define_expand.
+       (vec_unpack_[su]fix_trunc_hi_v4sf): Likewise.
+       (vec_unpack_[su]fix_trunc_lo_v4sf): Likewise.
+ 2019-09-28  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/darwin.c (gen_macho_high): Amend to include the mode
+       argument.
+       (machopic_indirect_data_reference): Amend gen_macho_high call
+       to include mode argument.
+       (machopic_legitimize_pic_address): Likewise.
+       * config/rs6000/rs6000.c (rs6000_legitimize_address):
+       * config/rs6000/darwin.md (@macho_high_<mode>): New, replaces
+       the macho_high expander and two define_insn entries.
+ 2019-09-28  Oleg Endo  <olegendo@gcc.gnu.org>
+       PR target/86805
+       * config/sh/sh.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define.
+ 2019-09-28  Oleg Endo  <olegendo@gcc.gnu.org>
+       PR target/80672
+       * config/sh/sh.c (parse_validate_atomic_model_option): Use
+       std::string::compare instead of std::string::find.
+ 2019-09-27  Maciej W. Rozycki  <macro@wdc.com>
+       * configure: Regenerate.
+ 2019-09-27  Jakub Jelinek  <jakub@redhat.com>
+       PR middle-end/91920
+       * gimplify.c (omp_default_clause): Predetermine DECL_IN_CONSTANT_POOL
+       variables as shared.
+ 2019-09-27  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/rs6000/darwin.md (@macho_correct_pic_<mode>): New,
+       replaces the expander and two define_insn entries.
+       (@reload_macho_picbase_<mode>): Update gen_macho_correct_pic
+       call.
+       * config/rs6000/rs6000.md (builtin_setjmp_receiver): Likewise.
+ 2019-09-27  David Malcolm  <dmalcolm@redhat.com>
+       * fibonacci_heap.h (fibonacci_heap::empty): Make const.
+       (fibonacci_heap::nodes): Likewise.
+       (fibonacci_heap::min_key): Likewise.
+       (fibonacci_heap::min): Likewise.
+ 2019-09-27  David Malcolm  <dmalcolm@redhat.com>
+       * cgraph.c (cgraph_node::get_fun): Make const.
+       * cgraph.h (cgraph_node::get_fun): Likewise.
+ 2019-09-27  Jakub Jelinek  <jakub@redhat.com>
+       PR target/91919
+       * config/arm/arm.md (<US>mlal): Remove SE wrappers around operands
+       of SImode MULT.
+ 2019-09-27  Richard Biener  <rguenther@suse.de>
+       * tree-vectorizer.h (_stmt_vec_info::reduc_fn): New.
+       (STMT_VINFO_REDUC_FN): Likewise.
+       * tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
+       STMT_VINFO_REDUC_FN.
+       * tree-vect-loop.c (vect_is_simple_reduction): Fix STMT_VINFO_REDUC_IDX
+       for condition reductions.
+       (vect_create_epilog_for_reduction): Compute all required state
+       from the stmt to be vectorized.
+       (vectorizable_reduction): Simplify vect_create_epilog_for_reduction
+       invocation and remove then dead code.  For single def-use chains
+       record only a single vector stmt.
+ 2019-09-27  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64-protos.h (aarch64_builtin_class): New enum.
+       (AARCH64_BUILTIN_SHIFT, AARCH64_BUILTIN_CLASS): New constants.
+       (aarch64_gimple_fold_builtin, aarch64_mangle_builtin_type)
+       (aarch64_fold_builtin, aarch64_init_builtins, aarch64_expand_builtin):
+       (aarch64_builtin_decl, aarch64_builtin_rsqrt): Delete.
+       (aarch64_general_mangle_builtin_type, aarch64_general_init_builtins):
+       (aarch64_general_fold_builtin, aarch64_general_gimple_fold_builtin):
+       (aarch64_general_expand_builtin, aarch64_general_builtin_decl):
+       (aarch64_general_builtin_rsqrt): Declare.
+       * config/aarch64/aarch64-builtins.c (aarch64_general_add_builtin):
+       New function.
+       (aarch64_mangle_builtin_type): Rename to...
+       (aarch64_general_mangle_builtin_type): ...this.
+       (aarch64_init_fcmla_laneq_builtins, aarch64_init_simd_builtins)
+       (aarch64_init_crc32_builtins, aarch64_init_builtin_rsqrt)
+       (aarch64_init_pauth_hint_builtins, aarch64_init_tme_builtins): Use
+       aarch64_general_add_builtin instead of add_builtin_function.
+       (aarch64_init_builtins): Rename to...
+       (aarch64_general_init_builtins): ...this.  Use
+       aarch64_general_add_builtin instead of add_builtin_function.
+       (aarch64_builtin_decl): Rename to...
+       (aarch64_general_builtin_decl): ...this and remove the unused
+       arguments.
+       (aarch64_expand_builtin): Rename to...
+       (aarch64_general_expand_builtin): ...this and remove the unused
+       arguments.
+       (aarch64_builtin_rsqrt): Rename to...
+       (aarch64_general_builtin_rsqrt): ...this.
+       (aarch64_fold_builtin): Rename to...
+       (aarch64_general_fold_builtin): ...this.  Take the function subcode
+       and return type as arguments.  Remove the "ignored" argument.
+       (aarch64_gimple_fold_builtin): Rename to...
+       (aarch64_general_gimple_fold_builtin): ...this.  Take the function
+       subcode and gcall as arguments, and return the new function call.
+       * config/aarch64/aarch64.c (aarch64_init_builtins)
+       (aarch64_fold_builtin, aarch64_gimple_fold_builtin)
+       (aarch64_expand_builtin, aarch64_builtin_decl): New functions.
+       (aarch64_builtin_reciprocal): Call aarch64_general_builtin_rsqrt
+       instead of aarch64_builtin_rsqrt.
+       (aarch64_mangle_type): Call aarch64_general_mangle_builtin_type
+       instead of aarch64_mangle_builtin_type.
+ 2019-09-27  Richard Sandiford  <richard.sandiford@arm.com>
+       * target.def (check_builtin_call): New target hook.
+       * doc/tm.texi.in (TARGET_CHECK_BUILTIN_CALL): New @hook.
+       * doc/tm.texi: Regenerate.
+ 2019-09-27  Richard Sandiford  <richard.sandiford@arm.com>
+       PR tree-optimization/91909
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Take a
+       reduc_index parameter.  When handling COND_REDUCTION, make sure
+       that the reduction phi operand is in the correct arm of the
+       VEC_COND_EXPR.
+       (vectorizable_reduction): Pass reduc_index to the above.
+ 2019-09-27  Yuliang Wang  <yuliang.wang@arm.com>
+       * config/aarch64/aarch64-sve2.md (aarch64_sve2_sra<mode>):
+       New combine pattern.
+ 2019-09-26  Max Filippov  <jcmvbkbc@gmail.com>
+       * config/xtensa/xtensa.c (hwloop_optimize): Insert zero overhead
+       loop instruction into new basic block before the loop when basic
+       block that precedes the loop is empty.
+ 2019-09-26  Jakub Jelinek  <jakub@redhat.com>
+       * function.c (gimplify_parameters): Use build_clobber function.
+       * tree-ssa.c (execute_update_addresses_taken): Likewise.
+       * tree-inline.c (expand_call_inline): Likewise.
+       * tree-sra.c (clobber_subtree): Likewise.
+       * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
+       * omp-low.c (lower_rec_simd_input_clauses, lower_rec_input_clauses,
+       lower_omp_single, lower_depend_clauses, lower_omp_taskreg,
+       lower_omp_target): Likewise.
+       * omp-expand.c (expand_omp_for_generic): Likewise.
+       * omp-offload.c (ompdevlow_adjust_simt_enter): Likewise.
+ 2019-09-26  Will Schmidt <will_schmidt@vnet.ibm.com>
+       * config/rs6000/rs6000-builtin.def: (LVSL, LVSR, LVEBX, LVEHX,
+       LVEWX, LVXL, LVXL_V2DF, LVXL_V2DI, LVXL_V4SF, LVXL_V4SI, LVXL_V8HI,
+       LVXL_V16QI, LVX, LVX_V1TI, LVX_V2DF, LVX_V2DI, LVX_V4SF, LVX_V4SI,
+       LVX_V8HI, LVX_V16QI, LVLX, LVLXL, LVRX, LVRXL, LXSDX, LXVD2X_V1TI,
+       LXVD2X_V2DF, LXVD2X_V2DI, LXVDSX, LXVW4X_V4SF, LXVW4X_V4SI,
+       LXVW4X_V8HI, LXVW4X_V16QI, LD_ELEMREV_V1TI, LD_ELEMREV_V2DF,
+       LD_ELEMREV_V2DI, LD_ELEMREV_V4SF, LD_ELEMREV_V4SI, LD_ELEMREV_V8HI,
+       LD_ELEMREV_V16QI): Use the PURE attribute.
+ 2019-09-26  Iain Sandoe  <iain@sandoe.co.uk>
+       * config/rs6000/darwin.md: Replace the expanders for
+       load_macho_picbase and reload_macho_picbase with use of '@'
+       and <mode> in their respective define_insns.
+       (nonlocal_goto_receiver): Pass Pmode to gen_reload_macho_picbase.
+       * config/rs6000/rs6000-logue.c (rs6000_emit_prologue): Pass
+       Pmode to gen_load_macho_picbase.
+       * config/rs6000/rs6000.md: Likewise.
+ 2019-09-25  Richard Biener  <rguenther@suse.de>
+       PR tree-optimization/91896
+       * tree-vect-loop.c (vectorizable_reduction): The single
+       def-use cycle optimization cannot apply when there's more
+       than one pattern stmt involved.
+ 2019-09-26  Richard Biener  <rguenther@suse.de>
+       * tree-vect-loop.c (vect_analyze_loop_operations): Analyze
+       loop-closed PHIs that are vect_internal_def.
+       (vect_create_epilog_for_reduction): Exit early for nested cycles.
+       Simplify.
+       (vectorizable_lc_phi): New.
+       * tree-vect-stmts.c (vect_analyze_stmt): Call vectorize_lc_phi.
+       (vect_transform_stmt): Likewise.
+       * tree-vectorizer.h (stmt_vec_info_type): Add lc_phi_info_type.
+       (vectorizable_lc_phi): Declare.
+ 2019-09-26  Richard Biener  <rguenther@suse.de>
+       * tree-vect-loop.c (vect_analyze_loop_operations): Also call
+       vectorizable_reduction for vect_double_reduction_def.
+       (vect_transform_loop): Likewise.
+       (vect_create_epilog_for_reduction): Move double-reduction
+       PHI creation and preheader argument setting of PHIs ...
+       (vectorizable_reduction): ... here.  Also process
+       vect_double_reduction_def PHIs, creating the vectorized
+       PHI nodes, remembering the scalar adjustment computed for
+       the epilogue in STMT_VINFO_REDUC_EPILOGUE_ADJUSTMENT.
+       Remember the original reduction code in STMT_VINFO_REDUC_CODE.
+       * tree-vectorizer.c (vec_info::new_stmt_vec_info):
+       Initialize STMT_VINFO_REDUC_CODE.
+       * tree-vectorizer.h (_stmt_vec_info::reduc_epilogue_adjustment): New.
+       (_stmt_vec_info::reduc_code): Likewise.
+       (STMT_VINFO_REDUC_EPILOGUE_ADJUSTMENT): Likewise.
+       (STMT_VINFO_REDUC_CODE): Likewise.
+ 2019-09-26  Matt Turner  <mattst88@gmail.com>
+       PR driver/69471
+       * config/aarch64/aarch64.opt (march=): Add Negative(march=).
+       (mtune=): Add Negative(mtune=).
+       (mcpu=): Add Negative(mcpu=).
+       * config/arm/arm.opt: Likewise.
+ 2019-09-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+       * config/arm/arm.md (arm_<simd32_op>): New define_insn.
+       * config/arm/arm_acle.h (__smlald, __smlaldx, __smlsld, __smlsldx):
+       Define.
+       * config/arm/arm_acle.h: Define builtins for the above.
+       * config/arm/iterators.md (SIMD32_DIMODE): New int_iterator.
+       (simd32_op): Handle the above.
+       * config/arm/unspecs.md: Define unspecs for the above.
+ 2019-09-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+       * config/arm/arm.md (arm_<simd32_op>): New define_insn.
+       (arm_<sup>xtb16): Likewise.
+       (arm_usada8): Likewise.
+       * config/arm/arm_acle.h (__qadd8, __qsub8, __shadd8, __shsub8,
+       __uhadd8, __uhsub8, __uqadd8, __uqsub8, __qadd16, __qasx, __qsax,
+       __qsub16, __shadd16, __shasx, __shsax, __shsub16, __uhadd16, __uhasx,
+       __uhsax, __uhsub16, __uqadd16, __uqasx, __uqsax, __uqsub16, __sxtab16,
+       __sxtb16, __uxtab16, __uxtb16): Define.
+       * config/arm/arm_acle_builtins.def: Define builtins for the above.
+       * config/arm/unspecs.md: Define unspecs for the above.
+       * config/arm/iterators.md (SIMD32_NOGE_BINOP): New int_iterator.
+       (USXTB16): Likewise.
+       (simd32_op): New int_attribute.
+       (sup): Handle UNSPEC_SXTB16, UNSPEC_UXTB16.
+       * doc/sourcebuild.exp (arm_simd32_ok): Document.
+ 2019-09-26  Martin Jambor  <mjambor@suse.cz>
+       * ipa-sra.c (verify_splitting_accesses): Fix quoting in a call to
+       internal_error.
+ 2019-09-26  Martin Jambor  <mjambor@suse.cz>
+       * ipa-sra.c (process_scan_results): Fix continue condition.
+ 2019-09-26  Martin Liska  <mliska@suse.cz>
+       PR tree-optimization/91885
+       * tree-vectorizer.c (try_vectorize_loop_1): Add
+       TODO_update_ssa_only_virtuals similarly to what slp pass does.
+ 2019-09-26  Richard Sandiford  <richard.sandiford@arm.com>
+       * config/aarch64/aarch64.c (aarch64_rtx_costs): Use
+       aarch64_plus_immediate rather than aarch64_uimm12_shift
+       to test for valid PLUS immediates.
+ 2019-09-25  Martin Jambor  <mjambor@suse.cz>
+       * tree-sra.c (no_accesses_p): Remove.
+       (no_accesses_representant): Likewise.
+ 2019-09-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+       * config/aarch64/arm_neon.h (vaba_s8): Use __ in identifiers
+       consistenly.
+       (vaba_s16): Likewise.
+       (vaba_s32): Likewise.
+       (vaba_u8): Likewise.
+       (vaba_u16): Likewise.
+       (vaba_u32): Likewise.
+       (vabal_high_s8): Likewise.
+       (vabal_high_s16): Likewise.
+       (vabal_high_s32): Likewise.
+       (vabal_high_u8): Likewise.
+       (vabal_high_u16): Likewise.
+       (vabal_high_u32): Likewise.
+       (vabal_s8): Likewise.
+       (vabal_s16): Likewise.
+       (vabal_s32): Likewise.
+       (vabal_u8): Likewise.
+       (vabal_u16): Likewise.
+       (vabal_u32): Likewise.
+       (vabaq_s8): Likewise.
+       (vabaq_s16): Likewise.
+       (vabaq_s32): Likewise.
+       (vabaq_u8): Likewise.
+       (vabaq_u16): Likewise.
+       (vabaq_u32): Likewise.
+       (vabd_s8): Likewise.
+       (vabd_s16): Likewise.
+       (vabd_s32): Likewise.
+       (vabd_u8): Likewise.
+       (vabd_u16): Likewise.
+       (vabd_u32): Likewise.
+       (vabdl_high_s8): Likewise.
+       (vabdl_high_s16): Likewise.
+       (vabdl_high_s32): Likewise.
+       (vabdl_high_u8): Likewise.
+       (vabdl_high_u16): Likewise.
+       (vabdl_high_u32): Likewise.
+       (vabdl_s8): Likewise.
+       (vabdl_s16): Likewise.
+       (vabdl_s32): Likewise.
+       (vabdl_u8): Likewise.
+       (vabdl_u16): Likewise.
+       (vabdl_u32): Likewise.
+       (vabdq_s8): Likewise.
+       (vabdq_s16): Likewise.
+       (vabdq_s32): Likewise.
+       (vabdq_u8): Likewise.
+       (vabdq_u16): Likewise.
+       (vabdq_u32): Likewise.
+       (vaddlv_s8): Likewise.
+       (vaddlv_s16): Likewise.
+       (vaddlv_u8): Likewise.
+       (vaddlv_u16): Likewise.
+       (vaddlvq_s8): Likewise.
+       (vaddlvq_s16): Likewise.
+       (vaddlvq_s32): Likewise.
+       (vaddlvq_u8): Likewise.
+       (vaddlvq_u16): Likewise.
+       (vaddlvq_u32): Likewise.
+       (vcvtx_f32_f64): Likewise.
+       (vcvtx_high_f32_f64): Likewise.
+       (vcvtxd_f32_f64): Likewise.
+       (vmla_n_f32): Likewise.
+       (vmla_n_s16): Likewise.
+       (vmla_n_s32): Likewise.
+       (vmla_n_u16): Likewise.
+       (vmla_n_u32): Likewise.
+       (vmla_s8): Likewise.
+       (vmla_s16): Likewise.
+       (vmla_s32): Likewise.
+       (vmla_u8): Likewise.
+       (vmla_u16): Likewise.
+       (vmla_u32): Likewise.
+       (vmlal_high_n_s16): Likewise.
+       (vmlal_high_n_s32): Likewise.
+       (vmlal_high_n_u16): Likewise.
+       (vmlal_high_n_u32): Likewise.
+       (vmlal_high_s8): Likewise.
+       (vmlal_high_s16): Likewise.
+       (vmlal_high_s32): Likewise.
+       (vmlal_high_u8): Likewise.
+       (vmlal_high_u16): Likewise.
+       (vmlal_high_u32): Likewise.
+       (vmlal_n_s16): Likewise.
+       (vmlal_n_s32): Likewise.
+       (vmlal_n_u16): Likewise.
+       (vmlal_n_u32): Likewise.
+       (vmlal_s8): Likewise.
+       (vmlal_s16): Likewise.
+       (vmlal_s32): Likewise.
+       (vmlal_u8): Likewise.
+       (vmlal_u16): Likewise.
+       (vmlal_u32): Likewise.
+       (vmlaq_n_f32): Likewise.
+       (vmlaq_n_s16): Likewise.
+       (vmlaq_n_s32): Likewise.
+       (vmlaq_n_u16): Likewise.
+       (vmlaq_n_u32): Likewise.
+       (vmlaq_s8): Likewise.
+       (vmlaq_s16): Likewise.
+       (vmlaq_s32): Likewise.
+       (vmlaq_u8): Likewise.
+       (vmlaq_u16): Likewise.
+       (vmlaq_u32): Likewise.
+       (vmls_n_f32): Likewise.
+       (vmls_n_s16): Likewise.
+       (vmls_n_s32): Likewise.
+       (vmls_n_u16): Likewise.
+       (vmls_n_u32): Likewise.
+       (vmls_s8): Likewise.
+       (vmls_s16): Likewise.
+       (vmls_s32): Likewise.
+       (vmls_u8): Likewise.
+       (vmls_u16): Likewise.
+       (vmls_u32): Likewise.
+       (vmlsl_high_n_s16): Likewise.
+       (vmlsl_high_n_s32): Likewise.
+       (vmlsl_high_n_u16): Likewise.
+       (vmlsl_high_n_u32): Likewise.
+       (vmlsl_high_s8): Likewise.
+       (vmlsl_high_s16): Likewise.
+       (vmlsl_high_s32): Likewise.
+       (vmlsl_high_u8): Likewise.
+       (vmlsl_high_u16): Likewise.
+       (vmlsl_high_u32): Likewise.
+       (vmlsl_n_s16): Likewise.
+       (vmlsl_n_s32): Likewise.
+       (vmlsl_n_u16): Likewise.
+       (vmlsl_n_u32): Likewise.
+       (vmlsl_s8): Likewise.
+       (vmlsl_s16): Likewise.
+       (vmlsl_s32): Likewise.
+       (vmlsl_u8): Likewise.
+       (vmlsl_u16): Likewise.
+       (vmlsl_u32): Likewise.
+       (vmlsq_n_f32): Likewise.
+       (vmlsq_n_s16): Likewise.
+       (vmlsq_n_s32): Likewise.
+       (vmlsq_n_u16): Likewise.
+       (vmlsq_n_u32): Likewise.
+       (vmlsq_s8): Likewise.
+       (vmlsq_s16): Likewise.
+       (vmlsq_s32): Likewise.
+       (vmlsq_u8): Likewise.
+       (vmlsq_u16): Likewise.
+       (vmlsq_u32): Likewise.
+       (vmovl_high_s8): Likewise.
+       (vmovl_high_s16): Likewise.
+       (vmovl_high_s32): Likewise.
+       (vmovl_high_u8): Likewise.
+       (vmovl_high_u16): Likewise.
+       (vmovl_high_u32): Likewise.
+       (vmovl_s8): Likewise.
+       (vmovl_s16): Likewise.
+       (vmovl_s32): Likewise.
+       (vmovl_u8): Likewise.
+       (vmovl_u16): Likewise.
+       (vmovl_u32): Likewise.
+       (vmovn_high_s16): Likewise.
+       (vmovn_high_s32): Likewise.
+       (vmovn_high_s64): Likewise.
+       (vmovn_high_u16): Likewise.
+       (vmovn_high_u32): Likewise.
+       (vmovn_high_u64): Likewise.
+       (vmovn_s16): Likewise.
+       (vmovn_s32): Likewise.
+       (vmovn_s64): Likewise.
+       (vmovn_u16): Likewise.
+       (vmovn_u32): Likewise.
+       (vmovn_u64): Likewise.
+       (vmull_high_n_s16): Likewise.
+       (vmull_high_n_s32): Likewise.
+       (vmull_high_n_u16): Likewise.
+       (vmull_high_n_u32): Likewise.
+       (vmull_high_p8): Likewise.
+       (vmull_high_s8): Likewise.
+       (vmull_high_s16): Likewise.
+       (vmull_high_s32): Likewise.
+       (vmull_high_u8): Likewise.
+       (vmull_high_u16): Likewise.
+       (vmull_high_u32): Likewise.
+       (vmull_n_s16): Likewise.
+       (vmull_n_s32): Likewise.
+       (vmull_n_u16): Likewise.
+       (vmull_n_u32): Likewise.
+       (vmull_p8): Likewise.
+       (vmull_s8): Likewise.
+       (vmull_s16): Likewise.
+       (vmull_s32): Likewise.
+       (vmull_u8): Likewise.
+       (vmull_u16): Likewise.
+       (vmull_u32): Likewise.
+       (vpadal_s8): Likewise.
+       (vpadal_s16): Likewise.
+       (vpadal_s32): Likewise.
+       (vpadal_u8): Likewise.
+       (vpadal_u16): Likewise.
+       (vpadal_u32): Likewise.
+       (vpadalq_s8): Likewise.
+       (vpadalq_s16): Likewise.
+       (vpadalq_s32): Likewise.
+       (vpadalq_u8): Likewise.
+       (vpadalq_u16): Likewise.
+       (vpadalq_u32): Likewise.
+       (vpaddl_s8): Likewise.
+       (vpaddl_s16): Likewise.
+       (vpaddl_s32): Likewise.
+       (vpaddl_u8): Likewise.
+       (vpaddl_u16): Likewise.
+       (vpaddl_u32): Likewise.
+       (vpaddlq_s8): Likewise.
+       (vpaddlq_s16): Likewise.
+       (vpaddlq_s32): Likewise.
+       (vpaddlq_u8): Likewise.
+       (vpaddlq_u16): Likewise.
+       (vpaddlq_u32): Likewise.
+       (vpaddq_s8): Likewise.
+       (vpaddq_s16): Likewise.
+       (vpaddq_s32): Likewise.
+       (vpaddq_s64): Likewise.
+       (vpaddq_u8): Likewise.
+       (vpaddq_u16): Likewise.
+       (vpaddq_u32): Likewise.
+       (vpaddq_u64): Likewise.
+       (vqdmulh_n_s16): Likewise.
+       (vqdmulh_n_s32): Likewise.
+       (vqdmulhq_n_s16): Likewise.
+       (vqdmulhq_n_s32): Likewise.
+       (vqmovn_high_s16): Likewise.
+       (vqmovn_high_s32): Likewise.
+       (vqmovn_high_s64): Likewise.
+       (vqmovn_high_u16): Likewise.
+       (vqmovn_high_u32): Likewise.
+       (vqmovn_high_u64): Likewise.
+       (vqmovun_high_s16): Likewise.
+       (vqmovun_high_s32): Likewise.
+       (vqmovun_high_s64): Likewise.
+       (vqrdmulh_n_s16): Likewise.
+       (vqrdmulh_n_s32): Likewise.
+       (vqrdmulhq_n_s16): Likewise.
+       (vqrdmulhq_n_s32): Likewise.
+       (vrsqrte_u32): Likewise.
+       (vrsqrteq_u32): Likewise.
+       (vtst_p8): Likewise.
+       (vtst_p16): Likewise.
+       (vtst_p64): Likewise.
+       (vtstq_p8): Likewise.
+       (vtstq_p16): Likewise.
+       (vtstq_p64): Likewise.
+       (vaddlv_s32): Likewise.
+       (vaddlv_u32): Likewise.
+       (vqtbl1_p8): Likewise.
+       (vqtbl1_s8): Likewise.
+       (vqtbl1_u8): Likewise.
+       (vqtbl1q_p8): Likewise.
+       (vqtbl1q_s8): Likewise.
+       (vqtbl1q_u8): Likewise.
+       (vqtbx1_s8): Likewise.
+       (vqtbx1_u8): Likewise.
+       (vqtbx1_p8): Likewise.
+       (vqtbx1q_s8): Likewise.
+       (vqtbx1q_u8): Likewise.
+       (vqtbx1q_p8): Likewise.
+       (vtbl1_s8): Likewise.
+       (vtbl1_u8): Likewise.
+       (vtbl1_p8): Likewise.
+       (vtbl2_s8): Likewise.
+       (vtbl2_u8): Likewise.
+       (vtbl2_p8): Likewise.
+       (vtbl3_s8): Likewise.
+       (vtbl3_u8): Likewise.
+       (vtbl3_p8): Likewise.
+       (vtbl4_s8): Likewise.
+       (vtbl4_u8): Likewise.
+       (vtbl4_p8): Likewise.
+       (vtbx2_s8): Likewise.
+       (vtbx2_u8): Likewise.
+       (vtbx2_p8): Likewise.
+       (vld1_f32): Likewise.
+       (vld1_f64): Likewise.
+       (vld1_p8): Likewise.
+       (vld1_p16): Likewise.
+       (vld1_p64): Likewise.
+       (vld1_s8): Likewise.
+       (vld1_s16): Likewise.
+       (vld1_s32): Likewise.
+       (vld1_s64): Likewise.
+       (vld1_u8): Likewise.
+       (vld1_u16): Likewise.
+       (vld1_u32): Likewise.
+       (vld1_u64): Likewise.
+       (vld1q_f32): Likewise.
+       (vld1q_f64): Likewise.
+       (vld1q_p8): Likewise.
+       (vld1q_p16): Likewise.
+       (vld1q_p64): Likewise.
+       (vld1q_s8): Likewise.
+       (vld1q_s16): Likewise.
+       (vld1q_s32): Likewise.
+       (vld1q_s64): Likewise.
+       (vld1q_u8): Likewise.
+       (vld1q_u16): Likewise.
+       (vld1q_u32): Likewise.
+       (vld1q_u64): Likewise.
+       (vpmax_s8): Likewise.
+       (vpmax_s16): Likewise.
+       (vpmax_s32): Likewise.
+       (vpmax_u8): Likewise.
+       (vpmax_u16): Likewise.
+       (vpmax_u32): Likewise.
+       (vpmaxq_s8): Likewise.
+       (vpmaxq_s16): Likewise.
+       (vpmaxq_s32): Likewise.
+       (vpmaxq_u8): Likewise.
+       (vpmaxq_u16): Likewise.
+       (vpmaxq_u32): Likewise.
+       (vpmax_f32): Likewise.
+       (vpmaxq_f32): Likewise.
+       (vpmaxq_f64): Likewise.
+       (vpmaxqd_f64): Likewise.
+       (vpmaxs_f32): Likewise.
+       (vpmaxnm_f32): Likewise.
+       (vpmaxnmq_f32): Likewise.
+       (vpmaxnmq_f64): Likewise.
+       (vpmaxnmqd_f64): Likewise.
+       (vpmaxnms_f32): Likewise.
+       (vpmin_s8): Likewise.
+       (vpmin_s16): Likewise.
+       (vpmin_s32): Likewise.
+       (vpmin_u8): Likewise.
+       (vpmin_u16): Likewise.
+       (vpmin_u32): Likewise.
+       (vpminq_s8): Likewise.
+       (vpminq_s16): Likewise.
+       (vpminq_s32): Likewise.
+       (vpminq_u8): Likewise.
+       (vpminq_u16): Likewise.
+       (vpminq_u32): Likewise.
+       (vpmin_f32): Likewise.
+       (vpminq_f32): Likewise.
+       (vpminq_f64): Likewise.
+       (vpminqd_f64): Likewise.
+       (vpmins_f32): Likewise.
+       (vpminnm_f32): Likewise.
+       (vpminnmq_f32): Likewise.
+       (vpminnmq_f64): Likewise.
+       (vpminnmqd_f64): Likewise.
+       (vpminnms_f32): Likewise.
+       (vmla_f32): Likewise.
+       (vmlaq_f32): Likewise.
+       (vmlaq_f64): Likewise.
+       (vmls_f32): Likewise.
+       (vmlsq_f32): Likewise.
+       (vmlsq_f64): Likewise.
+       (vqtbl2_s8): Likewise.
+       (vqtbl2_u8): Likewise.
+       (vqtbl2_p8): Likewise.
+       (vqtbl2q_s8): Likewise.
+       (vqtbl2q_u8): Likewise.
+       (vqtbl2q_p8): Likewise.
+       (vqtbl3_s8): Likewise.
+       (vqtbl3_u8): Likewise.
+       (vqtbl3_p8): Likewise.
+       (vqtbl3q_s8): Likewise.
+       (vqtbl3q_u8): Likewise.
+       (vqtbl3q_p8): Likewise.
+       (vqtbl4_s8): Likewise.
+       (vqtbl4_u8): Likewise.
+       (vqtbl4_p8): Likewise.
+       (vqtbl4q_s8): Likewise.
+       (vqtbl4q_u8): Likewise.
+       (vqtbl4q_p8): Likewise.
+       (vqtbx2_s8): Likewise.
+       (vqtbx2_u8): Likewise.
+       (vqtbx2_p8): Likewise.
+       (vqtbx2q_s8): Likewise.
+       (vqtbx2q_u8): Likewise.
+       (vqtbx2q_p8): Likewise.
+       (vqtbx3_s8): Likewise.
+       (vqtbx3_u8): Likewise.
+       (vqtbx3_p8): Likewise.
+       (vqtbx3q_s8): Likewise.
+       (vqtbx3q_u8): Likewise.
+       (vqtbx3q_p8): Likewise.
+       (vqtbx4_s8): Likewise.
+       (vqtbx4_u8): Likewise.
+       (vqtbx4_p8): Likewise.
+       (vqtbx4q_s8): Likewise.
+       (vqtbx4q_u8): Likewise.
+       (vqtbx4q_p8): Likewise.
+       (vrev16_p8): Likewise.
+       (vrev16_s8): Likewise.
+       (vrev16_u8): Likewise.
+       (vrev16q_p8): Likewise.
+       (vrev16q_s8): Likewise.
+       (vrev16q_u8): Likewise.
+       (vrev32_p8): Likewise.
+       (vrev32_p16): Likewise.
+       (vrev32_s8): Likewise.
+       (vrev32_s16): Likewise.
+       (vrev32_u8): Likewise.
+       (vrev32_u16): Likewise.
+       (vrev32q_p8): Likewise.
+       (vrev32q_p16): Likewise.
+       (vrev32q_s8): Likewise.
+       (vrev32q_s16): Likewise.
+       (vrev32q_u8): Likewise.
+       (vrev32q_u16): Likewise.
+       (vrev64_f32): Likewise.
+       (vrev64_p8): Likewise.
+       (vrev64_p16): Likewise.
+       (vrev64_s8): Likewise.
+       (vrev64_s16): Likewise.
+       (vrev64_s32): Likewise.
+       (vrev64_u8): Likewise.
+       (vrev64_u16): Likewise.
+       (vrev64_u32): Likewise.
+       (vrev64q_f32): Likewise.
+       (vrev64q_p8): Likewise.
+       (vrev64q_p16): Likewise.
+       (vrev64q_s8): Likewise.
+       (vrev64q_s16): Likewise.
+       (vrev64q_s32): Likewise.
+       (vrev64q_u8): Likewise.
+       (vrev64q_u16): Likewise.
+       (vrev64q_u32): Likewise.
+       (vsha1cq_u32): Likewise.
+       (vsha1mq_u32): Likewise.
+       (vsha1pq_u32): Likewise.
+       (vsha1h_u32): Likewise.
+       (vsha1su0q_u32): Likewise.
+       (vsha1su1q_u32): Likewise.
+       (vsha256hq_u32): Likewise.
+       (vsha256h2q_u32): Likewise.
+       (vsha256su0q_u32): Likewise.
+       (vsha256su1q_u32): Likewise.
+       (vmull_p64): Likewise.
+       (vmull_high_p64): Likewise.
+       (vsqrt_f32): Likewise.
+       (vsqrtq_f32): Likewise.
+       (vsqrt_f64): Likewise.
+       (vsqrtq_f64): Likewise.
+       (vst1_f32): Likewise.
+       (vst1_f64): Likewise.
+       (vst1_p8): Likewise.
+       (vst1_p16): Likewise.
+       (vst1_p64): Likewise.
+       (vst1_s8): Likewise.
+       (vst1_s16): Likewise.
+       (vst1_s32): Likewise.
+       (vst1_s64): Likewise.
+       (vst1_u8): Likewise.
+       (vst1_u16): Likewise.
+       (vst1_u32): Likewise.
+       (vst1_u64): Likewise.
+       (vst1q_f32): Likewise.
+       (vst1q_f64): Likewise.
+       (vst1q_p8): Likewise.
+       (vst1q_p16): Likewise.
+       (vst1q_p64): Likewise.
+       (vst1q_s8): Likewise.
+       (vst1q_s16): Likewise.
+       (vst1q_s32): Likewise.
+       (vst1q_s64): Likewise.
+       (vst1q_u8): Likewise.
+       (vst1q_u16): Likewise.
+       (vst1q_u32): Likewise.
+       (vst1q_u64): Likewise.
+       (vst1_s64_x2): Likewise.
+       (vst1_u64_x2): Likewise.
+       (vst1_f64_x2): Likewise.
+       (vst1_s8_x2): Likewise.
+       (vst1_p8_x2): Likewise.
+       (vst1_s16_x2): Likewise.
+       (vst1_p16_x2): Likewise.
        (vst1_s32_x2): Likewise.
        (vst1_u8_x2): Likewise.
        (vst1_u16_x2): Likewise.
diff --cc gcc/common.opt
Simple merge
diff --cc gcc/ira-costs.c
index bc010e223b14f63e5705c450f875ce4dea805802,baf7261ddfe66acbaecc827747713e8bc8252d99..5eeb7d74794ba11ed178ffc0552462555ed07176
@@@ -478,928 -473,6 +473,928 @@@ copy_cost (rtx x, machine_mode mode, re
  
  \f
  
-          || MEM_P (dest))
 +/* Some insn operand info after choosing an insn alternative.  */
 +struct op_info
 +{
 +  /* Flags of that insn alternative permits the operand to be in
 +     memory or an address.  */
 +  bool allows_mem_p;
 +  bool allows_addr_p;
 +  /* Class of the operand permitted by the insn alternative.  It is an
 +     approximation.  The accuracy can be improved if we have a set of
 +     register classes.  Does we need such accuracy?  The question is
 +     open.  */
 +  enum reg_class op_class;
 +};
 +
 +/* Container of the above info about the insn operands.  */
 +static vec<struct op_info> op_infos;
 +
 +/* Info about selected alternative of the insns.  We could use set of
 +   alternatives here.  Does it worth spent time for keeping and
 +   processing more one alternative?  The question is open.  */
 +struct insn_selection
 +{
 +  /* Number of the selcted alternative.  */
 +  int alt;
 +  /* Start index of the insn operands info in op_infos.  */
 +  int op_info_start;
 +};
 +
 +/* Container of the above info about the selected insns
 +   alternative.  */
 +static vec<struct insn_selection> insn_selections;
 +
 +/* True if X is a constant that can be forced into the constant pool.
 +   MODE is the mode of the operand, or VOIDmode if not known.  */
 +#define CONST_POOL_OK_P(MODE, X)              \
 +  ((MODE) != VOIDmode                         \
 +   && CONSTANT_P (X)                          \
 +   && GET_CODE (X) != HIGH                    \
 +   && !targetm.cannot_force_const_mem (MODE, X))
 +
 +/* True if C is a non-empty register class that has too few registers
 +   to be safely used as a reload target class.        */
 +#define SMALL_REGISTER_CLASS_P(C)                                     \
 +  (reg_class_size [(C)] == 1                                          \
 +   || (reg_class_size [(C)] >= 1 && targetm.class_likely_spilled_p (C)))
 +
 +static inline bool
 +general_constant_p (rtx x)
 +{
 +  return CONSTANT_P (x) && (! flag_pic || LEGITIMATE_PIC_OPERAND_P (x));
 +}
 +
 +/* A container used for quick access to operand constraints for given
 +   alternative.  Use preferred pseudo reg classes from the previous
 +   pass when it is possible.  */
 +static vec<const char *> insn_constraints;
 +
 +/* Choose INSN alternative and setup corresponding elements of
 +   INSN_SELECTIONS and OP_INFOS.  */
 +static void
 +setup_insn_alt (rtx_insn *insn)
 +{
 +  bool ok_p = false;
 +  int nop, best_overall, overall, nalt, i, m, len, uid;
 +  /* LOSERS counts the operands that don't fit this alternative and
 +     would require loading.  */
 +  int best_losers, losers;
 +  /* REJECT is a count of how undesirable this alternative says it is
 +     if any reloading is required.  If the alternative matches exactly
 +     then REJECT is ignored, but otherwise it gets this much counted
 +     against it in addition to the reloading needed.  */
 +  int reject;
 +  enum reg_class curr_alt[MAX_RECOG_OPERANDS];
 +  enum reg_class goal_op_alt[MAX_RECOG_OPERANDS];
 +  bool curr_alt_win[MAX_RECOG_OPERANDS];
 +  bool curr_alt_offmemok[MAX_RECOG_OPERANDS];
 +  bool goal_alt_offmemok[MAX_RECOG_OPERANDS];
 +  bool curr_alt_addrok[MAX_RECOG_OPERANDS];
 +  bool goal_alt_addrok[MAX_RECOG_OPERANDS];
 +  int curr_alt_matches[MAX_RECOG_OPERANDS];
 +  rtx op;
 +  /* The register when the operand is a subreg of register, otherwise the
 +     operand itself.  */
 +  rtx no_subreg_reg_operand[MAX_RECOG_OPERANDS];
 +  /* The register if the operand is a register or subreg of register,
 +     otherwise NULL.  */
 +  rtx operand_reg[MAX_RECOG_OPERANDS];
 +  enum op_type operand_type[MAX_RECOG_OPERANDS];
 +  int hard_regno[MAX_RECOG_OPERANDS];
 +  bool curr_swapped, goal_alt_swapped = false;
 +  bool early_clobber_p[MAX_RECOG_OPERANDS];
 +  int best_reload_nregs = 0, reload_nregs;
 +  bool costly_p, addrok;
 +  enum reg_class cl;
 +  enum constraint_num cn;
 +  enum machine_mode curr_operand_mode[MAX_RECOG_OPERANDS];
 +  enum machine_mode mode;
 +  int goal_alt_number = -1;
 +  int commutative = -1;
 +  bool no_input_reloads_p, no_output_reloads_p;
 +  rtx set;
 +  const char *p;
 +
 +  uid = INSN_UID (insn);
 +  len = insn_selections.length ();
 +  if (len <= uid)
 +    {
 +      insn_selections.safe_grow (uid + 1);
 +      for (i = len; i <= uid; i++)
 +      insn_selections[i].alt = -1;
 +    }
 +  if (!NONDEBUG_INSN_P (insn))
 +    {
 +      insn_selections[INSN_UID (insn)].alt = -1;
 +      return;
 +    }
 +  if ((set = single_set (insn)) != NULL_RTX)
 +    {
 +      rtx dest = SET_DEST (set);
 +      rtx src = SET_SRC (set);
 +
 +      if (GET_CODE (dest) == SUBREG)
 +      dest = SUBREG_REG (dest);
 +      if (GET_CODE (src) == SUBREG)
 +      src = SUBREG_REG (src);
 +      if (((REG_P (dest) && REGNO (dest) >= FIRST_PSEUDO_REGISTER)
-             || MEM_P (src)))
++         || 0&&MEM_P (dest))
 +        && ((REG_P (src) && REGNO (src) >= FIRST_PSEUDO_REGISTER)
++            || 0&&MEM_P (src)))
 +      {
 +        if (ira_dump_file != NULL)
 +          fprintf (ira_dump_file, "insn %d is move -- ignore\n", INSN_UID (insn));
 +        insn_selections[INSN_UID (insn)].alt = -1;
 +        return;
 +      }
 +    }
 +  no_input_reloads_p = no_output_reloads_p = false;
 +  /* JUMP_INSNs and CALL_INSNs are not allowed to have any output
 +     reloads; neither are insns that SET cc0.  Insns that use CC0 are
 +     not allowed to have any input reloads.  */
 +  if (JUMP_P (insn) || CALL_P (insn))
 +    no_output_reloads_p = true;
 +#ifdef HAVE_cc0
 +  if (reg_referenced_p (cc0_rtx, PATTERN (insn)))
 +    no_input_reloads_p = true;
 +  if (reg_set_p (cc0_rtx, PATTERN (insn)))
 +    no_output_reloads_p = true;
 +#endif
 +  insn_constraints.truncate (0);
 +  insn_constraints.safe_grow_cleared (recog_data.n_operands
 +                                    * recog_data.n_alternatives + 1);
 +  best_losers = best_overall = INT_MAX;
 +  for (curr_swapped = false;;curr_swapped = true)
 +    {
 +      /* Calculate some data common for all alternatives to speed up the
 +       function.  */
 +      for (nop = 0; nop < recog_data.n_operands; nop++)
 +      {
 +        operand_type[nop] = OP_IN;
 +        op = no_subreg_reg_operand[nop] = recog_data.operand[nop];
 +        operand_reg[nop] = op;
 +        hard_regno[nop] = -1;
 +        if (GET_CODE (operand_reg[nop]) == SUBREG)
 +          operand_reg[nop] = SUBREG_REG (operand_reg[nop]);
 +        if (REG_P (operand_reg[nop]))
 +          {
 +            no_subreg_reg_operand[nop] = operand_reg[nop];
 +            if (REGNO (operand_reg[nop]) < FIRST_PSEUDO_REGISTER)
 +              hard_regno[nop] = REGNO (operand_reg[nop]);
 +          }
 +        else
 +          operand_reg[nop] = NULL_RTX;
 +        for (nalt = 0, p = recog_data.constraints[nop];
 +             nalt < recog_data.n_alternatives;
 +             nalt++)
 +          {
 +            insn_constraints[nop * recog_data.n_alternatives + nalt] = p;
 +            while (*p && *p != ',')
 +              p++;
 +            if (*p)
 +              p++;
 +          }
 +        mode = GET_MODE (recog_data.operand[nop]);
 +        curr_operand_mode[nop] = mode;
 +      }
 +      
 +      alternative_mask enabled = get_enabled_alternatives (insn);
 +      /* The constraints are made of several alternatives. Each operand's
 +       constraint looks like foo,bar,... with commas separating the
 +       alternatives.  The first alternatives for all operands go
 +       together, the second alternatives go together, etc.
 +       
 +       First loop over alternatives.  */
 +      for (nalt = 0; nalt < recog_data.n_alternatives; nalt++)
 +      {
 +        /* Loop over operands for one constraint alternative.  */
 +        if (!TEST_BIT (enabled, nalt))
 +          continue;
 +        
 +        overall = losers = reject = reload_nregs = 0;
 +        
 +        for (nop = 0; nop < recog_data.n_operands; nop++)
 +          {
 +            int len, c, this_alternative_matches;
 +            bool win, did_match, offmemok;
 +            /* false => this operand can be reloaded somehow for this
 +               alternative.  */
 +            bool badop;
 +            /* true => this operand can be reloaded if the alternative
 +               allows regs.  */
 +            bool winreg;
 +            /* True if a constant forced into memory would be OK for
 +               this operand.  */
 +            bool constmemok;
 +            enum reg_class this_alternative, this_costly_alternative;
 +            bool this_alternative_win;
 +            bool this_alternative_offmemok;
 +            bool scratch_p;
 +            enum machine_mode mode;
 +
 +            p = insn_constraints[nop * recog_data.n_alternatives + nalt];
 +            if (*p == 0 || *p == ',')
 +              {
 +                /* Fast track for no constraints at all.      */
 +                curr_alt[nop] = NO_REGS;
 +                curr_alt_win[nop] = true;
 +                curr_alt_offmemok[nop] = false;
 +                curr_alt_addrok[nop] = false;
 +                curr_alt_matches[nop] = -1;
 +                continue;
 +              }
 +            
 +            op = no_subreg_reg_operand[nop];
 +            mode = curr_operand_mode[nop];
 +            
 +            win = did_match = winreg = offmemok = constmemok = addrok = false;
 +            badop = true;
 +            
 +            early_clobber_p[nop] = false;
 +            
 +            this_costly_alternative = this_alternative = NO_REGS;
 +            this_alternative_win = false;
 +            this_alternative_offmemok = false;
 +            this_alternative_matches = -1;
 +            scratch_p = GET_CODE (no_subreg_reg_operand[nop]) == SCRATCH;
 +            
 +            /* Scan this alternative's specs for this operand; set WIN
 +               if the operand fits any letter in this alternative.
 +               Otherwise, clear BADOP if this operand could fit some
 +               letter after reloads, or set WINREG if this operand could
 +               fit after reloads provided the constraint allows some
 +               registers.      */
 +            costly_p = false;
 +            do
 +              {
 +                switch ((c = *p, len = CONSTRAINT_LEN (c, p)), c)
 +                  {
 +                  case '\0':
 +                    len = 0;
 +                    break;
 +                  case ',':
 +                    c = '\0';
 +                    break;
 +                  case '=':
 +                    operand_type[nop] = OP_OUT;
 +                    break;
 +                  case '+':
 +                    operand_type[nop] = OP_INOUT;
 +                    break;
 +                  case ' ': case '\t':
 +                    break;
 +                  case '*':
 +                    /* Ignore the next letter for this pass.  */
 +                    c = *++p;
 +                    len = CONSTRAINT_LEN (c, p);
 +                    break;
 +                  case '^':
 +                  case '?':
 +                    reject += 6;
 +                    break;
 +                  case '!':
 +                    reject += 600;
 +                    break;
 +                  case '%':
 +                    /* We only support one commutative marker, the first
 +                       one.  We already set commutative above.  */
 +                    if (commutative < 0)
 +                      commutative = nop;
 +                    break;
 +                  case '&':
 +                    early_clobber_p[nop] = true;
 +                    break;
 +                    
 +                  case '#':
 +                    /* Ignore rest of this alternative.  */
 +                    do
 +                      p++;
 +                    while (*p && *p != ',');
 +                    c = '\0';
 +                    break;
 +                    
 +                  case '0':  case '1':  case '2':      case '3':  case '4':
 +                  case '5':  case '6':  case '7':      case '8':  case '9':
 +                    {
 +                      char *end;
 +                      bool match_p;
 +                      
 +                      m = strtoul (p, &end, 10);
 +                      p = end;
 +                      len = 0;
 +                      ira_assert (nop > m);
 +                      
 +                      this_alternative_matches = m;
 +                      /* We are supposed to match a previous
 +                         operand.  If we do, we win if that one did.
 +                         If we do not, count both of the operands as
 +                         losers.  (This is too conservative, since
 +                         most of the time only a single reload insn
 +                         will be needed to make the two operands
 +                         win.  As a result, this alternative may be
 +                         rejected when it is actually
 +                         desirable.)  */
 +                      match_p = false;
 +                      if (rtx_equal_p (recog_data.operand[nop],
 +                                       recog_data.operand[m]))
 +                        {
 +                          /* We should reject matching of an early
 +                             clobber operand if the matching operand is
 +                             not dying in the insn.  */
 +                          if (! early_clobber_p[m]
 +                              || operand_reg[nop] == NULL_RTX
 +                              || (find_regno_note (insn, REG_DEAD,
 +                                                   REGNO (op))
 +                                  || REGNO (op) == REGNO (operand_reg[m])))
 +                            match_p = true;
 +                        }
 +                      if (match_p)
 +                        {
 +                          /* If we are matching a non-offsettable
 +                             address where an offsettable address
 +                             was expected, then we must reject this
 +                             combination, because we can't reload
 +                             it.  */
 +                          if (curr_alt_offmemok[m]
 +                              && MEM_P (recog_data.operand[m])
 +                              && curr_alt[m] == NO_REGS && ! curr_alt_win[m])
 +                            continue;
 +                          
 +                        }
 +                      else
 +                        {
 +                          /* Operands don't match.  Both operands must
 +                             allow a reload register, otherwise we
 +                             cannot make them match.  */
 +                          if (curr_alt[m] == NO_REGS)
 +                            break;
 +                          /* Retroactively mark the operand we had to
 +                             match as a loser, if it wasn't already and
 +                             it wasn't matched to a register constraint
 +                             (e.g it might be matched by memory). */
 +                          if (curr_alt_win[m] && operand_reg[m] == NULL_RTX)
 +                            {
 +                              losers++;
 +                              reload_nregs
 +                                += (ira_reg_class_max_nregs[curr_alt[m]]
 +                                    [GET_MODE (recog_data.operand[m])]);
 +                            }
 +                          
 +                          /* We prefer no matching alternatives because
 +                             it gives more freedom in RA.      */
 +                          if (operand_reg[nop] == NULL_RTX
 +                              || (find_regno_note (insn, REG_DEAD,
 +                                                   REGNO (operand_reg[nop]))
 +                                  == NULL_RTX))
 +                            reject += 2;
 +                        }
 +                      /* If we have to reload this operand and some
 +                         previous operand also had to match the same
 +                         thing as this operand, we don't know how to do
 +                         that.  */
 +                      if (!match_p || !curr_alt_win[m])
 +                        {
 +                          for (i = 0; i < nop; i++)
 +                            if (curr_alt_matches[i] == m)
 +                              break;
 +                          if (i < nop)
 +                            break;
 +                        }
 +                      else
 +                        did_match = true;
 +                      
 +                      /* This can be fixed with reloads if the operand
 +                         we are supposed to match can be fixed with
 +                         reloads. */
 +                      badop = false;
 +                      this_alternative = curr_alt[m];
 +                      winreg = this_alternative != NO_REGS;
 +                      break;
 +                    }
 +
 +                  case 'g':
 +                    if (MEM_P (op) || general_constant_p (op))
 +                      win = true;
 +                    /* Drop through into 'r' case.  */
 +                    cl = GENERAL_REGS;
 +                    goto reg;
 +
 +                  default:
 +                    cn = lookup_constraint (p);
 +                    switch (get_constraint_type (cn))
 +                      {
 +                      case CT_REGISTER:
 +                        cl = reg_class_for_constraint (cn);
 +                        if (cl != NO_REGS)
 +                          goto reg;
 +                        break;
 +                        
 +                      case CT_CONST_INT:
 +                        if (CONST_INT_P (op)
 +                            && insn_const_int_ok_for_constraint (INTVAL (op), cn))
 +                          win = true;
 +                        break;
 +
 +                      case CT_MEMORY:
 +                        if (constraint_satisfied_p (op, cn))
 +                          win = true;
 +
 +                        /* If we didn't already win, we can reload
 +                           constants via force_const_mem or put the
 +                           pseudo value into memory, or make other
 +                           memory by reloading the address like for
 +                           'o'.  */
 +                        if (CONST_POOL_OK_P (mode, op)
 +                            || MEM_P (op) || REG_P (op))
 +                          badop = false;
 +                        constmemok = true;
 +                        offmemok = true;
 +                        break;
 +
 +                      case CT_ADDRESS:
 +                        /* If we didn't already win, we can reload
 +                           the address into a base register.  */
 +                        if (constraint_satisfied_p (op, cn))
 +                          win = true;
 +                        cl = base_reg_class (VOIDmode, ADDR_SPACE_GENERIC,
 +                                             ADDRESS, SCRATCH);
 +                        badop = false;
 +                        addrok = true;
 +                        goto reg;
 +
 +                      case CT_FIXED_FORM:
 +                        if (constraint_satisfied_p (op, cn))
 +                          win = true;
 +                        break;
 +
 +                      case CT_SPECIAL_MEMORY:
 +                        if (constraint_satisfied_p (op, cn))
 +                          win = true;
 +                        break;
 +                      }
 +                    break;
 +                    
 +                  reg:
 +                    this_alternative
 +                      = reg_class_subunion[this_alternative][cl];
 +                    if (costly_p)
 +                      this_costly_alternative
 +                        = (reg_class_subunion
 +                           [this_costly_alternative][cl]);
 +                    if (mode == BLKmode)
 +                      break;
 +                    winreg = true;
 +                    if (hard_regno[nop] >= 0)
 +                      {
 +                        if (in_hard_reg_set_p (reg_class_contents[this_alternative],
 +                                               mode, hard_regno[nop]))
 +                          win = true;
 +                      }
 +                    else if ((pref == NULL && REG_P (op)) || scratch_p)
 +                      win = true;
 +                    else if (pref != NULL &&  REG_P (op)
 +                             && REGNO (op) >= FIRST_PSEUDO_REGISTER
 +                             && pref[COST_INDEX (REGNO (op))] != NO_REGS
 +                             && (ira_class_subset_p
 +                                 [pref[COST_INDEX (REGNO (op))]][this_alternative]))
 +                      win = true;
 +                    break;
 +                  }
 +                if (c != ' ' && c != '\t')
 +                  costly_p = c == '*';
 +              }
 +            while ((p += len), c);
 +            
 +            /* Record which operands fit this alternative.  */
 +            if (win)
 +              {
 +                this_alternative_win = true;
 +                if (operand_reg[nop] != NULL_RTX || scratch_p)
 +                  {
 +                    if (this_costly_alternative == this_alternative
 +                        || (hard_regno[nop] >= 0
 +                            && in_hard_reg_set_p (reg_class_contents
 +                                                  [this_costly_alternative],
 +                                                  mode, hard_regno[nop]))
 +                        || (pref != NULL &&  REG_P (op)
 +                            && REGNO (op) >= FIRST_PSEUDO_REGISTER
 +                            && (ira_class_subset_p
 +                                [pref[COST_INDEX (REGNO (op))]]
 +                                [this_costly_alternative])))
 +                      reject++;
 +                  }
 +              }
 +            else if (did_match)
 +              ;
 +            else
 +              {
 +                int const_to_mem = 0;
 +                bool no_regs_p;
 +                
 +                /* If this alternative asks for a specific reg class, see if there
 +                   is at least one allocatable register in that class.  */
 +                no_regs_p
 +                  = (this_alternative == NO_REGS
 +                     || (hard_reg_set_subset_p
 +                         (reg_class_contents[this_alternative],
 +                          ira_no_alloc_regs)));
 +                
 +                /* For asms, verify that the class for this alternative is possible
 +                   for the mode that is specified.  */
 +                if (!no_regs_p && INSN_CODE (insn) < 0)
 +                  {
 +                    int i;
 +                    for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
 +                      if (targetm.hard_regno_mode_ok (i, mode)
 +                          && in_hard_reg_set_p (reg_class_contents[this_alternative],
 +                                                mode, i))
 +                        break;
 +                    if (i == FIRST_PSEUDO_REGISTER)
 +                      winreg = false;
 +                  }
 +                
 +                /* If this operand accepts a register, and if the
 +                   register class has at least one allocatable register,
 +                   then this operand can be reloaded.  */
 +                if (winreg && !no_regs_p)
 +                  badop = false;
 +                
 +                if (badop)
 +                  goto fail;
 +                
 +                this_alternative_offmemok = offmemok;
 +                if (this_costly_alternative != NO_REGS)
 +                  reject++;
 +                /* If the operand is dying, has a matching constraint,
 +                   and satisfies constraints of the matched operand
 +                   which failed to satisfy the own constraints, we do
 +                   not need to generate a reload insn for this
 +                   operand.  */
 +                if (!(this_alternative_matches >= 0
 +                      && !curr_alt_win[this_alternative_matches]
 +                      && REG_P (op)
 +                      && find_regno_note (insn, REG_DEAD, REGNO (op))
 +                      && ((hard_regno[nop] >= 0
 +                           && in_hard_reg_set_p (reg_class_contents
 +                                                 [curr_alt[this_alternative_matches]],
 +                                                 mode, hard_regno[nop]))
 +                          || pref == NULL
 +                          || (REGNO (op) >= FIRST_PSEUDO_REGISTER
 +                              && pref[COST_INDEX (REGNO (op))] != NO_REGS
 +                              && (ira_class_subset_p
 +                                  [pref[COST_INDEX (REGNO (op))]]
 +                                  [curr_alt[this_alternative_matches]])))))
 +                  losers++;
 +                /* If this is a constant that is reloaded into the
 +                   desired class by copying it to memory first, count
 +                   that as another reload.  This is consistent with
 +                   other code and is required to avoid choosing another
 +                   alternative when the constant is moved into memory.
 +                   Note that the test here is precisely the same as in
 +                   the code below that calls force_const_mem.  */
 +                if (CONST_POOL_OK_P (mode, op)
 +                    && ((targetm.preferred_reload_class
 +                         (op, this_alternative) == NO_REGS)
 +                        || no_input_reloads_p))
 +                  {
 +                    const_to_mem = 1;
 +                    if (! no_regs_p)
 +                      losers++;
 +                  }
 +                
 +                /* Alternative loses if it requires a type of reload not
 +                   permitted for this insn.  We can always reload
 +                   objects with a REG_UNUSED note.  */
 +                if ((operand_type[nop] != OP_IN
 +                     && no_output_reloads_p
 +                     && ! find_reg_note (insn, REG_UNUSED, op))
 +                    || (operand_type[nop] != OP_OUT
 +                        && no_input_reloads_p && ! const_to_mem))
 +                  goto fail;
 +                
 +                /* Check strong discouragement of reload of non-constant
 +                   into class THIS_ALTERNATIVE.  */
 +                if (! CONSTANT_P (op) && ! no_regs_p
 +                    && (targetm.preferred_reload_class
 +                        (op, this_alternative) == NO_REGS
 +                        || (operand_type[nop] == OP_OUT
 +                            && (targetm.preferred_output_reload_class
 +                                (op, this_alternative) == NO_REGS))))
 +                  reject += 600;
 +                
 +                if (! (MEM_P (op) && offmemok)
 +                    && ! (const_to_mem && constmemok))
 +                  {
 +                    /* We prefer to reload pseudos over reloading
 +                       other things, since such reloads may be able
 +                       to be eliminated later.  So bump REJECT in
 +                       other cases.  Don't do this in the case where
 +                       we are forcing a constant into memory and it
 +                       will then win since we don't want to have a
 +                       different alternative match then.  */
 +                    if (! (scratch_p
 +                           || (REG_P (op) && REGNO (op) >= FIRST_PSEUDO_REGISTER)))
 +                      reject += 2;
 +                    
 +                    if (! no_regs_p)
 +                      reload_nregs
 +                        += ira_reg_class_max_nregs[this_alternative][mode];
 +                    
 +                    if (SMALL_REGISTER_CLASS_P (this_alternative))
 +                      reject += 3;
 +                  }
 +                
 +                /* We are trying to spill pseudo into memory.  It is
 +                   usually more costly than moving to a hard
 +                   register although it might takes the same number
 +                   of reloads.  */
 +                if (no_regs_p && (REG_P (op) || scratch_p))
 +                  reject += 3;
 +                
 +                /* Input reloads can be inherited more often than
 +                   output reloads can be removed, so penalize output
 +                   reloads.  */
 +                if (! (REG_P (op) || scratch_p) || operand_type[nop] != OP_IN)
 +                  reject++;
 +              }
 +            
 +            if (early_clobber_p[nop] && ! scratch_p)
 +              reject++;
 +            
 +            /* ??? We check early clobbers after processing all
 +               operands (see loop below) and there we update the
 +               costs more.  Should we update the cost (may be
 +               approximately) here because of early clobber register
 +               reloads or it is a rare or non-important thing to be
 +               worth to do it.  */
 +            overall = losers * 6 + reject;
 +            if ((best_losers == 0 || losers != 0) && best_overall < overall)
 +              goto fail;
 +            
 +            curr_alt[nop] = this_alternative;
 +            curr_alt_win[nop] = this_alternative_win;
 +            curr_alt_offmemok[nop] = this_alternative_offmemok;
 +            curr_alt_addrok[nop] = addrok;
 +            curr_alt_matches[nop] = this_alternative_matches;
 +            
 +            if (this_alternative_matches >= 0
 +                && !did_match && !this_alternative_win)
 +              curr_alt_win[this_alternative_matches] = false;
 +          }
 +        ok_p = true;
 +        /* If this alternative can be made to work by reloading, and
 +           it needs less reloading than the others checked so far,
 +           record it as the chosen goal for reloading.  */
 +        if ((best_losers != 0 && losers == 0)
 +            || (((best_losers == 0 && losers == 0)
 +                 || (best_losers != 0 && losers != 0))
 +                && (best_overall > overall
 +                    || (best_overall == overall
 +                        /* If the cost of the reloads is the same,
 +                           prefer alternative which requires minimal
 +                           number of reload regs.  */
 +                    && (reload_nregs < best_reload_nregs
 +                        || (reload_nregs == best_reload_nregs
 +                            && nalt < goal_alt_number))))))
 +          {
 +            goal_alt_swapped = curr_swapped;
 +            for (nop = 0; nop < recog_data.n_operands; nop++)
 +              {
 +                goal_op_alt[nop] = curr_alt[nop];
 +                goal_alt_offmemok[nop] = curr_alt_offmemok[nop];
 +                goal_alt_addrok[nop] = curr_alt_addrok[nop];
 +                if ((m = curr_alt_matches[nop]) >= 0)
 +                  {
 +                    goal_op_alt[nop] = reg_class_subunion[curr_alt[m]][curr_alt[nop]];
 +                    if (curr_alt_offmemok[m])
 +                      goal_alt_offmemok[nop] = true;
 +                  }
 +              }
 +            best_overall = overall;
 +            best_losers = losers;
 +            best_reload_nregs = reload_nregs;
 +            goal_alt_number = nalt;
 +          }
 +        if (losers == 0)
 +          /* Everything is satisfied.  Do not process alternatives
 +             anymore.  */
 +          break;
 +      fail:
 +        ;
 +      }
 +      if (commutative < 0)
 +      break;
 +      if (curr_swapped)
 +      break;
 +      op = recog_data.operand[commutative];
 +      recog_data.operand[commutative] = recog_data.operand[commutative + 1];
 +      recog_data.operand[commutative + 1] = op;
 +    }
 +  if (curr_swapped)
 +    {
 +      op = recog_data.operand[commutative];
 +      recog_data.operand[commutative] = recog_data.operand[commutative + 1];
 +      recog_data.operand[commutative + 1] = op;
 +    }
 +  if (! ok_p)
 +    goal_alt_number = 0;
 +  if (ira_dump_file != NULL)
 +    {
 +      fprintf (ira_dump_file, "insn %u", uid);
 +      if (INSN_CODE (insn) >= 0
 +          && (p = get_insn_name (INSN_CODE (insn))) != NULL)
 +        fprintf (ira_dump_file, " {%s}", p);
 +      fprintf (ira_dump_file, " will use alt %d%s:", goal_alt_number,
 +             goal_alt_swapped ? " with swap" : "" );
 +    }
 +  len = op_infos.length ();
 +  if (insn_selections[uid].alt >= 0 && insn_selections[uid].alt != goal_alt_number)
 +    fprintf (stderr, "change alt %d to %d in insn %d\n",
 +           insn_selections[uid].alt, goal_alt_number, uid);
 +  insn_selections[uid].alt = goal_alt_number;
 +  insn_selections[uid].op_info_start = len;
 +  op_infos.safe_grow (len + recog_data.n_operands);
 +  for (nop = 0; nop < recog_data.n_operands; nop++)
 +    {
 +      op_infos[len + nop].op_class = goal_op_alt[nop];
 +      op_infos[len + nop].allows_mem_p = goal_alt_offmemok[nop];
 +      op_infos[len + nop].allows_addr_p = goal_alt_addrok[nop];
 +      if (ira_dump_file != NULL)
 +      {
 +        p = insn_constraints[nop * recog_data.n_alternatives + goal_alt_number];
 +        if (p == NULL || *p == '\0')
 +          continue;
 +        fprintf (ira_dump_file, "  (%d) ", nop);
 +        for (; *p != '\0' && *p != ',' && *p != '#'; p++)
 +          fputc (*p, ira_dump_file);
 +      }
 +    }
 +  if (ira_dump_file != NULL)
 +    fprintf (ira_dump_file, "\n");
 +}
 +
 +static void
 +record_address_regs (enum machine_mode mode, addr_space_t as, rtx x,
 +                   int context, enum rtx_code outer_code,
 +                   enum rtx_code index_code, int scale);
 +
 +/* Update reg classes and memory costs of pseudos after choosing
 +   alternative ISEL of INSN.  Don't update memory costs if
 +   IGNORE_MEM_COST_P is TRUE.  */
 +static void
 +define_op_cost_from_alt (rtx_insn *insn, const struct insn_selection &isel, bool ignore_mem_cost_p)
 +{
 +  int nop, op_start, regno, other_regno;
 +  rtx set;
 +
 +  ira_assert (isel.alt >= 0);
 +  op_start = isel.op_info_start;
 +  for (nop = 0; nop < recog_data.n_operands; nop++)
 +    {
 +      rtx op = recog_data.operand[nop];
 +      int k, add_cost, regno;
 +      bool in_p, out_p, allows_mem_p;
 +      enum machine_mode mode;
 +      struct costs *pp;
 +      int *pp_costs;
 +      cost_classes_t cost_classes_ptr;
 +      enum reg_class *cost_classes;
 +      enum reg_class op_class, cost_class;
 +      move_table *move_in_cost, *move_out_cost;
 +
 +      if (GET_CODE (op) == SUBREG)
 +      op = SUBREG_REG (op);
 +      op_class = op_infos[op_start + nop].op_class;
 +      if (MEM_P (op))
 +      record_address_regs (GET_MODE (op), MEM_ADDR_SPACE (op),
 +                           XEXP (op, 0), 0, MEM, SCRATCH, frequency * 2);
 +      else if (op_infos[op_start + nop].allows_addr_p)
 +      record_address_regs (VOIDmode, ADDR_SPACE_GENERIC,
 +                           op, 0, ADDRESS, SCRATCH, frequency * 2);
 +  
 +      if (! REG_P (op) || (regno = REGNO (op)) < FIRST_PSEUDO_REGISTER)
 +      continue;
 +      
 +      op_class = op_infos[op_start + nop].op_class;
 +      mode = GET_MODE (op); /* ??? smallest mode for paradoxical subreg */
 +      pp = COSTS (costs, COST_INDEX (regno));
 +      cost_classes_ptr = regno_cost_classes[regno];
 +      cost_classes = cost_classes_ptr->classes;
 +      pp_costs = pp->cost;
 +      in_p = recog_data.operand_type[nop] != OP_OUT;
 +      out_p = recog_data.operand_type[nop] != OP_IN;
 +      ira_init_register_move_cost_if_necessary (mode);
 +      if (! in_p)
 +      {
 +        ira_assert (out_p);
 +        move_out_cost = ira_may_move_out_cost[mode];
 +        for (k = cost_classes_ptr->num - 1; k >= 0; k--)
 +          {
 +            cost_class = cost_classes[k];
 +            add_cost = move_out_cost[op_class][cost_class] * frequency;
 +            if (INT_MAX - add_cost < pp_costs[k])
 +              pp_costs[k] = INT_MAX;
 +            else 
 +              pp_costs[k] += add_cost;
 +          }
 +      }
 +      else if (! out_p)
 +      {
 +        ira_assert (in_p);
 +        move_in_cost = ira_may_move_in_cost[mode];
 +        for (k = cost_classes_ptr->num - 1; k >= 0; k--)
 +          {
 +            cost_class = cost_classes[k];
 +            add_cost = move_in_cost[cost_class][op_class] * frequency;
 +            if (INT_MAX - add_cost < pp_costs[k])
 +              pp_costs[k] = INT_MAX;
 +            else 
 +              pp_costs[k] += add_cost;
 +          }
 +      }
 +      else
 +      {
 +        move_in_cost = ira_may_move_in_cost[mode];
 +        move_out_cost = ira_may_move_out_cost[mode];
 +        for (k = cost_classes_ptr->num - 1; k >= 0; k--)
 +          {
 +            cost_class = cost_classes[k];
 +            add_cost = (move_in_cost[cost_class][op_class]
 +                        + move_out_cost[op_class][cost_class]) * frequency;
 +            if (INT_MAX - add_cost < pp_costs[k])
 +              pp_costs[k] = INT_MAX;
 +            else 
 +              pp_costs[k] += add_cost;
 +          }
 +      }
 +      
 +      if (!ignore_mem_cost_p)
 +      {
 +        allows_mem_p = op_infos[op_start + nop].allows_mem_p;
 +        /* If the alternative actually allows memory, make things a bit
 +           cheaper since we won't need an extra insn to load it.  */
 +        add_cost = ((out_p ? ira_memory_move_cost[mode][op_class][0] : 0)
 +                    + (in_p ? ira_memory_move_cost[mode][op_class][1] : 0)
 +                    - allows_mem_p) * frequency;
 +        if (INT_MAX - add_cost < pp->mem_cost)
 +          pp->mem_cost = INT_MAX;
 +        else 
 +          pp->mem_cost += add_cost;
 +      }
 +    }
 +  if ((set = single_set (insn)) != NULL_RTX)
 +    {
 +      rtx dest = SET_DEST (set);
 +      rtx src = SET_SRC (set);
 +
 +      dest = SET_DEST (set);
 +      src = SET_SRC (set);
 +      if (REG_P (src) && REG_P (dest)
 +        && find_regno_note (insn, REG_DEAD, REGNO (src))
 +        && (((regno = REGNO (src)) >= FIRST_PSEUDO_REGISTER
 +             && (other_regno = REGNO (dest)) < FIRST_PSEUDO_REGISTER)
 +            || ((regno = REGNO (dest)) >= FIRST_PSEUDO_REGISTER
 +                && (other_regno = REGNO (src)) < FIRST_PSEUDO_REGISTER)))
 +      {
 +        struct costs *pp = COSTS (costs, COST_INDEX (regno));
 +        int *pp_costs = pp->cost;
 +        enum machine_mode mode = GET_MODE (src);
 +        cost_classes_t cost_classes_ptr = regno_cost_classes[regno];
 +        enum reg_class *cost_classes = cost_classes_ptr->classes;
 +        reg_class_t rclass;
 +        int k, nr;
 +        
 +        for (k = cost_classes_ptr->num - 1; k >= 0; k--)
 +          {
 +            rclass = cost_classes[k];
 +            if (TEST_HARD_REG_BIT (reg_class_contents[rclass], other_regno)
 +                && (reg_class_size[(int) rclass]
 +                    == ira_reg_class_max_nregs [(int) rclass][(int) mode]))
 +              {
 +                if (reg_class_size[rclass] == 1)
 +                  pp_costs[k] -= frequency;
 +                else
 +                  {
 +                    for (nr = 0;
 +                         nr < hard_regno_nregs (other_regno, mode);
 +                         nr++)
 +                      if (! TEST_HARD_REG_BIT (reg_class_contents[rclass],
 +                                               other_regno + nr))
 +                        break;
 +                    
 +                    if (nr == hard_regno_nregs (other_regno, mode))
 +                      pp_costs[k] -= frequency;
 +                  }
 +              }
 +          }
 +      }
 +    }
 +}
 +
 +\f
 +
 +
  /* Record the cost of using memory or hard registers of various
     classes for the operands in INSN.
  
@@@ -2415,44 -1522,44 +2448,49 @@@ scan_one_insn (rtx_insn *insn
        counted_mem = true;
      }
  
 -  record_operand_costs (insn, pref);
 -
 -  /* Now add the cost for each operand to the total costs for its
 -     allocno.  */
 -  for (i = 0; i < recog_data.n_operands; i++)
 +  if (flag_ira_select && insn_selections [INSN_UID (insn)].alt >= 0)
 +    define_op_cost_from_alt (insn, insn_selections [INSN_UID (insn)], counted_mem);
 +  else
      {
 -      rtx op = recog_data.operand[i];
 +      record_operand_costs (insn, pref);
        
 -      if (GET_CODE (op) == SUBREG)
 -      op = SUBREG_REG (op);
 -      if (REG_P (op) && REGNO (op) >= FIRST_PSEUDO_REGISTER)
 +      /* Now add the cost for each operand to the total costs for its
 +       allocno.  */
 +      for (i = 0; i < recog_data.n_operands; i++)
-       if (REG_P (recog_data.operand[i])
-           && REGNO (recog_data.operand[i]) >= FIRST_PSEUDO_REGISTER)
-         {
-           int regno = REGNO (recog_data.operand[i]);
-           struct costs *p = COSTS (costs, COST_INDEX (regno));
-           struct costs *q = op_costs[i];
-           int *p_costs = p->cost, *q_costs = q->cost;
-           cost_classes_t cost_classes_ptr = regno_cost_classes[regno];
-           int add_cost;
-           
-           /* If the already accounted for the memory "cost" above, don't
-              do so again.  */
-           if (!counted_mem)
-             {
-               add_cost = q->mem_cost;
-               if (add_cost > 0 && INT_MAX - add_cost < p->mem_cost)
-                 p->mem_cost = INT_MAX;
-               else
-                 p->mem_cost += add_cost;
-             }
-           for (k = cost_classes_ptr->num - 1; k >= 0; k--)
-             {
-               add_cost = q_costs[k];
-               if (add_cost > 0 && INT_MAX - add_cost < p_costs[k])
-                 p_costs[k] = INT_MAX;
-               else
-                 p_costs[k] += add_cost;
-             }
-         }
+       {
 -        int regno = REGNO (op);
 -        struct costs *p = COSTS (costs, COST_INDEX (regno));
 -        struct costs *q = op_costs[i];
 -        int *p_costs = p->cost, *q_costs = q->cost;
 -        cost_classes_t cost_classes_ptr = regno_cost_classes[regno];
 -        int add_cost;
++        rtx op = recog_data.operand[i];
+         
 -        /* If the already accounted for the memory "cost" above, don't
 -           do so again.  */
 -        if (!counted_mem)
 -          {
 -            add_cost = q->mem_cost;
 -            if (add_cost > 0 && INT_MAX - add_cost < p->mem_cost)
 -              p->mem_cost = INT_MAX;
 -            else
 -              p->mem_cost += add_cost;
 -          }
 -        for (k = cost_classes_ptr->num - 1; k >= 0; k--)
++        if (GET_CODE (op) == SUBREG)
++          op = SUBREG_REG (op);
++        if (REG_P (op) && REGNO (op) >= FIRST_PSEUDO_REGISTER)
+           {
 -            add_cost = q_costs[k];
 -            if (add_cost > 0 && INT_MAX - add_cost < p_costs[k])
 -              p_costs[k] = INT_MAX;
 -            else
 -              p_costs[k] += add_cost;
++            int regno = REGNO (op);
++            struct costs *p = COSTS (costs, COST_INDEX (regno));
++            struct costs *q = op_costs[i];
++            int *p_costs = p->cost, *q_costs = q->cost;
++            cost_classes_t cost_classes_ptr = regno_cost_classes[regno];
++            int add_cost;
++            
++            /* If the already accounted for the memory "cost" above, don't
++               do so again.  */
++            if (!counted_mem)
++              {
++                add_cost = q->mem_cost;
++                if (add_cost > 0 && INT_MAX - add_cost < p->mem_cost)
++                  p->mem_cost = INT_MAX;
++                else
++                  p->mem_cost += add_cost;
++              }
++            for (k = cost_classes_ptr->num - 1; k >= 0; k--)
++              {
++                add_cost = q_costs[k];
++                if (add_cost > 0 && INT_MAX - add_cost < p_costs[k])
++                  p_costs[k] = INT_MAX;
++                else
++                  p_costs[k] += add_cost;
++              }
+           }
+       }
      }
    return insn;
  }
@@@ -2785,7 -1890,7 +2823,7 @@@ find_costs_and_classes (FILE *dump_file
                alt_class = reg_class_subunion[alt_class][rclass];
            }
          alt_class = ira_allocno_class_translate[alt_class];
--        if (best_cost > i_mem_cost
++        if (best_cost > i_mem_cost && (1||cost_classes_ptr->num == 0||! flag_ira_select)
              && ! non_spilled_static_chain_regno_p (i))
            regno_aclass[i] = NO_REGS;
          else if (!optimize && !targetm.class_likely_spilled_p (best))
            }
          if (pass == flag_expensive_optimizations)
            {
--            if (best_cost > i_mem_cost
++            if (best_cost > i_mem_cost && (1||cost_classes_ptr->num == 0||! flag_ira_select)
                  /* Do not assign NO_REGS to static chain pointer
                     pseudo when non-local goto is used.  */
                  && ! non_spilled_static_chain_regno_p (i))
          regno_best_class[i] = best;
          if (! allocno_p)
            {
--            pref[i] = (best_cost > i_mem_cost
++            pref[i] = (best_cost > i_mem_cost && (1||cost_classes_ptr->num == 0||! flag_ira_select)
                         && ! non_spilled_static_chain_regno_p (i)
                         ? NO_REGS : best);
              continue;