- 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.