X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gcc%2FChangeLog;h=7d2323983ec26aab89715e685708b3d93e59d5be;hb=bd1f3566b12eb1e86d17b0c8c84c91ea5e9844b3;hp=92bd5ba1a0f93640d9515a0bc1ff655106ce387d;hpb=dddecc5c01a0cdeb06704ed98eac881ead550664;p=gcc.git diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92bd5ba1a0f..7d2323983ec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,759 @@ +2018-08-04 Martin Sebor + + PR tree-optimization/86571 + * gimple-ssa-sprintf.c (format_floating): Extend upper bound of + NaN output to 4. + +2018-08-03 Sandra Loosemore + + * config/nios2/nios2.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define. + +2018-08-03 Jeff Law + + PR target/86795 + * config/mn10300/mn10300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_safe_value_not_needed. + +2018-08-03 David Malcolm + + * 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 + + * 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 + + * 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 + + * 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 + + * predict.c (dump_prediction): Change to 2 digits + in fraction part. + +2018-08-03 Siddhesh Poyarekar + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + 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 + + * genemit.c (print_overload_test): Fix typo. + +2018-08-02 Richard Biener + + 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 + + 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 + + * 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) + (aarch64_reload_movcp, aarch64_reload_mov) + (aarch64_movdi_low, aarch64_movdi_high) + (aarch64_movhigh_di, aarch64_movlow_di): Add a '@' + character before the pattern name. + * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov) + (aarch64_rsqrte, aarch64_rsqrts) + (aarch64_simd_combine, aarch64_frecpe) + (aarch64_frecps): Likewise. + * config/aarch64/atomics.md (atomic_compare_and_swap) + (aarch64_compare_and_swap, aarch64_compare_and_swap_lse) + (aarch64_load_exclusive, aarch64_store_exclusive) + (aarch64_atomic_swp, aarch64_atomic_cas) + (aarch64_atomic_load): Likewise. + +2018-08-02 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_float_const_representable_p): + Allow HFmode constants if TARGET_FP_F16INST. + +2018-08-02 Jackson Woodruff + + 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 + + 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 + + * 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 + + 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 + + * match.pd: Optimise pointer range checks. + +2018-08-01 Richard Sandiford + + PR tree-optimization/86758 + * tree-vect-stmts.c (vectorizable_simd_clone_call): Don't try + to remove pattern statements. + +2018-08-01 Richard Sandiford + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + PR target/86800 + * config/nvptx/nvptx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to + speculation_safe_value_not_needed. + +2018-08-01 Richard Biener + + * tree-ssa-sccvn.c (visit_phi): Compare invariant addresses + as base and offset. + +2018-08-01 Martin Liska + + * 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 + + 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 + + * config/aarch64/aarch64-simd.md + (*aarch64_get_lane_zero_extendsi): Rename to... + (*aarch64_get_lane_zero_extend): ... This and + use GPI iterator instead of SI mode. + +2018-08-01 Richard Earnshaw + + * 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 + + * config/i386/i386.md (unspecv): Add UNSPECV_SPECULATION_BARRIER. + (speculation_barrier): New insn. + +2018-08-01 Richard Biener + + 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 + + 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 + + * 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 + Olivier Hainque + + * 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 + + * targhooks.c (default_have_speculation_safe_value): Add + ATTRIBUTE_UNUSED. + +2018-07-31 David Malcolm + + * 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 + + 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 + + * config/pdp11/pdp11.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine + to speculation_safe_value_not_needed. + +2018-07-31 Richard Earnshaw + + * 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 + + * config/aarch64/iterators.md (ALLI_TI): New iterator. + * config/aarch64/aarch64.md (despeculate_copy): New + expand. + (despeculate_copy_insn): New insn. + (despeculate_copyti_insn): New insn. + (despeculate_simple): 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 + + * 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): 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 + + * config/aarch64/aarch64.md (cb1): Disable when + aarch64_track_speculation is true. + (tb1): 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 + + * config/aarch64/aarch64.opt (mtrack-speculation): New target option. + +2018-07-31 Richard Earnshaw + + * config/aarch64.md (unspecv): Add UNSPECV_SPECULAION_BARRIER. + (speculation_barrier): New insn. + +2018-07-31 Richard Earnshaw + + * 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 + + * 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 + + * 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 + + PR tree-optimization/86741 + * tree-vrp.c (vrp_prop::check_mem_ref): Avoid incomplete types. + +2018-07-31 Andreas Krebbel + + * 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 + + * 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 * tree-vectorizer.h (vect_stmt_in_region_p): Delete.