PR tree-optimization/86571 - AIX NaNQ and NaNS output format conflicts with __builtin...
[gcc.git] / gcc / ChangeLog
index 202b43b4fc34a83c1f5237c5d09a65edbb76f57d..7d2323983ec26aab89715e685708b3d93e59d5be 100644 (file)
+2018-08-04  Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/86571
+       * gimple-ssa-sprintf.c (format_floating): Extend upper bound of
+       NaN output to 4.
+
+2018-08-03  Sandra Loosemore  <sandra@codesourcery.com>
+
+       * config/nios2/nios2.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define.
+
+2018-08-03  Jeff Law  <law@redhat.com>
+
+       PR target/86795
+       * config/mn10300/mn10300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define to speculation_safe_value_not_needed.
+
+2018-08-03  David Malcolm  <dmalcolm@redhat.com>
+
+       * doc/gcov.texi (-x): Remove duplicate "to".
+       * doc/invoke.texi (-Wnoexcept-type): Remove duplicate "calls".
+       (-Wif-not-aligned): Remove duplicate "is".
+       (-flto): Remove duplicate "the".
+       (MicroBlaze Options): In examples of "-mcpu=cpu-type", remove
+       duplicate "v5.00.b".
+       (MSP430 Options): Remove duplicate "and" from the description
+       of "-mgprel-sec=regexp".
+       (x86 Options): Remove duplicate copies of "vmldLog102" and
+       vmlsLog104 from description of "-mveclibabi=type".
+
+2018-08-03  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * internal-fn.h (first_commutative_argument): Declare.
+       * internal-fn.c (first_commutative_argument): New function.
+       * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove extra
+       restrictions for pattern statements.  Use first_commutative_argument
+       to look for commutative operands in calls to internal functions.
+
+2018-08-03  Aldy Hernandez  <aldyh@redhat.com>
+
+       * Makefile.in (wide-int-range.o): New.
+       * tree-vrp.c: Move all the wide_int_* functions to...
+       * wide-int-range.cc: ...here.
+       * tree-vrp.h: Move all the wide_int_* prototypes to...
+       * wide-int-range.h: ...here.
+
+2018-08-03  Tom de Vries  <tdevries@suse.de>
+
+       * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): Return
+       UI_NONE.
+       * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Remove define.
+       * except.c (output_function_exception_table): Do early exit if
+       targetm_common.except_unwind_info (&global_options) == UI_NONE.
+
+2018-08-03  Martin Liska  <mliska@suse.cz>
+
+       * predict.c (dump_prediction): Change to 2 digits
+        in fraction part.
+
+2018-08-03  Siddhesh Poyarekar  <siddhesh@sourceware.org>
+
+       * config/aarch64/falkor.md (falkor_am_1_vxvy_vxvy): Move
+       neon_dup_q to...
+       (falkor_am_1_gtov_gtov): ... a new insn reservation.
+
+2018-07-19  Ilya Leoshkevich  <iii@linux.ibm.com>
+
+       * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Replace > with >=.
+       * df-problems.c (df_remove_dead_eq_notes): Replace > with >=.
+       * dwarf2out.c (mem_loc_descriptor): Replace > with >=.
+       * lra-constraints.c (spill_hard_reg_in_range): Replace <= with <.
+       * lra-remat.c (call_used_input_regno_present_p): Replace <= with <.
+
+2018-08-02  David Malcolm  <dmalcolm@redhat.com>
+
+       * diagnostic-show-locus.c (diagnostic_show_locus): Use
+       pp_take_prefix when saving the existing prefix.
+       * diagnostic.c (diagnostic_append_note): Likewise.
+       * langhooks.c (lhd_print_error_function): Likewise.
+       * pretty-print.c (pp_set_prefix): Drop the "const" from "prefix"
+       param's type.  Free the existing prefix.
+       (pp_take_prefix): New function.
+       (pretty_printer::pretty_printer): Drop the prefix parameter.
+       Rename the length parameter to match the comment.
+       (pretty_printer::~pretty_printer): Free the prefix.
+       * pretty-print.h (pretty_printer::pretty_printer): Drop the prefix
+       parameter.
+       (struct pretty_printer): Drop the "const" from "prefix" field's
+       type and clarify memory management.
+       (pp_set_prefix): Drop the "const" from the 2nd param.
+       (pp_take_prefix): New decl.
+
+2018-08-02  Aaron Sawdey  <acsawdey@linux.ibm.com>
+
+       * config/rs6000/rs6000-string.c (select_block_compare_mode): Move test
+       for word_mode_ok here instead of passing as argument.
+       (expand_block_compare): Change select_block_compare_mode() call.
+       (expand_strncmp_gpr_sequence): New function.
+       (expand_strn_compare): Make use of expand_strncmp_gpr_sequence.
+
+2018-08-02  Jeff Law  <law@redhat.com>
+
+       PR target/86790
+       * config/m68k/m68k.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define to speculation_safe_value_not_needed.
+
+       PR target/86784
+       * config/h8300/h8300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define to speculation_safe_value_not_needed.
+
+2018-08-02  Tom de Vries  <tdevries@suse.de>
+
+       PR target/86660
+       * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): New
+       function.  Return UI_TARGET unconditionally.
+       (TARGET_EXCEPT_UNWIND_INFO): Redefine to nvptx_except_unwind_info.
+       * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Emit commented out '.byte'.
+
+2018-08-02  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * genemit.c (print_overload_test): Fix typo.
+
+2018-08-02  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/86816
+       * tree-ssa-tail-merge.c (tail_merge_valueize): New function
+       which checks for value availability before querying it.
+       (gvn_uses_equal): Use it.
+       (same_succ_hash): Likewise.
+       (gimple_equal_p): Likewise.
+
+2018-08-02  Nick Clifton  <nickc@redhat.com>
+
+       PR target/86813
+       * config/stormy16/stormy16.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define to speculation_safe_value_not_needed.
+
+       PR target/86810
+       * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define to speculation_safe_value_not_needed.
+
+       PR target/86810
+       * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define to speculation_safe_value_not_needed.
+
+       PR target/86803
+       * config/rx/rx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define to speculation_safe_value_not_needed.
+
+       PR target/86797
+       * config/msp430/msp430.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define to speculation_safe_value_not_needed.
+
+       PR target/86791
+       * config/mcore/mcore.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define to speculation_safe_value_not_needed.
+
+       PR target/86789
+       * config/m32r/m32r.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define to speculation_safe_value_not_needed.
+
+       PR target/86787
+       * config/iq2000/iq2000.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
+       Define to speculation_safe_value_not_needed.
+
+       PR target/86782
+       * config/frv/frv.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to
+       speculation_safe_value_not_needed.
+
+       PR target/86781
+       * config/fr30/fr30.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define
+       to speculation_safe_value_not_needed.
+
+2018-08-02  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * doc/md.texi: Expand the documentation of instruction names
+       to mention port-local uses.  Document '@' in pattern names.
+       * read-md.h (overloaded_instance, overloaded_name): New structs.
+       (mapping): Declare.
+       (md_reader::handle_overloaded_name): New member function.
+       (md_reader::get_overloads): Likewise.
+       (md_reader::m_first_overload): New member variable.
+       (md_reader::m_next_overload_ptr): Likewise.
+       (md_reader::m_overloads_htab): Likewise.
+       * read-md.c (md_reader::md_reader): Initialize m_first_overload,
+       m_next_overload_ptr and m_overloads_htab.
+       * read-rtl.c (iterator_group): Add "type" and "get_c_token" fields.
+       (get_mode_token, get_code_token, get_int_token): New functions.
+       (map_attr_string): Add an optional argument that passes back
+       the associated iterator.
+       (overloaded_name_hash, overloaded_name_eq_p, named_rtx_p):
+       (md_reader::handle_overloaded_name, add_overload_instance): New
+       functions.
+       (apply_iterators): Handle '@' names.  Report an error if '@'
+       is used without iterators.
+       (initialize_iterators): Initialize the new iterator_group fields.
+       * genopinit.c (handle_overloaded_code_for)
+       (handle_overloaded_gen): New functions.
+       (main): Use them to print declarations of maybe_code_for_* and
+       maybe_gen_* functions, and inline definitions of code_for_* and gen_*.
+       * genemit.c (print_overload_arguments, print_overload_test)
+       (handle_overloaded_code_for, handle_overloaded_gen): New functions.
+       (main): Use it to print definitions of maybe_code_for_* and
+       maybe_gen_* functions.
+       * config/aarch64/aarch64.c (aarch64_split_128bit_move): Use
+       gen_aarch64_mov{low,high}_di and gen_aarch64_movdi_{low,high}
+       instead of explicit mode checks.
+       (aarch64_split_simd_combine): Likewise gen_aarch64_simd_combine.
+       (aarch64_split_simd_move): Likewise gen_aarch64_split_simd_mov.
+       (aarch64_emit_load_exclusive): Likewise gen_aarch64_load_exclusive.
+       (aarch64_emit_store_exclusive): Likewise gen_aarch64_store_exclusive.
+       (aarch64_expand_compare_and_swap): Likewise
+       gen_aarch64_compare_and_swap and gen_aarch64_compare_and_swap_lse
+       (aarch64_gen_atomic_cas): Likewise gen_aarch64_atomic_cas.
+       (aarch64_emit_atomic_swap): Likewise gen_aarch64_atomic_swp.
+       (aarch64_constant_pool_reload_icode): Delete.
+       (aarch64_secondary_reload): Use code_for_aarch64_reload_movcp
+       instead of aarch64_constant_pool_reload_icode.  Use
+       code_for_aarch64_reload_mov instead of explicit mode checks.
+       (rsqrte_type, get_rsqrte_type, rsqrts_type, get_rsqrts_type): Delete.
+       (aarch64_emit_approx_sqrt): Use gen_aarch64_rsqrte instead of
+       get_rsqrte_type and gen_aarch64_rsqrts instead of gen_rqrts_type.
+       (recpe_type, get_recpe_type, recps_type, get_recps_type): Delete.
+       (aarch64_emit_approx_div): Use gen_aarch64_frecpe instead of
+       get_recpe_type and gen_aarch64_frecps instead of get_recps_type.
+       (aarch64_atomic_load_op_code): Delete.
+       (aarch64_emit_atomic_load_op): Likewise.
+       (aarch64_gen_atomic_ldop): Use UNSPECV_ATOMIC_* instead of
+       aarch64_atomic_load_op_code.  Use gen_aarch64_atomic_load
+       instead of aarch64_emit_atomic_load_op.
+       * config/aarch64/aarch64.md (aarch64_reload_movcp<GPF_TF:mode><P:mode>)
+       (aarch64_reload_movcp<VALL:mode><P:mode>, aarch64_reload_mov<mode>)
+       (aarch64_movdi_<mode>low, aarch64_movdi_<mode>high)
+       (aarch64_mov<mode>high_di, aarch64_mov<mode>low_di): Add a '@'
+       character before the pattern name.
+       * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov<mode>)
+       (aarch64_rsqrte<mode>, aarch64_rsqrts<mode>)
+       (aarch64_simd_combine<mode>, aarch64_frecpe<mode>)
+       (aarch64_frecps<mode>): Likewise.
+       * config/aarch64/atomics.md (atomic_compare_and_swap<mode>)
+       (aarch64_compare_and_swap<mode>, aarch64_compare_and_swap<mode>_lse)
+       (aarch64_load_exclusive<mode>, aarch64_store_exclusive<mode>)
+       (aarch64_atomic_swp<mode>, aarch64_atomic_cas<mode>)
+       (aarch64_atomic_load<atomic_ldop><mode>): Likewise.
+
+2018-08-02  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/aarch64/aarch64.c (aarch64_float_const_representable_p):
+       Allow HFmode constants if TARGET_FP_F16INST.
+
+2018-08-02  Jackson Woodruff  <jackson.woodruff@arm.com>
+
+       PR target/86014
+       * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp):
+       No longer check last store for clobber of address register.
+
+2018-08-02  Martin Liska  <mliska@suse.cz>
+
+        PR gcov-profile/86817
+       * gcov.c (process_all_functions): New function.
+       (main): Call it.
+       (process_file): Move functions processing to
+        process_all_functions.
+
+2018-08-02  David Malcolm  <dmalcolm@redhat.com>
+
+       * dumpfile.c (dump_user_location_t::dump_user_location_t): Add
+       "const" to the "gimple *" and "rtx_insn *" parameters.
+       * dumpfile.h (dump_user_location_t::dump_user_location_t):
+       Likewise.
+       (dump_location_t::dump_location_t): Likewise.
+
+2018-08-01  Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/86650
+       * gimple-pretty-print.c (percent_G_format): Accept a "gimple *"
+       rather than a "gcall *".  Directly pass the data of interest
+       to percent_K_format, rather than building a temporary CALL_EXPR
+       to hold it.
+       * gimple-fold.c (gimple_fold_builtin_strncpy): Adjust.
+       (gimple_fold_builtin_strncat): Adjust.
+       * gimple-ssa-warn-restrict.h (check_bounds_or_overlap): Replace
+       gcall* argument with gimple*.
+       * gimple-ssa-warn-restrict.c (check_call): Same.
+       (wrestrict_dom_walker::before_dom_children): Same.
+       (builtin_access::builtin_access): Same.
+       (check_bounds_or_overlap): Same
+       (maybe_diag_overlap): Same.
+       (maybe_diag_offset_bounds): Same.
+       * tree-diagnostic.c (default_tree_printer): Move usage of
+       EXPR_LOCATION (t) and TREE_BLOCK (t) from within percent_K_format
+       to this callsite.
+       * tree-pretty-print.c (percent_K_format): Add argument.
+       * tree-pretty-print.h: Add argument.
+       * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Adjust.
+       * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Adjust.
+       (maybe_diag_stxncpy_trunc): Same.
+       (handle_builtin_stxncpy): Same.
+       (handle_builtin_strcat): Same.
+
+2018-08-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * match.pd: Optimise pointer range checks.
+
+2018-08-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       PR tree-optimization/86758
+       * tree-vect-stmts.c (vectorizable_simd_clone_call): Don't try
+       to remove pattern statements.
+
+2018-08-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Use the
+       result of dfs_enumerate_from when constructing stmt_vec_infos,
+       instead of additionally calling get_loop_body.
+
+2018-08-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vect_create_data_ref_ptr): Remove inv_p
+       parameter.
+       * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
+       When creating an iv, assert that the step is not known to be zero.
+       (vect_setup_realignment): Update call accordingly.
+       * tree-vect-stmts.c (vectorizable_store): Likewise.
+       (vectorizable_load): Likewise.  Handle VMAT_INVARIANT separately.
+
+2018-08-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vect_stmt_to_vectorize): New function.
+       * tree-vect-loop.c (vect_update_vf_for_slp): Use it.
+       (vectorizable_reduction): Likewise.
+       * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
+       (vect_detect_hybrid_slp_stmts): Likewise.
+       * tree-vect-stmts.c (vect_is_simple_use): Likewise.
+
+2018-08-01  Aldy Hernandez  <aldyh@redhat.com>
+
+       * tree-vrp (zero_nonzero_bits_from_bounds): Rename to...
+       (wide_int_set_zero_nonzero_bits): ...this.
+       (zero_nonzero_bits_from_vr): Rename to...
+       (vrp_set_zero_nonzero_bits): ...this.
+       (extract_range_from_multiplicative_op_1): Abstract wide int
+       code...
+       (wide_int_range_multiplicative_op): ...here.
+       (extract_range_from_binary_expr_1): Extract wide int binary
+       operations into their own functions.
+       (wide_int_range_lshift): New.
+       (wide_int_range_can_optimize_bit_op): New.
+       (wide_int_range_shift_undefined_p): New.
+       (wide_int_range_bit_xor): New.
+       (wide_int_range_bit_ior): New.
+       (wide_int_range_bit_and): New.
+       (wide_int_range_trunc_mod): New.
+       (extract_range_into_wide_ints): New.
+       (vrp_shift_undefined_p): New.
+       (extract_range_from_multiplicative_op): New.
+       (vrp_can_optimize_bit_op): New.
+       * tree-vrp.h (value_range::dump): New.
+       (wide_int_range_multiplicative_op): New.
+       (wide_int_range_lshift):New.
+       (wide_int_range_shift_undefined_p): New.
+       (wide_int_range_bit_xor): New.
+       (wide_int_range_bit_ior): New.
+       (wide_int_range_bit_and): New.
+       (wide_int_range_trunc_mod): New.
+       (zero_nonzero_bits_from_bounds): Rename to...
+       (wide_int_set_zero_nonzero_bits): ...this.
+       (zero_nonzero_bits_from_vr): Rename to...
+       (vrp_set_zero_nonzero_bits): ...this.
+       (range_easy_mask_min_max): Rename to...
+       (wide_int_range_can_optimize_bit_op): this.
+       * vr-values.c (simplify_bit_ops_using_ranges): Rename
+       zero_nonzero_bits_from_vr into vrp_set_zero_nonzero_bits.
+
+2018-08-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vect_orig_stmt): New function.
+       * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Use it.
+       * tree-vect-loop.c (vect_model_reduction_cost): Likewise.
+       (vect_create_epilog_for_reduction): Likewise.
+       (vectorizable_live_operation): Likewise.
+       * tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Likewise.
+       (vect_detect_hybrid_slp_stmts, vect_schedule_slp): Likewise.
+       * tree-vect-stmts.c (vectorizable_call): Likewise.
+       (vectorizable_simd_clone_call, vect_remove_stores): Likewise.
+
+2018-08-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vect_transform_stmt): Remove grouped_store
+       argument.
+       * tree-vect-stmts.c (vect_transform_stmt): Likewise.
+       * tree-vect-loop.c (vect_transform_loop_stmt): Update call accordingly.
+       (vect_transform_loop): Likewise.
+       * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
+
+2018-08-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vect_schedule_slp): Return void.
+       * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
+       (vect_schedule_slp): Likewise.
+
+2018-08-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-loop.c (vect_transform_loop_stmt): Remove slp_scheduled
+       argument.
+       (vect_transform_loop): Update calls accordingly.  Schedule SLP
+       instances before the main loop, if any exist.
+
+2018-08-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       PR tree-optimization/86749
+       * tree-vect-patterns.c (vect_determine_min_output_precision_1):
+       If the lhs is used in a COND_EXPR, check that it is being used
+       as the "then" or "else" value.
+
+2018-08-01  Tom de Vries  <tdevries@suse.de>
+
+       PR target/86800
+       * config/nvptx/nvptx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to
+       speculation_safe_value_not_needed.
+
+2018-08-01  Richard Biener  <rguenther@suse.de>
+
+       * tree-ssa-sccvn.c (visit_phi): Compare invariant addresses
+       as base and offset.
+
+2018-08-01  Martin Liska  <mliska@suse.cz>
+
+       * value-prof.c (gimple_divmod_fixed_value_transform): Unify
+        format how successful transformation is dumped.
+       (gimple_mod_pow2_value_transform): Likewise.
+       (gimple_mod_subtract_transform): Likewise.
+       (gimple_stringops_transform): Likewise.
+
+2018-08-01  Martin Liska  <mliska@suse.cz>
+
+        PR value-prof/35543
+       * value-prof.c (interesting_stringop_to_profile_p):
+        Simplify the code and add BUILT_IN_MEMMOVE.
+       (gimple_stringops_transform): Likewise.
+
+2018-08-01  Sam Tebbs  <sam.tebbs@arm.com>
+
+       * config/aarch64/aarch64-simd.md
+       (*aarch64_get_lane_zero_extendsi<mode>): Rename to...
+       (*aarch64_get_lane_zero_extend<GPI:mode><VDQQH:mode>): ... This and
+       use GPI iterator instead of SI mode.
+
+2018-08-01  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/rs6000/rs6000.md (speculation_barrier): Renamed from
+       rs6000_speculation_barrier.
+       * config/rs6000/rs6000.c (rs6000_expand_builtin): Adjust for
+       new barrier pattern name.
+
+2018-08-01  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/i386/i386.md (unspecv): Add UNSPECV_SPECULATION_BARRIER.
+       (speculation_barrier): New insn.
+
+2018-08-01  Richard Biener  <rguenther@suse.de>
+
+       PR bootstrap/86724
+       * graphite.h: Include isl/id.h and isl/space.h to allow build
+       with ISL 0.20.
+
+2018-08-01 Jan Willem Jagersma  <jwjagersma@gmail.com>
+
+       PR target/86651
+       * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
+       mode for COFF targets.
+       * defaults.h (TARGET_COFF): Define.
+       * config/i386/djgpp.h (TARGET_ASM_LTO_START, TARGET_ASM_LTO_END,
+       TARGET_COFF): Define.
+       (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): Declare.
+       * config/i386/djgpp.c (saved_debug_info_level): New static variable.
+       (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): New functions.
+
+2018-07-31  Alexandre Oliva <oliva@adacore.com>
+
+       * gimple-streamer-in.c (input_bb): Restore BB discriminator.
+       * gimple-streamer-out.c (output_bb): Save it.
+       * lto-streamer-in.c (input_struct_function_base): Restore
+       instance discriminator if available.  Create map on demand.
+       * lto-streamer-out.c (output_struct_function_base): Save it if
+       available.
+       * final.c (decl_to_instance_map): Document LTO strategy.
+
+2018-07-31  Alexandre Oliva  <oliva@adacore.com>
+            Olivier Hainque  <hainque@adacore.com>
+
+       * debug.h (decl_to_instance_map_t): New type.
+       (decl_to_instance_map): Declare.
+       (maybe_create_decl_to_instance_map): New inline function.
+       * final.c (bb_discriminator, last_bb_discriminator): New statics,
+       to track basic block discriminators.
+       (final_start_function_1): Initialize them.
+       (final_scan_insn_1): On NOTE_INSN_BASIC_BLOCK, track
+       bb_discriminator.
+       (decl_to_instance_map): New variable.
+       (map_decl_to_instance, maybe_set_discriminator): New functions.
+       (notice_source_line): Set discriminator.
+
+2018-07-31  Ian Lance Taylor  <iant@golang.org>
+
+       * targhooks.c (default_have_speculation_safe_value): Add
+       ATTRIBUTE_UNUSED.
+
+2018-07-31  David Malcolm  <dmalcolm@redhat.com>
+
+       * dump-context.h: Include "pretty-print.h".
+       (dump_context::refresh_dumps_are_enabled): New decl.
+       (dump_context::emit_item): New decl.
+       (class dump_context): Add fields "m_test_pp" and
+       "m_test_pp_flags".
+       (temp_dump_context::temp_dump_context): Add param "test_pp_flags".
+       (temp_dump_context::get_dumped_text): New decl.
+       (class temp_dump_context): Add field "m_pp".
+       * dumpfile.c (refresh_dumps_are_enabled): Convert to...
+       (dump_context::refresh_dumps_are_enabled): ...and add a test for
+       m_test_pp.
+       (set_dump_file): Update for above change.
+       (set_alt_dump_file): Likewise.
+       (dump_loc): New overload, taking a pretty_printer *.
+       (dump_context::dump_loc): Call end_any_optinfo.  Dump the location
+       to any test pretty-printer.
+       (make_item_for_dump_gimple_stmt): New function, adapted from
+       optinfo::add_gimple_stmt.
+       (dump_context::dump_gimple_stmt): Call it, and use the result,
+       eliminating the direct usage of dump_file and alt_dump_file in
+       favor of indirectly using them via emit_item.
+       (make_item_for_dump_gimple_expr): New function, adapted from
+       optinfo::add_gimple_expr.
+       (dump_context::dump_gimple_expr): Call it, and use the result,
+       eliminating the direct usage of dump_file and alt_dump_file in
+       favor of indirectly using them via emit_item.
+       (make_item_for_dump_generic_expr): New function, adapted from
+       optinfo::add_tree.
+       (dump_context::dump_generic_expr): Call it, and use the result,
+       eliminating the direct usage of dump_file and alt_dump_file in
+       favor of indirectly using them via emit_item.
+       (make_item_for_dump_printf_va): New function, adapted from
+       optinfo::add_printf_va.
+       (make_item_for_dump_printf): New function.
+       (dump_context::dump_printf_va): Call make_item_for_dump_printf_va,
+       and use the result, eliminating the direct usage of dump_file and
+       alt_dump_file in favor of indirectly using them via emit_item.
+       (make_item_for_dump_dec): New function.
+       (dump_context::dump_dec): Call it, and use the result,
+       eliminating the direct usage of dump_file and alt_dump_file in
+       favor of indirectly using them via emit_item.
+       (make_item_for_dump_symtab_node): New function, adapted from
+       optinfo::add_symtab_node.
+       (dump_context::dump_symtab_node): Call it, and use the result,
+       eliminating the direct usage of dump_file and alt_dump_file in
+       favor of indirectly using them via emit_item.
+       (dump_context::begin_scope): Reimplement, avoiding direct usage
+       of dump_file and alt_dump_file in favor of indirectly using them
+       via emit_item.
+       (dump_context::emit_item): New member function.
+       (temp_dump_context::temp_dump_context): Add param "test_pp_flags".
+       Set up test pretty-printer on the underlying context.  Call
+       refresh_dumps_are_enabled.
+       (temp_dump_context::~temp_dump_context): Call
+       refresh_dumps_are_enabled.
+       (temp_dump_context::get_dumped_text): New member function.
+       (selftest::verify_dumped_text): New function.
+       (ASSERT_DUMPED_TEXT_EQ): New macro.
+       (selftest::test_capture_of_dump_calls): Run all tests twice, with
+       and then without optinfo enabled.  Add uses of
+       ASSERT_DUMPED_TEXT_EQ to all tests.  Add test of nested scopes.
+       * dumpfile.h: Update comment for the dump_* API.
+       * optinfo-emit-json.cc
+       (selftest::test_building_json_from_dump_calls): Update for new
+       param for temp_dump_context ctor.
+       * optinfo.cc (optinfo_item::optinfo_item): Remove "owned" param
+       and "m_owned" field.
+       (optinfo_item::~optinfo_item): Likewise.
+       (optinfo::add_item): New member function.
+       (optinfo::emit): Update comment.
+       (optinfo::add_string): Delete.
+       (optinfo::add_printf): Delete.
+       (optinfo::add_printf_va): Delete.
+       (optinfo::add_gimple_stmt): Delete.
+       (optinfo::add_gimple_expr): Delete.
+       (optinfo::add_tree): Delete.
+       (optinfo::add_symtab_node): Delete.
+       (optinfo::add_dec): Delete.
+       * optinfo.h (class dump_context): New forward decl.
+       (optinfo::add_item): New decl.
+       (optinfo::add_string): Delete.
+       (optinfo::add_printf): Delete.
+       (optinfo::add_printf_va): Delete.
+       (optinfo::add_gimple_stmt): Delete.
+       (optinfo::add_gimple_expr): Delete.
+       (optinfo::add_tree): Delete.
+       (optinfo::add_symtab_node): Delete.
+       (optinfo::add_dec): Delete.
+       (optinfo::add_poly_int): Delete.
+       (optinfo_item::optinfo_item): Remove "owned" param.
+       (class optinfo_item): Remove field "m_owned".
+
+2018-07-31  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+       PR middle-end/86705
+       * gcc/cfgexpand.c (set_parm_rtl): Use the alignment of Pmode when
+       MAX_SUPPORTED_STACK_ALIGNMENT would otherwise be exceeded by the
+       requested variable alignment.
+       (expand_one_ssa_partition): Likewise.
+       (expand_one_var): Likewise.
+
+2018-07-31  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/pdp11/pdp11.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
+       to speculation_safe_value_not_needed.
+
+2018-07-31  Richard Earnshaw  <rearnsha@arm.com>
+
+       * targhooks.h (speculation_safe_value_not_needed): New prototype.
+       * targhooks.c (speculation_safe_value_not_needed): New function.
+       * target.def (have_speculation_safe_value): Update documentation.
+       * doc/tm.texi: Regenerated.
+
+2018-07-31  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/aarch64/iterators.md (ALLI_TI): New iterator.
+       * config/aarch64/aarch64.md (despeculate_copy<ALLI_TI:mode>): New
+       expand.
+       (despeculate_copy<ALLI:mode>_insn): New insn.
+       (despeculate_copyti_insn): New insn.
+       (despeculate_simple<ALLI:mode>): New insn
+       (despeculate_simpleti): New insn.
+       * config/aarch64/aarch64.c (aarch64_speculation_safe_value): New
+       function.
+       (TARGET_SPECULATION_SAFE_VALUE): Redefine to
+       aarch64_speculation_safe_value.
+       (aarch64_print_operand): Handle const0_rtx in modifier 'H'.
+
+2018-07-31  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/aarch64/aarch64-speculation.cc: New file.
+       * config/aarch64/aarch64-passes.def (pass_track_speculation): Add
+       before pass_reorder_blocks.
+       * config/aarch64/aarch64-protos.h (make_pass_track_speculation): Add
+       prototype.
+       * config/aarch64/aarch64.c (aarch64_conditional_register_usage): Fix
+       X14 and X15 when tracking speculation.
+       * config/aarch64/aarch64.md (register name constants): Add
+       SPECULATION_TRACKER_REGNUM and SPECULATION_SCRATCH_REGNUM.
+       (unspec): Add UNSPEC_SPECULATION_TRACKER.
+       (speculation_barrier): New insn attribute.
+       (cmp<mode>): Allow SP in comparisons.
+       (speculation_tracker): New insn.
+       (speculation_barrier): Add speculation_barrier attribute.
+       * config/aarch64/t-aarch64: Add make rule for aarch64-speculation.o.
+       * config.gcc (aarch64*-*-*): Add aarch64-speculation.o to extra_objs.
+       * doc/invoke.texi (AArch64 Options): Document -mtrack-speculation.
+
+2018-07-31  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/aarch64/aarch64.md (cb<optab><mode>1): Disable when
+       aarch64_track_speculation is true.
+       (tb<optab><mode>1): Likewise.
+       * config/aarch64/aarch64.c (aarch64_split_compare_regs): Do not
+       generate CB[N]Z when tracking speculation.
+       (aarch64_split_compare_and_swap): Likewise.
+       (aarch64_split_atomic_op): Likewise.
+
+2018-07-31  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/aarch64/aarch64.opt (mtrack-speculation): New target option.
+
+2018-07-31  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/aarch64.md (unspecv): Add UNSPECV_SPECULAION_BARRIER.
+       (speculation_barrier): New insn.
+
+2018-07-31  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/arm/unspecs.md (unspecv): Add VUNSPEC_SPECULATION_BARRIER.
+       * config/arm/arm.md (speculation_barrier): New expand.
+       (speculation_barrier_insn): New pattern.
+
+2018-07-31  Richard Earnshaw  <rearnsha@arm.com>
+
+       * builtin-types.def (BT_FN_PTR_PTR_VAR): New function type.
+       (BT_FN_I1_I1_VAR, BT_FN_I2_I2_VAR, BT_FN_I4_I4_VAR): Likewise.
+       (BT_FN_I8_I8_VAR, BT_FN_I16_I16_VAR): Likewise.
+       * builtin-attrs.def (ATTR_NOVOPS_NOTHROW_LEAF_LIST): New attribute
+       list.
+       * builtins.def (BUILT_IN_SPECULATION_SAFE_VALUE_N): New builtin.
+       (BUILT_IN_SPECULATION_SAFE_VALUE_PTR): New internal builtin.
+       (BUILT_IN_SPECULATION_SAFE_VALUE_1): Likewise.
+       (BUILT_IN_SPECULATION_SAFE_VALUE_2): Likewise.
+       (BUILT_IN_SPECULATION_SAFE_VALUE_4): Likewise.
+       (BUILT_IN_SPECULATION_SAFE_VALUE_8): Likewise.
+       (BUILT_IN_SPECULATION_SAFE_VALUE_16): Likewise.
+       * builtins.c (expand_speculation_safe_value): New function.
+       (expand_builtin): Call it.
+       * doc/cpp.texi: Document predefine __HAVE_SPECULATION_SAFE_VALUE.
+       * doc/extend.texi: Document __builtin_speculation_safe_value.
+       * doc/md.texi: Document "speculation_barrier" pattern.
+       * doc/tm.texi.in: Pull in TARGET_SPECULATION_SAFE_VALUE and
+       TARGET_HAVE_SPECULATION_SAFE_VALUE.
+       * doc/tm.texi: Regenerated.
+       * target.def (have_speculation_safe_value, speculation_safe_value): New
+       hooks.
+       * targhooks.c (default_have_speculation_safe_value): New function.
+       (default_speculation_safe_value): New function.
+       * targhooks.h (default_have_speculation_safe_value): Add prototype.
+       (default_speculation_safe_value): Add prototype.
+
+2018-07-31  David Malcolm  <dmalcolm@redhat.com>
+
+       * dump-context.h (dump_context::dump_loc): New decl.
+       * dumpfile.c (dump_context::dump_loc): New member function.
+       (dump_context::dump_gimple_stmt_loc): Reimplement using dump_loc
+       and dump_gimple_stmt.
+       (dump_context::dump_gimple_expr_loc): Likewise, using
+       dump_gimple_expr.
+       (dump_context::dump_generic_expr_loc): Likewise, using
+       dump_generic_expr.
+       (dump_context::dump_printf_loc_va): Likewise, using
+       dump_printf_va.
+       (dump_context::begin_scope): Explicitly using the global function
+       "dump_loc", rather than the member function.
+
+2018-07-31  Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/86741
+       * tree-vrp.c (vrp_prop::check_mem_ref): Avoid incomplete types.
+
+2018-07-31  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+       * config/s390/s390.c (s390_expand_setmem): Make the unrolling to
+       depend on whether prefetch instructions will be emitted or not.
+       Use TARGET_SETMEM_PFD for checking whether prefetch instructions
+       will be emitted or not.
+       * config/s390/s390.h (TARGET_SETMEM_PREFETCH_DISTANCE)
+       (TARGET_SETMEM_PFD): New macros.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (stmt_vec_info): Turn back into a typedef.
+       (NULL_STMT_VEC_INFO): Delete.
+       (stmt_vec_info::operator*): Likewise.
+       (stmt_vec_info::operator gimple *): Likewise.
+       * tree-vect-loop.c (vectorizable_reduction): Use NULL instead
+       of NULL_STMT_VEC_INFO.
+       * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
+       (vect_reassociating_reduction_p): Likewise.
+       * tree-vect-stmts.c (vect_build_gather_load_calls): Likewise.
+       (vectorizable_store): Likewise.
+       * tree-vectorizer.c (vec_info::set_vinfo_for_stmt): Likewise.
+       (vec_info::free_stmt_vec_infos): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vect_stmt_in_region_p): Delete.
+       * tree-vectorizer.c (vect_stmt_in_region_p): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vec_info::new_vinfo_for_stmt)
+       (vec_info::set_vinfo_for_stmt, vec_info::free_stmt_vec_infos)
+       (vec_info::free_stmt_vec_info): New private member functions.
+       (set_stmt_vec_info_vec, free_stmt_vec_infos, vinfo_for_stmt)
+       (set_vinfo_for_stmt, new_stmt_vec_info, free_stmt_vec_info): Delete.
+       * tree-parloops.c (gather_scalar_reductions): Remove calls to
+       set_stmt_vec_info_vec and free_stmt_vec_infos.
+       * tree-vect-loop.c (_loop_vec_info): Remove call to
+       set_stmt_vec_info_vec.
+       * tree-vect-stmts.c (new_stmt_vec_info, set_stmt_vec_info_vec)
+       (free_stmt_vec_infos, free_stmt_vec_info): Delete in favor of...
+       * tree-vectorizer.c (vec_info::new_stmt_vec_info)
+       (vec_info::set_vinfo_for_stmt, vec_info::free_stmt_vec_infos)
+       (vec_info::free_stmt_vec_info): ...these new functions.  Remove
+       assignments in {vec_info::,}new_stmt_vec_info that are redundant
+       with the clearing in the xcalloc.
+       (stmt_vec_info_vec): Delete.
+       (vec_info::vec_info): Don't call set_stmt_vec_info_vec.
+       (vectorize_loops): Likewise.
+       (vec_info::~vec_info): Remove argument from call to
+       free_stmt_vec_infos.
+       (vec_info::add_stmt): Remove vinfo argument from call to
+       new_stmt_vec_info.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (free_stmt_vec_info): Take a stmt_vec_info
+       rather than a gimple stmt.
+       * tree-vect-stmts.c (free_stmt_vec_info): Likewise.  Don't free
+       information for pattern statements when passed the original
+       statement; instead wait to be passed the pattern statement itself.
+       Don't call set_vinfo_for_stmt here.
+       (free_stmt_vec_infos): Update call to free_stmt_vec_info.
+       * tree-vect-loop.c (_loop_vec_info::~loop_vec_info): Don't free
+       stmt_vec_infos here.
+       * tree-vect-slp.c (_bb_vec_info::~bb_vec_info): Likewise.
+       * tree-vectorizer.c (vec_info::remove_stmt): Nullify the statement's
+       stmt_vec_infos entry.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vec_info::replace_stmt): Declare.
+       * tree-vectorizer.c (vec_info::replace_stmt): New function.
+       * tree-vect-slp.c (vect_remove_slp_scalar_calls): Use it.
+       * tree-vect-stmts.c (vectorizable_call): Likewise.
+       (vectorizable_simd_clone_call): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vec_info::remove_stmt): Declare.
+       * tree-vectorizer.c (vec_info::remove_stmt): New function.
+       * tree-vect-loop-manip.c (vect_set_loop_condition): Use it.
+       * tree-vect-loop.c (vect_transform_loop): Likewise.
+       * tree-vect-slp.c (vect_schedule_slp): Likewise.
+       * tree-vect-stmts.c (vect_remove_stores): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vec_info::lookup_dr): New member function.
+       (vect_dr_stmt): Delete.
+       * tree-vectorizer.c (vec_info::lookup_dr): New function.
+       * tree-vect-loop-manip.c (vect_update_inits_of_drs): Use it instead
+       of DR_VECT_AUX.
+       * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
+       (vect_analyze_data_ref_dependence, vect_record_base_alignments)
+       (vect_verify_datarefs_alignment, vect_peeling_supportable)
+       (vect_analyze_data_ref_accesses, vect_prune_runtime_alias_test_list)
+       (vect_analyze_data_refs): Likewise.
+       (vect_slp_analyze_data_ref_dependence): Likewise.  Take a vec_info
+       argument.
+       (vect_find_same_alignment_drs): Likewise.
+       (vect_slp_analyze_node_dependences): Update calls accordingly.
+       (vect_analyze_data_refs_alignment): Likewise.  Use vec_info::lookup_dr
+       instead of DR_VECT_AUX.
+       (vect_get_peeling_costs_all_drs): Take a loop_vec_info instead
+       of a vector data references.  Use vec_info::lookup_dr instead of
+       DR_VECT_AUX.
+       (vect_peeling_hash_get_lowest_cost): Update calls accordingly.
+       (vect_enhance_data_refs_alignment): Likewise.  Use vec_info::lookup_dr
+       instead of DR_VECT_AUX.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (_loop_vec_info::unaligned_dr): Change to
+       dr_vec_info.
+       * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Update
+       accordingly.
+       * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
+       * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
+       (vect_gen_prolog_loop_niters): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (set_dr_misalignment, dr_misalignment)
+       (DR_TARGET_ALIGNMENT, aligned_access_p, known_alignment_for_access_p)
+       (vect_known_alignment_in_bytes, vect_dr_behavior)
+       (vect_get_scalar_dr_size): Take references as dr_vec_infos
+       instead of data_references.  Update calls to other routines for
+       which the same change has been made.
+       * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Take
+       dr_vec_infos instead of stmt_vec_infos.
+       (vect_analyze_data_ref_dependence): Update call accordingly.
+       (vect_slp_analyze_data_ref_dependence)
+       (vect_record_base_alignments): Use DR_VECT_AUX.
+       (vect_calculate_target_alignment, vect_compute_data_ref_alignment)
+       (vect_update_misalignment_for_peel, verify_data_ref_alignment)
+       (vector_alignment_reachable_p, vect_get_data_access_cost)
+       (vect_peeling_supportable, vect_analyze_group_access_1)
+       (vect_analyze_group_access, vect_analyze_data_ref_access)
+       (vect_vfa_segment_size, vect_vfa_access_size, vect_vfa_align)
+       (vect_compile_time_alias, vect_small_gap_p)
+       (vectorizable_with_step_bound_p, vect_duplicate_ssa_name_ptr_info):
+       (vect_supportable_dr_alignment): Take references as dr_vec_infos
+       instead of data_references.  Update calls to other routines for
+       which the same change has been made.
+       (vect_verify_datarefs_alignment, vect_get_peeling_costs_all_drs)
+       (vect_find_same_alignment_drs, vect_analyze_data_refs_alignment)
+       (vect_slp_analyze_and_verify_node_alignment)
+       (vect_analyze_data_ref_accesses, vect_prune_runtime_alias_test_list)
+       (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr)
+       (vect_setup_realignment): Use dr_vec_infos.  Update calls after
+       above changes.
+       (_vect_peel_info::dr): Replace with...
+       (_vect_peel_info::dr_info): ...this new field.
+       (vect_peeling_hash_get_most_frequent)
+       (vect_peeling_hash_choose_best_peeling): Update accordingly.
+       (vect_peeling_hash_get_lowest_cost):
+       (vect_enhance_data_refs_alignment): Likewise.  Update calls to other
+       routines for which the same change has been made.
+       (vect_peeling_hash_insert): Likewise.  Take a dr_vec_info instead of a
+       data_reference.
+       * tree-vect-loop-manip.c (get_misalign_in_elems)
+       (vect_gen_prolog_loop_niters): Use dr_vec_infos.  Update calls after
+       above changes.
+       * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
+       * tree-vect-stmts.c (vect_get_store_cost, vect_get_load_cost)
+       (vect_truncate_gather_scatter_offset, compare_step_with_zero)
+       (get_group_load_store_type, get_negative_load_store_type)
+       (vect_get_data_ptr_increment, vectorizable_store)
+       (vectorizable_load): Likewise.
+       (ensure_base_align): Take a dr_vec_info instead of a data_reference.
+       Update calls to other routines for which the same change has been made.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vec_info::move_dr): New member function.
+       (dataref_aux): Rename to...
+       (dr_vec_info): ...this and add "dr" and "stmt" fields.
+       (_stmt_vec_info::dr_aux): Update accordingly.
+       (_stmt_vec_info::data_ref_info): Delete.
+       (STMT_VINFO_GROUPED_ACCESS, DR_GROUP_FIRST_ELEMENT)
+       (DR_GROUP_NEXT_ELEMENT, DR_GROUP_SIZE, DR_GROUP_STORE_COUNT)
+       (DR_GROUP_GAP, DR_GROUP_SAME_DR_STMT, REDUC_GROUP_FIRST_ELEMENT):
+       (REDUC_GROUP_NEXT_ELEMENT, REDUC_GROUP_SIZE): Use dr_aux.dr instead
+       of data_ref.
+       (STMT_VINFO_DATA_REF): Likewise.  Turn into an lvalue.
+       (STMT_VINFO_DR_INFO): New macro.
+       (DR_VECT_AUX): Use STMT_VINFO_DR_INKFO and vect_dr_stmt.
+       (set_dr_misalignment): Update after rename of dataref_aux.
+       (vect_dr_stmt): Move earlier in file.  Return dr_aux.stmt.
+       * tree-vect-stmts.c (new_stmt_vec_info): Remove redundant
+       initialization of STMT_VINFO_DATA_REF.
+       * tree-vectorizer.c (vec_info::move_dr): New function.
+       * tree-vect-patterns.c (vect_recog_bool_pattern)
+       (vect_recog_mask_conversion_pattern)
+       (vect_recog_gather_scatter_pattern): Use it.
+       * tree-vect-data-refs.c (vect_analyze_data_refs): Initialize
+       the "dr" and "stmt" fields of dr_vec_info instead of
+       STMT_VINFO_DATA_REF.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (_stmt_vec_info::pattern_stmt_p): New field.
+       (is_pattern_stmt_p): Use it.
+       * tree-vect-patterns.c (vect_init_pattern_stmt): Set pattern_stmt_p
+       on pattern statements.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-patterns.c (vect_mark_pattern_stmts): Take the
+       original stmt as a stmt_vec_info rather than a gimple stmt.
+       (vect_pattern_recog_1): Take the statement directly as a
+       stmt_vec_info, rather than via a gimple_stmt_iterator.
+       Update call to vect_mark_pattern_stmts.
+       (vect_pattern_recog): Update calls accordingly.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vect_get_vec_defs_for_stmt_copy)
+       (vect_get_vec_def_for_stmt_copy): Take a vec_info rather than
+       a vect_def_type for the first argument.
+       * tree-vect-stmts.c (vect_get_vec_defs_for_stmt_copy): Likewise.
+       (vect_get_vec_def_for_stmt_copy): Likewise.  Return the original
+       operand if it isn't defined by a vectorized statement.
+       (vect_build_gather_load_calls): Remove the mask_dt argument and
+       update calls to vect_get_vec_def_for_stmt_copy.
+       (vectorizable_bswap): Likewise the dt argument.
+       (vectorizable_call): Update calls to vectorizable_bswap and
+       vect_get_vec_def_for_stmt_copy.
+       (vectorizable_simd_clone_call, vectorizable_assignment)
+       (vectorizable_shift, vectorizable_operation, vectorizable_condition)
+       (vectorizable_comparison): Update calls to
+       vect_get_vec_def_for_stmt_copy.
+       (vectorizable_store): Likewise.  Remove now-unnecessary calls to
+       vect_is_simple_use.
+       (vect_get_loop_based_defs): Remove dt argument and update call
+       to vect_get_vec_def_for_stmt_copy.
+       (vectorizable_conversion): Update calls to vect_get_loop_based_defs
+       and vect_get_vec_def_for_stmt_copy.
+       (vectorizable_load): Update calls to vect_build_gather_load_calls
+       and vect_get_vec_def_for_stmt_copy.
+       * tree-vect-loop.c (vect_create_epilog_for_reduction)
+       (vectorizable_reduction, vectorizable_live_operation): Update calls
+       to vect_get_vec_def_for_stmt_copy.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-data-refs.c (vect_record_base_alignment): Replace vec_info
+       and gimple stmt arguments with a stmt_vec_info.
+       (vect_record_base_alignments): Update calls accordingly.
+       * tree-vect-slp.c (vect_record_max_nunits): Replace vec_info
+       and gimple stmt arguments with a stmt_vec_info.
+       (vect_build_slp_tree_1): Remove vinfo argument and update call
+       to vect_record_max_nunits.
+       (vect_build_slp_tree_2): Update calls to vect_build_slp_tree_1
+       and vect_record_max_nunits.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (nested_in_vect_loop_p): Move further down
+       file and take a stmt_vec_info instead of a gimple stmt.
+       (supportable_widening_operation, vect_finish_replace_stmt)
+       (vect_finish_stmt_generation, vect_get_store_rhs)
+       (vect_get_vec_def_for_operand_1, vect_get_vec_def_for_operand)
+       (vect_get_vec_defs, vect_init_vector, vect_transform_stmt)
+       (vect_remove_stores, vect_analyze_stmt, vectorizable_condition)
+       (vect_get_smallest_scalar_type, vect_check_gather_scatter)
+       (vect_create_data_ref_ptr, bump_vector_ptr)
+       (vect_permute_store_chain, vect_setup_realignment)
+       (vect_transform_grouped_load, vect_record_grouped_load_vectors)
+       (vect_create_addr_base_for_vector_ref, vectorizable_live_operation)
+       (vectorizable_reduction, vectorizable_induction)
+       (get_initial_def_for_reduction, is_simple_and_all_uses_invariant)
+       (vect_get_place_in_interleaving_chain): Take stmt_vec_infos rather
+       than gimple stmts as arguments.
+       * tree-vect-data-refs.c (vect_get_smallest_scalar_type)
+       (vect_preserves_scalar_order_p, vect_slp_analyze_node_dependences)
+       (can_group_stmts_p, vect_check_gather_scatter)
+       (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr)
+       (bump_vector_ptr, vect_permute_store_chain, vect_setup_realignment)
+       (vect_permute_load_chain, vect_shift_permute_load_chain)
+       (vect_transform_grouped_load)
+       (vect_record_grouped_load_vectors): Likewise.
+       * tree-vect-loop.c (vect_fixup_reduc_chain)
+       (get_initial_def_for_reduction, vect_create_epilog_for_reduction)
+       (vectorize_fold_left_reduction, is_nonwrapping_integer_induction)
+       (vectorizable_reduction, vectorizable_induction)
+       (vectorizable_live_operation, vect_loop_kill_debug_uses): Likewise.
+       * tree-vect-patterns.c (type_conversion_p, adjust_bool_stmts)
+       (vect_get_load_store_mask): Likewise.
+       * tree-vect-slp.c (vect_get_place_in_interleaving_chain)
+       (vect_analyze_slp_instance, vect_mask_constant_operand_p): Likewise.
+       * tree-vect-stmts.c (vect_mark_relevant)
+       (is_simple_and_all_uses_invariant)
+       (exist_non_indexing_operands_for_use_p, process_use)
+       (vect_init_vector_1, vect_init_vector, vect_get_vec_def_for_operand_1)
+       (vect_get_vec_def_for_operand, vect_get_vec_defs)
+       (vect_finish_stmt_generation_1, vect_finish_replace_stmt)
+       (vect_finish_stmt_generation, vect_truncate_gather_scatter_offset)
+       (compare_step_with_zero, vect_get_store_rhs, get_group_load_store_type)
+       (get_negative_load_store_type, get_load_store_type)
+       (vect_check_load_store_mask, vect_check_store_rhs)
+       (vect_build_gather_load_calls, vect_get_strided_load_store_ops)
+       (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call)
+       (vect_create_vectorized_demotion_stmts, vectorizable_conversion)
+       (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
+       (get_group_alias_ptr_type, vectorizable_store, hoist_defs_of_uses)
+       (vectorizable_load, vectorizable_condition, vectorizable_comparison)
+       (vect_analyze_stmt, vect_transform_stmt, vect_remove_stores)
+       (supportable_widening_operation): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-data-refs.c (vect_describe_gather_scatter_call): Take
+       a stmt_vec_info instead of a gcall.
+       (vect_check_gather_scatter): Update call accordingly.
+       * tree-vect-loop-manip.c (iv_phi_p): Take a stmt_vec_info instead
+       of a gphi.
+       (vect_can_advance_ivs_p, vect_update_ivs_after_vectorizer)
+       (slpeel_update_phi_nodes_for_loops):): Update calls accordingly.
+       * tree-vect-loop.c (vect_transform_loop_stmt): Take a stmt_vec_info
+       instead of a gimple stmt.
+       (vect_transform_loop): Update calls accordingly.
+       * tree-vect-slp.c (vect_split_slp_store_group): Take and return
+       stmt_vec_infos instead of gimple stmts.
+       (vect_analyze_slp_instance): Update use accordingly.
+       * tree-vect-stmts.c (read_vector_array, write_vector_array)
+       (vect_clobber_variable, vect_stmt_relevant_p, permute_vec_elements)
+       (vect_use_strided_gather_scatters_p, vect_build_all_ones_mask)
+       (vect_build_zero_merge_argument, vect_get_gather_scatter_ops)
+       (vect_gen_widened_results_half, vect_get_loop_based_defs)
+       (vect_create_vectorized_promotion_stmts, can_vectorize_live_stmts):
+       Take a stmt_vec_info instead of a gimple stmt and pass stmt_vec_infos
+       down to subroutines.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Change the type
+       of the worklist from a vector of gimple stmts to a vector of
+       stmt_vec_infos.
+       * tree-vect-stmts.c (vect_mark_relevant, process_use)
+       (vect_mark_stmts_to_be_vectorized): Likewise
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-loop.c (vect_analyze_loop_operations): Look up the
+       statement before passing it to vect_analyze_stmt.
+       (vect_create_epilog_for_reduction): Use a stmt_vec_info to walk
+       the chain of phi vector definitions.  Track the exit phi via its
+       stmt_vec_info.
+       (vectorizable_reduction): Set cond_stmt_vinfo directly from the
+       STMT_VINFO_REDUC_DEF.
+       * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Use
+       stmt_vec_infos to handle the statement chains.
+       (vect_get_slp_defs): Record the first statement in the node
+       using a stmt_vec_info.
+       * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Look up
+       statements here and pass their stmt_vec_info down to subroutines.
+       (vect_init_vector_1): Hoist call to vinfo_for_stmt and pass it
+       down to vect_finish_stmt_generation.
+       (vect_init_vector, vect_get_vec_defs, vect_finish_replace_stmt)
+       (vect_finish_stmt_generation): Call vinfo_for_stmt and pass
+       stmt_vec_infos to subroutines.
+       (vect_remove_stores): Use stmt_vec_infos to handle the statement
+       chains.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-data-refs.c (vect_slp_analyze_node_dependences):
+       (vect_check_gather_scatter, vect_create_data_ref_ptr, bump_vector_ptr)
+       (vect_permute_store_chain, vect_setup_realignment)
+       (vect_permute_load_chain, vect_shift_permute_load_chain)
+       (vect_transform_grouped_load): Use stmt_vec_info rather than gimple
+       stmts internally, and when passing values to other vectorizer routines.
+       * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Likewise.
+       * tree-vect-loop.c (vect_analyze_scalar_cycles_1)
+       (vect_analyze_loop_operations, get_initial_def_for_reduction)
+       (vect_create_epilog_for_reduction, vectorize_fold_left_reduction)
+       (vectorizable_reduction, vectorizable_induction)
+       (vectorizable_live_operation, vect_transform_loop_stmt)
+       (vect_transform_loop): Likewise.
+       * tree-vect-patterns.c (vect_reassociating_reduction_p)
+       (vect_recog_widen_op_pattern, vect_recog_mixed_size_cond_pattern)
+       (vect_recog_bool_pattern, vect_recog_gather_scatter_pattern): Likewise.
+       * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
+       (vect_slp_analyze_node_operations_1): Likewise.
+       * tree-vect-stmts.c (vect_mark_relevant, process_use)
+       (exist_non_indexing_operands_for_use_p, vect_init_vector_1)
+       (vect_mark_stmts_to_be_vectorized, vect_get_vec_def_for_operand)
+       (vect_finish_stmt_generation_1, get_group_load_store_type)
+       (get_load_store_type, vect_build_gather_load_calls)
+       (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call)
+       (vect_create_vectorized_demotion_stmts, vectorizable_conversion)
+       (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
+       (vectorizable_store, vectorizable_load, vectorizable_condition)
+       (vectorizable_comparison, vect_analyze_stmt, vect_transform_stmt)
+       (supportable_widening_operation): Likewise.
+       (vect_get_vector_types_for_stmt): Likewise.
+       * tree-vectorizer.h (vect_dr_behavior): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
+       (vect_slp_analyze_node_dependences, vect_analyze_data_ref_accesses)
+       (vect_permute_store_chain, vect_permute_load_chain)
+       (vect_shift_permute_load_chain, vect_transform_grouped_load): Avoid
+       repeated stmt_vec_info lookups.
+       * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Likewise.
+       (vect_update_ivs_after_vectorizer): Likewise.
+       * tree-vect-loop.c (vect_is_simple_reduction): Likewise.
+       (vect_create_epilog_for_reduction, vectorizable_reduction): Likewise.
+       * tree-vect-patterns.c (adjust_bool_stmts): Likewise.
+       * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
+       (vect_bb_slp_scalar_cost): Likewise.
+       * tree-vect-stmts.c (get_group_alias_ptr_type): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-data-refs.c (vect_check_gather_scatter): Pass the
+       gcall rather than the generic gimple stmt to gimple_call_internal_fn.
+       (vect_get_smallest_scalar_type, can_group_stmts_p): Use dyn_cast
+       to get gassigns and gcalls, rather than operating on generc gimple
+       stmts.
+       * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p)
+       (vect_mark_stmts_to_be_vectorized, vectorizable_store)
+       (vectorizable_load, vect_analyze_stmt): Likewise.
+       * tree-vect-loop.c (vectorizable_reduction): Likewise gphi.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (get_earlier_stmt, get_later_stmt): Take and
+       return stmt_vec_infos rather than gimple stmts.  Do not accept
+       null arguments.
+       (vect_find_last_scalar_stmt_in_slp): Return a stmt_vec_info instead
+       of a gimple stmt.
+       * tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Likewise.
+       Update use of get_later_stmt.
+       (vect_get_constant_vectors): Update call accordingly.
+       (vect_schedule_slp_instance): Likewise
+       * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Likewise.
+       (vect_slp_analyze_instance_dependence): Likewise.
+       (vect_preserves_scalar_order_p): Update use of get_earlier_stmt.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (stmt_info_for_cost::stmt): Replace with...
+       (stmt_info_for_cost::stmt_info): ...this new field.
+       (add_stmt_costs): Update accordingly.
+       * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost)
+       (vect_get_known_peeling_cost): Likewise.
+       (vect_estimate_min_profitable_iters): Likewise.
+       * tree-vect-stmts.c (record_stmt_cost): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (_loop_vec_info::may_misalign_stmts): Change
+       from an auto_vec<gimple *> to an auto_vec<stmt_vec_info>.
+       * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Update
+       accordingly.
+       * tree-vect-loop-manip.c (vect_create_cond_for_align_checks): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (_stmt_vec_info::same_dr_stmt): Change from
+       a gimple stmt to a stmt_vec_info.
+       * tree-vect-stmts.c (vectorizable_load): Update accordingly.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vec_info::grouped_stores): Change from
+       an auto_vec<gimple *> to an auto_vec<stmt_vec_info>.
+       (_loop_vec_info::reduction_chains): Likewise.
+       * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): Update
+       accordingly.
+       * tree-vect-slp.c (vect_analyze_slp): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (_stmt_vec_info::first_element): Change from
+       a gimple stmt to a stmt_vec_info.
+       (_stmt_vec_info::next_element): Likewise.
+       * tree-vect-data-refs.c (vect_update_misalignment_for_peel)
+       (vect_slp_analyze_and_verify_node_alignment)
+       (vect_analyze_group_access_1, vect_analyze_group_access)
+       (vect_small_gap_p, vect_prune_runtime_alias_test_list)
+       (vect_create_data_ref_ptr, vect_record_grouped_load_vectors)
+       (vect_supportable_dr_alignment): Update accordingly.
+       * tree-vect-loop.c (vect_fixup_reduc_chain): Likewise.
+       (vect_fixup_scalar_cycles_with_patterns, vect_is_slp_reduction)
+       (vect_is_simple_reduction, vectorizable_reduction): Likewise.
+       * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
+       * tree-vect-slp.c (vect_build_slp_tree_1)
+       (vect_attempt_slp_rearrange_stmts, vect_supported_load_permutation_p)
+       (vect_split_slp_store_group, vect_analyze_slp_instance)
+       (vect_analyze_slp, vect_transform_slp_perm_load): Likewise.
+       * tree-vect-stmts.c (vect_model_store_cost, vect_model_load_cost)
+       (get_group_load_store_type, get_load_store_type)
+       (get_group_alias_ptr_type, vectorizable_store, vectorizable_load)
+       (vect_transform_stmt, vect_remove_stores): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vect_dr_stmt): Return a stmt_vec_info rather
+       than a gimple stmt.
+       * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
+       (vect_slp_analyze_data_ref_dependence, vect_record_base_alignments)
+       (vect_calculate_target_alignmentm, vect_compute_data_ref_alignment)
+       (vect_update_misalignment_for_peel, vect_verify_datarefs_alignment)
+       (vector_alignment_reachable_p, vect_get_data_access_cost)
+       (vect_get_peeling_costs_all_drs, vect_peeling_hash_get_lowest_cost)
+       (vect_peeling_supportable, vect_enhance_data_refs_alignment)
+       (vect_find_same_alignment_drs, vect_analyze_data_refs_alignment)
+       (vect_analyze_group_access_1, vect_analyze_group_access)
+       (vect_analyze_data_ref_access, vect_analyze_data_ref_accesses)
+       (vect_vfa_access_size, vect_small_gap_p, vect_analyze_data_refs)
+       (vect_supportable_dr_alignment): Remove vinfo_for_stmt from the
+       result of vect_dr_stmt and use the stmt_vec_info instead of
+       the associated gimple stmt.
+       * 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.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (_slp_tree::stmts): Change from a vec<gimple *>
+       to a vec<stmt_vec_info>.
+       * tree-vect-slp.c (vect_free_slp_tree): Update accordingly.
+       (vect_create_new_slp_node): Take a vec<gimple *> instead of a
+       vec<stmt_vec_info>.
+       (_slp_oprnd_info::def_stmts): Change from a vec<gimple *>
+       to a vec<stmt_vec_info>.
+       (bst_traits::value_type, bst_traits::value_type): Likewise.
+       (bst_traits::hash): Update accordingly.
+       (vect_get_and_check_slp_defs): Change the stmts parameter from
+       a vec<gimple *> to a vec<stmt_vec_info>.
+       (vect_two_operations_perm_ok_p, vect_build_slp_tree_1): Likewise.
+       (vect_build_slp_tree): Likewise.
+       (vect_build_slp_tree_2): Likewise.  Update uses of
+       SLP_TREE_SCALAR_STMTS.
+       (vect_print_slp_tree): Update uses of SLP_TREE_SCALAR_STMTS.
+       (vect_mark_slp_stmts, vect_mark_slp_stmts_relevant)
+       (vect_slp_rearrange_stmts, vect_attempt_slp_rearrange_stmts)
+       (vect_supported_load_permutation_p, vect_find_last_scalar_stmt_in_slp)
+       (vect_detect_hybrid_slp_stmts, vect_slp_analyze_node_operations_1)
+       (vect_slp_analyze_node_operations, vect_slp_analyze_operations)
+       (vect_bb_slp_scalar_cost, vect_slp_analyze_bb_1)
+       (vect_get_constant_vectors, vect_get_slp_defs)
+       (vect_transform_slp_perm_load, vect_schedule_slp_instance)
+       (vect_remove_slp_scalar_calls, vect_schedule_slp): Likewise.
+       (vect_analyze_slp_instance): Build up a vec of stmt_vec_infos
+       instead of gimple stmts.
+       * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Change
+       the stores parameter for a vec<gimple *> to a vec<stmt_vec_info>.
+       (vect_slp_analyze_instance_dependence): Update uses of
+       SLP_TREE_SCALAR_STMTS.
+       (vect_slp_analyze_and_verify_node_alignment): Likewise.
+       (vect_slp_analyze_and_verify_instance_alignment): Likewise.
+       * tree-vect-loop.c (neutral_op_for_slp_reduction): Likewise.
+       (get_initial_defs_for_reduction): Likewise.
+       (vect_create_epilog_for_reduction): Likewise.
+       (vectorize_fold_left_reduction): Likewise.
+       * tree-vect-stmts.c (vect_prologue_cost_for_slp_op): Likewise.
+       (vect_model_simple_cost, vectorizable_shift, vectorizable_load)
+       (can_vectorize_live_stmts): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (_loop_vec_info::reductions): Change from an
+       auto_vec<gimple *> to an auto_vec<stmt_vec_info>.
+       (vect_force_simple_reduction): Take and return stmt_vec_infos rather
+       than gimple stmts.
+       * tree-parloops.c (valid_reduction_p): Take a stmt_vec_info instead
+       of a gimple stmt.
+       (gather_scalar_reductions): Update after above interface changes.
+       * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Likewise.
+       (vect_is_simple_reduction): Take and return stmt_vec_infos rather
+       than gimple stmts.
+       (vect_force_simple_reduction): Likewise.
+       * tree-vect-patterns.c (vect_pattern_recog_1): Update use of
+       LOOP_VINFO_REDUCTIONS.
+       * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (_stmt_vec_info::reduc_def): Change from
+       a gimple stmt to a stmt_vec_info.
+       * tree-vect-loop.c (vect_active_double_reduction_p)
+       (vect_force_simple_reduction, vectorizable_reduction): Update
+       accordingly.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (_slp_tree::vec_stmts): Change from a
+       vec<gimple *> to a vec<stmt_vec_info>.
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Change
+       the reduction_phis argument from a vec<gimple *> to a
+       vec<stmt_vec_info>.
+       (vectorizable_reduction): Likewise the phis local variable that
+       is passed to vect_create_epilog_for_reduction.  Update for new type
+       of SLP_TREE_VEC_STMTS.
+       (vectorizable_induction): Update for new type of SLP_TREE_VEC_STMTS.
+       (vectorizable_live_operation): Likewise.
+       * tree-vect-slp.c (vect_get_slp_vect_defs): Likewise.
+       (vect_transform_slp_perm_load, vect_schedule_slp_instance): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (_stmt_vec_info::vectorized_stmt): Change from
+       a gimple stmt to a stmt_vec_info.
+       (vectorizable_condition, vectorizable_live_operation)
+       (vectorizable_reduction, vectorizable_induction): Pass back the
+       vectorized statement as a stmt_vec_info.
+       * tree-vect-data-refs.c (vect_record_grouped_load_vectors): Update
+       use of STMT_VINFO_VEC_STMT.
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise,
+       accumulating the inner phis that feed the STMT_VINFO_VEC_STMT
+       as stmt_vec_infos rather than gimple stmts.
+       (vectorize_fold_left_reduction): Change vec_stmt from a gimple stmt
+       to a stmt_vec_info.
+       (vectorizable_live_operation): Likewise.
+       (vectorizable_reduction, vectorizable_induction): Likewise,
+       updating use of STMT_VINFO_VEC_STMT.
+       * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Update use
+       of STMT_VINFO_VEC_STMT.
+       (vect_build_gather_load_calls, vectorizable_bswap, vectorizable_call)
+       (vectorizable_simd_clone_call, vectorizable_conversion)
+       (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
+       (vectorizable_store, vectorizable_load, vectorizable_condition)
+       (vectorizable_comparison, can_vectorize_live_stmts): Change vec_stmt
+       from a gimple stmt to a stmt_vec_info.
+       (vect_transform_stmt): Update use of STMT_VINFO_VEC_STMT.  Pass a
+       pointer to a stmt_vec_info to the vectorizable_* routines.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (_stmt_vec_info::related_stmt): Change from
+       a gimple stmt to a stmt_vec_info.
+       (is_pattern_stmt_p): Update accordingly.
+       * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Likewise.
+       (vect_record_grouped_load_vectors): Likewise.
+       * tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise.
+       (vect_fixup_reduc_chain, vect_update_vf_for_slp): Likewise.
+       (vect_model_reduction_cost): Likewise.
+       (vect_create_epilog_for_reduction): Likewise.
+       (vectorizable_reduction, vectorizable_induction): Likewise.
+       * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
+       Return the stmt_vec_info for the pattern statement.
+       (vect_set_pattern_stmt): Update use of STMT_VINFO_RELATED_STMT.
+       (vect_split_statement, vect_mark_pattern_stmts): Likewise.
+       * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise.
+       (vect_detect_hybrid_slp, vect_get_slp_defs): Likewise.
+       * tree-vect-stmts.c (vect_mark_relevant): Likewise.
+       (vect_get_vec_def_for_operand_1, vectorizable_call): Likewise.
+       (vectorizable_simd_clone_call, vect_analyze_stmt, new_stmt_vec_info)
+       (free_stmt_vec_info, vect_is_simple_use): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vect_finish_replace_stmt): Return a stmt_vec_info
+       (vect_finish_stmt_generation): Likewise.
+       * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise.
+       (vect_finish_replace_stmt, vect_finish_stmt_generation): Likewise.
+       (vect_build_gather_load_calls): Use the return value of the above
+       functions instead of a separate call to vinfo_for_stmt.  Use narrow
+       scopes for the input gimple stmt and wider scopes for the associated
+       stmt_vec_info.  Use vec_info::lookup_def when setting these
+       stmt_vec_infos from an SSA_NAME definition.
+       (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call)
+       (vect_create_vectorized_demotion_stmts, vectorizable_conversion)
+       (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
+       (vectorizable_store, vectorizable_load, vectorizable_condition)
+       (vectorizable_comparison): Likewise.
+       * tree-vect-loop.c (vectorize_fold_left_reduction): Likewise.
+       (vectorizable_reduction): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vect_is_simple_use): Add an optional
+       stmt_vec_info * parameter before the optional gimple **.
+       * tree-vect-stmts.c (vect_is_simple_use): Likewise.
+       (process_use, vect_get_vec_def_for_operand_1): Update callers.
+       (vect_get_vec_def_for_operand, vectorizable_shift): Likewise.
+       * tree-vect-loop.c (vectorizable_reduction): Likewise.
+       (vectorizable_live_operation): Likewise.
+       * tree-vect-patterns.c (type_conversion_p): Likewise.
+       (vect_look_through_possible_promotion): Likewise.
+       (vect_recog_rotate_pattern): Likewise.
+       * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (stmt_vec_info): Temporarily change from
+       a typedef to a wrapper class.
+       (NULL_STMT_VEC_INFO): New macro.
+       (vec_info::stmt_infos): Change to vec<stmt_vec_info>.
+       (stmt_vec_info::operator*): New function.
+       (stmt_vec_info::operator gimple *): Likewise.
+       (set_vinfo_for_stmt): Use NULL_STMT_VEC_INFO.
+       (add_stmt_costs): Likewise.
+       * tree-vect-loop-manip.c (iv_phi_p): Likewise.
+       * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost)
+       (vect_get_known_peeling_cost): Likewise.
+       (vect_estimate_min_profitable_iters): Likewise.
+       * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
+       * tree-vect-slp.c (vect_remove_slp_scalar_calls): Likewise.
+       * tree-vect-stmts.c (vect_build_gather_load_calls): Likewise.
+       (vectorizable_store, free_stmt_vec_infos): Likewise.
+       (new_stmt_vec_info): Change return type of xcalloc to
+       _stmt_vec_info *.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vec_info::lookup_single_use): Declare.
+       * tree-vectorizer.c (vec_info::lookup_single_use): New function.
+       * tree-vect-loop.c (vectorizable_reduction): Use it instead of
+       a single_imm_use-based sequence.
+       * tree-vect-stmts.c (supportable_widening_operation): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vec_info::lookup_def): Declare.
+       * tree-vectorizer.c (vec_info::lookup_def): New function.
+       * tree-vect-patterns.c (vect_get_internal_def): Use it.
+       (vect_widened_op_tree): Likewise.
+       * tree-vect-stmts.c (vect_is_simple_use): Likewise.
+       * tree-vect-loop.c (vect_analyze_loop_operations): Likewise.
+       (vectorizable_reduction): Likewise.
+       (vect_valid_reduction_input_p): Take a stmt_vec_info instead
+       of a gimple *.
+       (vect_is_slp_reduction): Update calls accordingly.  Use
+       vec_info::lookup_def.
+       (vect_is_simple_reduction): Likewise
+       * tree-vect-slp.c (vect_detect_hybrid_slp_1): Use vec_info::lookup_def.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vec_info::lookup_stmt): Declare.
+       * tree-vectorizer.c (vec_info::lookup_stmt): New function.
+       * tree-vect-loop.c (vect_determine_vf_for_stmt): Use it instead
+       of vinfo_for_stmt.
+       (vect_determine_vectorization_factor, vect_analyze_scalar_cycles_1)
+       (vect_compute_single_scalar_iteration_cost, vect_analyze_loop_form)
+       (vect_update_vf_for_slp, vect_analyze_loop_operations)
+       (vect_is_slp_reduction, vectorizable_induction)
+       (vect_transform_loop_stmt, vect_transform_loop): Likewise.
+       * tree-vect-patterns.c (vect_init_pattern_stmt):
+       (vect_determine_min_output_precision_1, vect_determine_precisions)
+       (vect_pattern_recog): Likewise.
+       * tree-vect-stmts.c (vect_analyze_stmt, vect_transform_stmt): Likewise.
+       * config/powerpcspe/powerpcspe.c (rs6000_density_test): Likewise.
+       * config/rs6000/rs6000.c (rs6000_density_test): Likewise.
+       * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise.
+       (vect_detect_hybrid_slp_1, vect_detect_hybrid_slp_2)
+       (vect_detect_hybrid_slp): Likewise.  Change the walk_stmt_info
+       info field from a loop to a loop_vec_info.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (stmt_vec_info): Move typedef earlier in file.
+       (vec_info::add_stmt): Declare.
+       * tree-vectorizer.c (vec_info::add_stmt): New function.
+       * tree-vect-data-refs.c (vect_create_data_ref_ptr): Use it.
+       * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Likewise.
+       (vect_create_epilog_for_reduction, vectorizable_reduction): Likewise.
+       (vectorizable_induction): Likewise.
+       * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Likewise.
+       * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise.
+       (vectorizable_simd_clone_call, vectorizable_store): Likewise.
+       (vectorizable_load): Likewise.
+       * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
+       (vect_recog_bool_pattern, vect_recog_mask_conversion_pattern)
+       (vect_recog_gather_scatter_pattern): Likewise.
+       (append_pattern_def_seq): Likewise.  Remove a check that is
+       performed by add_stmt itself.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-loop.c (vectorizable_reduction): Fix an instance in
+       which make_ssa_name was called with new_stmt before new_stmt
+       had been created.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-loop.c (vect_valid_reduction_input_p): New function,
+       split out from...
+       (vect_is_slp_reduction): ...here...
+       (vect_is_simple_reduction): ...and here.  Remove repetition of tests
+       that are already known to be false.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (vect_free_slp_instance): Add a final_p parameter.
+       * tree-vect-slp.c (vect_free_slp_tree): Likewise.  Don't update
+       STMT_VINFO_NUM_SLP_USES when it's true.
+       (vect_free_slp_instance): Add a final_p parameter and pass it to
+       vect_free_slp_tree.
+       (vect_build_slp_tree_2): Update call to vect_free_slp_instance.
+       (vect_analyze_slp_instance): Likewise.
+       (vect_slp_analyze_operations): Likewise.
+       (vect_slp_analyze_bb_1): Likewise.
+       * tree-vectorizer.c (vec_info): Likewise.
+       * tree-vect-loop.c (vect_transform_loop): Likewise.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-loop.c (vectorizable_reduction): Assert that the
+       function is not called for second and subsequent members of
+       a reduction group.
+
+2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-loop.c (get_initial_def_for_reduction): Move special
+       cases for nested loops from here to ...
+       (vect_create_epilog_for_reduction): ...here.  Only call
+       vect_is_simple_use for inner-loop reductions.
+
+2018-07-31  Martin Liska  <mliska@suse.cz>
+
+        PR gcov-profile/85338
+        PR gcov-profile/85350
+        PR gcov-profile/85372
+        * profile.c (struct location_triplet): New.
+       (struct location_triplet_hash): Likewise.
+       (output_location): Do not output a BB that
+        is already recorded for a line.
+       (branch_prob): Use streamed_locations.
+
+2018-07-31  Martin Liska  <mliska@suse.cz>
+
+        PR gcov-profile/85370
+       * coverage.c (coverage_begin_function): Do not mark target
+        clones as artificial functions.
+
+2018-07-31  Martin Liska  <mliska@suse.cz>
+
+        PR gcov-profile/83813
+        PR gcov-profile/84758
+        PR gcov-profile/85217
+        PR gcov-profile/85332
+       * profile.c (branch_prob): Do not record GOTO expressions
+        for GIMPLE statements which locations are already streamed.
+
+2018-07-31  Olivier Hainque  <hainque@adacore.com>
+
+       * gcc.c (handle_spec_function): Accept a soft_matched_part
+       argument, as do_spec_1.  Pass it down to ...
+       (eval_spec_function): Accept a soft_matched_part argument,
+       and pass it down to ...
+       (do_spec_2): Accept a soft_matched_part argument, and pass
+       it down to do_spec_1.
+       (do_spec_1): Pass soft_matched_part to handle_spec_function.
+       (handle_braces): Update call to handle_spec_function.
+       (driver::set_up_specs): Update calls to do_spec_2.
+       (compare_debug_dump_opt_spec_function): Likewise.
+       (compare_debug_self_opt_spec_function): Likewise.
+
+2018-07-31  Olivier Hainque  <hainque@adacore.com>
+
+       * common.opt (nolibc): New option.
+       * doc/invoke.texi (Link Options): Document it.
+       * gcc.c (LINK_GCC_C_SEQUENCE_SPEC): Honor nolibc.
+       * config/alpha/linux.h: Likewise.
+       * config/arc/elf.h: Likewise.
+       * config/arm/uclinux-elf.h: Likewise.
+       * config/arm/unknown-elf.h: Likewise.
+       * config/avr/avrlibc.h: Likewise.
+       * config/bfin/bfin.h: Likewise.
+       * config/bfin/linux.h: Likewise.
+       * config/bfin/uclinux.h: Likewise.
+       * config/darwin.h: Likewise.
+       * config/darwin10.h: Likewise.
+       * config/darwin12.h: Likewise.
+       * config/gnu-user.h: Likewise.
+       * config/lm32/uclinux-elf.h: Likewise.
+       * config/pa/pa-hpux11.h: Likewise.
+       * config/pa/pa64-hpux.h: Likewise.
+       * config/sparc/sparc.h: Likewise.
+
+2018-07-31  Olivier Hainque  <hainque@adacore.com>
+
+       * gcc.c (getenv_spec_function): Prepend '/' to value for allowed
+       undefined variables.
+
+2018-07-30  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR target/86640
+       * config/arm/arm.c (arm_block_set_aligned_vect): Use gen_int_mode
+       instead of GEN_INT.
+
+2018-07-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+       * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
+       terminated string literal.
+
+2018-07-30  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR rtl-optimization/85160
+       * combine.c (is_just_move): New function.
+       (try_combine): Allow combining two instructions into two if neither of
+       the original instructions was a move.
+
+2018-07-30  Alexander Monakov  <amonakov@ispras.ru>
+
+       PR target/86673
+       * doc/extend.texi (Global Register Variables): Discourage use of type
+       qualifiers.
+       (Local Register Variables): Likewise.
+
+2018-07-30  Richard Sandiford  <richard.sandiford@arm.com>
+
+       PR tree-optimization/86506
+       * hwint.h (ceil_log2): Resync with hwint.c implementation.
+
+2018-07-30  Ilya Leoshkevich  <iii@linux.ibm.com>
+
+        PR target/86547
+       * lra-constraints.c (spill_hard_reg_in_range): When selecting the
+       hard_regno, make sure no insn between `from` and `to` clobbers it.
+
+2018-07-30  Cesar Philippidis  <cesar@codesourcery.com>
+           Tom de Vries  <tdevries@suse.de>
+
+       * config/nvptx/nvptx.c (PTX_GANG_DEFAULT): Rename to ...
+       (PTX_DEFAULT_RUNTIME_DIM): ... this.
+       (nvptx_goacc_validate_dims): Set default worker and gang dims to
+       PTX_DEFAULT_RUNTIME_DIM.
+       (nvptx_dim_limit): Ignore GOMP_DIM_WORKER.
+
+2018-07-29  John David Anglin  <danglin@gcc.gnu.org>
+
+       * config/pa/pa.c (pa_output_addr_vec): Align address table.
+       * config/pa/pa.h (JUMP_TABLES_IN_TEXT_SECTION): Revise comment.
+       * config/pa/pa32-linux.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
+
+2018-07-27  Michael Meissner  <meissner@linux.ibm.com>
+
+       * config/rs6000/constraints.md (wG constraint): Delete, no longer
+       used.
+       * config/rs6000/predicates.md (p9_fusion_reg_operand): Rename
+       predicate to reflect toc fusion has been deleted.
+       (toc_fusion_mem_raw): Delete, no longer used.
+       (toc_fusion_mem_wrapped): Likewise.
+       * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete toc
+       fusion mask bit.
+       * config/rs6000/rs6000-protos.h (fusion_wrap_memory_address):
+       Delete, no longer used.
+       * config/rs6000/rs6000.c (struct rs6000_reg_addr): Delete fields
+       meant to be used for toc fusion.
+       (rs6000_debug_print_mode): Delete toc fusion debugging.
+       (rs6000_debug_reg_global): Likewise.
+       (rs6000_init_hard_regno_mode_ok): Delete setting up fields for toc
+       fusion and secondary reload support that were never used.
+       (rs6000_option_override_internal): Delete TOC fusion, that was only
+       partially defined, and it did not work unless you also used the
+       -mcmodel= switch.
+       (rs6000_legitimate_address_p): Delete TOC fusion support.
+       (rs6000_opt_masks): Likewise.
+       (fusion_wrap_memory_address): Delete function, no longer used.
+       (fusion_split_address); Delete TOC fusion support.
+       * config/rs6000/rs6000.h (TARGET_TOC_FUSION_INT): Delete, no
+       longer used with toc fusion being deleted.
+       (TARGET_TOC_FUSION_FP): Likewise.
+       * config/rs6000/rs6000.md (UNSPEC_FUSION_ADDIS): Delete TOC fusion
+       UNSPEC.
+       (toc fusion spliter): Delete TOC fusion support.
+       (toc_fusionload_<mode>): Likewise.
+       (toc_fusionload_di): Likewise.
+       (fusion_gpr_load_<mode>): Delete generator function, this insn no
+       longer needs to be named.  Rename predicate to delete TOC fusion.
+       (fusion_gpr_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
+       (fusion_gpr_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
+       (fusion_vsx_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
+       (fusion_vsx_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
+       (p9 fusion peephole2s): Rename predicate to delete TOC fusion.
+
+2018-07-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+
+       * doc/extend.texi (Basic PowerPC Built-in Functions Available on
+       ISA 2.05):  Replace __uint128_t with __uint128 and __int128_t with
+       __int128 in built-in function prototypes.
+       (PowerPC AltiVec Built-in Functions on ISA 2.07): Likewise.
+       (PowerPC AltiVec Built-in Functions on ISA 3.0): Likewise.
+
+2018-07-27  Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/86696
+       * tree-ssa-strlen.c (get_min_string_length): Handle all integer
+       types, including enums.
+       (handle_char_store): Be prepared for the above function to fail.
+
+2018-07-26  Qing Zhao  <qing.zhao@oracle.com>
+
+       * builtins.c (inline_expand_builtin_string_cmp): Disable inlining
+       when optimization level is lower than 2 or optimize for size.
+
+2018-07-26  Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/86043
+       PR tree-optimization/86042
+       * tree-ssa-strlen.c (handle_builtin_memcpy): Handle strict overlaps.
+       (get_string_cst_length): Rename...
+       (get_min_string_length): ...to this.  Add argument.
+       (handle_char_store): Extend to handle multi-character stores by
+       MEM_REF.
+       * tree.c (initializer_zerop): Use new argument.  Handle MEM_REF.
+       * tree.h (initializer_zerop): Add argument.
+
+2018-07-26  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/86660
+       * omp-low.c (scan_sharing_clauses): Don't ignore map clauses for
+       declare target to variables if they have always,{to,from,tofrom} map
+       kinds.
+
+2018-07-26  Martin Liska  <mliska@suse.cz>
+
+        PR lto/86548
+       * lto-wrapper.c: Add linker_output as prefix
+        for ltrans_output_file.
+
+2018-07-26  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR rtl-optimization/85805
+       * combine.c (reg_nonzero_bits_for_combine): Only use the last set
+       value for hard registers if that was written in the same mode.
+
+2018-07-26  Martin Liska  <mliska@suse.cz>
+
+       PR gcov-profile/86536
+       * gcov.c (format_gcov): Use printf format %.*f directly
+       and do not handle special values.
+
+2018-07-25  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * common/config/arc/arc-common.c (arc_option_optimization_table):
+       Update default optimizations for size.
+
+2018-07-25  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * config/arc/arc.md (movsf_insn): Add short instruction selection.
+       * config/arc/constraints.md (CfZ): New constraint.
+       * config/arc/fpu.md (addssf3_fpu): Use CfZ constraint.
+       (subsf3_fpu): Likewise.
+       (cmpsf_fpu): Likewise.
+       (cmpsf_fpu_uneq): Likewise.
+
+2018-07-25  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * config/arc/arc.c (compact_memory_operand_p): Check for uncached
+       accesses as well.
+       (arc_is_uncached_mem_p): uncached applies to both the variable and
+       the pointer.
+
+2018-07-25  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Add additional
+       register names.
+
+2018-07-25  David Malcolm  <dmalcolm@redhat.com>
+
+       * optinfo-emit-json.cc (class optrecord_json_writer): Convert
+       field "m_scopes" from vec to auto_vec.
+
+2018-07-25  Martin Liska  <mliska@suse.cz>
+
+       * config/powerpcspe/powerpcspe-protos.h (rs6000_loop_align): Fix
+        return type.
+
 2018-07-25  Richard Biener  <rguenther@suse.de>
 
        PR debug/86654