Age | Commit message (Collapse) | Author | Files | Lines |
|
From-SVN: r267494
|
|
This patch adds a pass that versions loops with variable index strides
for the case in which the stride is 1. E.g.:
for (int i = 0; i < n; ++i)
x[i * stride] = ...;
becomes:
if (stepx == 1)
for (int i = 0; i < n; ++i)
x[i] = ...;
else
for (int i = 0; i < n; ++i)
x[i * stride] = ...;
This is useful for both vector code and scalar code, and in some cases
can enable further optimisations like loop interchange or pattern
recognition.
The pass gives a 7.6% improvement on Cortex-A72 for 554.roms_r at -O3
and a 2.4% improvement for 465.tonto. I haven't found any SPEC tests
that regress.
Sizewise, there's a 10% increase in .text for both 554.roms_r and
465.tonto. That's obviously a lot, but in tonto's case it's because
the whole program is written using assumed-shape arrays and pointers,
so a large number of functions really do benefit from versioning.
roms likewise makes heavy use of assumed-shape arrays, and that
improvement in performance IMO justifies the code growth.
The next biggest .text increase is 4.5% for 548.exchange2_r. I did see
a small (0.4%) speed improvement there, but although both 3-iteration runs
produced stable results, that might still be noise. There was a slightly
larger (non-noise) improvement for a 256-bit SVE model.
481.wrf and 521.wrf_r .text grew by 2.8% and 2.5% respectively, but
without any noticeable improvement in performance. No other test grew
by more than 2%.
Although the main SPEC beneficiaries are all Fortran tests, the
benchmarks we use for SVE also include some C and C++ tests that
benefit.
Using -frepack-arrays gives the same benefits in many Fortran cases.
The problem is that using that option inappropriately can force a full
array copy for arguments that the function only reads once, and so it
isn't really something we can turn on by default. The new pass is
supposed to give most of the benefits of -frepack-arrays without
the risk of unnecessary repacking.
The patch therefore enables the pass by default at -O3.
2018-12-17 Richard Sandiford <richard.sandiford@arm.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Kyrylo Tkachov <kyrylo.tkachov@arm.com>
gcc/
* doc/invoke.texi (-fversion-loops-for-strides): Document
(loop-versioning-group-size, loop-versioning-max-inner-insns)
(loop-versioning-max-outer-insns): Document new --params.
* Makefile.in (OBJS): Add gimple-loop-versioning.o.
* common.opt (fversion-loops-for-strides): New option.
* opts.c (default_options_table): Enable fversion-loops-for-strides
at -O3.
* params.def (PARAM_LOOP_VERSIONING_GROUP_SIZE)
(PARAM_LOOP_VERSIONING_MAX_INNER_INSNS)
(PARAM_LOOP_VERSIONING_MAX_OUTER_INSNS): New parameters.
* passes.def: Add pass_loop_versioning.
* timevar.def (TV_LOOP_VERSIONING): New time variable.
* tree-ssa-propagate.h
(substitute_and_fold_engine::substitute_and_fold): Add an optional
block parameter.
* tree-ssa-propagate.c
(substitute_and_fold_engine::substitute_and_fold): Likewise.
When passed, only walk blocks dominated by that block.
* tree-vrp.h (range_includes_p): Declare.
(range_includes_zero_p): Turn into an inline wrapper around
range_includes_p.
* tree-vrp.c (range_includes_p): New function, generalizing...
(range_includes_zero_p): ...this.
* tree-pass.h (make_pass_loop_versioning): Declare.
* gimple-loop-versioning.cc: New file.
gcc/testsuite/
* gcc.dg/loop-versioning-1.c: New test.
* gcc.dg/loop-versioning-10.c: Likewise.
* gcc.dg/loop-versioning-11.c: Likewise.
* gcc.dg/loop-versioning-2.c: Likewise.
* gcc.dg/loop-versioning-3.c: Likewise.
* gcc.dg/loop-versioning-4.c: Likewise.
* gcc.dg/loop-versioning-5.c: Likewise.
* gcc.dg/loop-versioning-6.c: Likewise.
* gcc.dg/loop-versioning-7.c: Likewise.
* gcc.dg/loop-versioning-8.c: Likewise.
* gcc.dg/loop-versioning-9.c: Likewise.
* gfortran.dg/loop_versioning_1.f90: Likewise.
* gfortran.dg/loop_versioning_2.f90: Likewise.
* gfortran.dg/loop_versioning_3.f90: Likewise.
* gfortran.dg/loop_versioning_4.f90: Likewise.
* gfortran.dg/loop_versioning_5.f90: Likewise.
* gfortran.dg/loop_versioning_6.f90: Likewise.
* gfortran.dg/loop_versioning_7.f90: Likewise.
* gfortran.dg/loop_versioning_8.f90: Likewise.
From-SVN: r267197
|
|
Consider the following RTL:
(insn (set (reg 65) (if_then_else (eq %cc 0) 1 0)))
(insn (parallel [(set %cc (compare (reg 65) 0)) (clobber %scratch)]))
(jump_insn (set %pc (if_then_else (ne %cc 0) (label_ref 23) %pc)))
Combine simplifies this into:
(note NOTE_INSN_DELETED)
(note NOTE_INSN_DELETED)
(jump_insn (set %pc (if_then_else (eq %cc 0) (label_ref 23) %pc)))
opening up the possibility to perform jump threading.
gcc/ChangeLog:
2018-12-03 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/80080
* cfgcleanup.c (class pass_postreload_jump): New pass.
(pass_postreload_jump::execute): Likewise.
(make_pass_postreload_jump): Likewise.
* passes.def: Add pass_postreload_jump before
pass_postreload_cse.
* tree-pass.h (make_pass_postreload_jump): New pass.
gcc/testsuite/ChangeLog:
2018-12-03 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/80080
* gcc.target/s390/pr80080-4.c: New test.
From-SVN: r266734
|
|
PR ipa/87706
* ipa-fnsummary.c (pass_ipa_fnsummary): Do not remove functions
* ipa.c (possible_inline_candidate_p): Break out from ..
(process_references): ... here ; drop before_inlining_p;
cleanup handling of alises.
(walk_polymorphic_call_targets): Likewise.
(symbol_table::remove_unreachable_nodes): Likewise.
* passes.c (pass_data_ipa_remove_symbols): New structure.
(pass_ipa_remove_symbols): New pass.
(make_pass_ipa_remove_symbols): New function.
* tree-pass.h (make_pass_ipa_remove_symbols): Declare.
* passes.def (pass_ipa_remove_symbols): Schedule after early passes.
From-SVN: r266320
|
|
gcc/brig/ChangeLog:
* brigfrontend/brig-to-generic.cc
(brig_to_generic::write_globals): Use TDF_NONE rather than 0.
(dump_function): Likewise.
gcc/c-family/ChangeLog:
* c-pretty-print.c (c_pretty_printer::statement): Use TDF_NONE
rather than 0.
gcc/ChangeLog:
* cfg.c (debug): Use TDF_NONE rather than 0.
* cfghooks.c (debug): Likewise.
* dumpfile.c (DUMP_FILE_INFO): Likewise; also for OPTGROUP.
(struct dump_option_value_info): Convert to...
(struct kv_pair): ...this template type.
(dump_options): Convert to kv_pair<dump_flags_t>; use TDF_NONE
rather than 0.
(optinfo_verbosity_options): Likewise.
(optgroup_options): Convert to kv_pair<optgroup_flags_t>; use
OPTGROUP_NONE.
(gcc::dump_manager::dump_register): Use optgroup_flags_t rather
than int for "optgroup_flags" param.
(dump_generic_expr_loc): Use dump_flags_t rather than int for
"dump_kind" param.
(dump_dec): Likewise.
(dump_finish): Use TDF_NONE rather than 0.
(gcc::dump_manager::opt_info_enable_passes): Use optgroup_flags_t
rather than int for "optgroup_flags" param. Use TDF_NONE rather
than 0. Update for change to option_ptr.
(opt_info_switch_p_1): Convert "optgroup_flags" param from int *
to optgroup_flags_t *. Use TDF_NONE and OPTGROUP_NONE rather than
0. Update for changes to optinfo_verbosity_options and
optgroup_options.
(opt_info_switch_p): Convert optgroup_flags from int to
optgroup_flags_t.
(dump_basic_block): Use dump_flags_t rather than int
for "dump_kind" param.
* dumpfile.h (TDF_ADDRESS, TDF_SLIM, TDF_RAW, TDF_DETAILS,
TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, TDF_UID)
TDF_STMTADDR, TDF_GRAPH, TDF_MEMSYMS, TDF_RHS_ONLY, TDF_ASMNAME,
TDF_EH, TDF_NOUID, TDF_ALIAS, TDF_ENUMERATE_LOCALS, TDF_CSELIB,
TDF_SCEV, TDF_GIMPLE, TDF_FOLDING, MSG_OPTIMIZED_LOCATIONS,
MSG_MISSED_OPTIMIZATION, MSG_NOTE, MSG_ALL, TDF_COMPARE_DEBUG,
TDF_NONE): Convert from macros to...
(enum dump_flag): ...this new enum.
(dump_flags_t): Update to use enum.
(operator|, operator&, operator~, operator|=, operator&=):
Implement for dump_flags_t.
(OPTGROUP_NONE, OPTGROUP_IPA, OPTGROUP_LOOP, OPTGROUP_INLINE,
OPTGROUP_OMP, OPTGROUP_VEC, OPTGROUP_OTHER, OPTGROUP_ALL):
Convert from macros to...
(enum optgroup_flag): ...this new enum.
(optgroup_flags_t): New typedef.
(operator|, operator|=): Implement for optgroup_flags_t.
(struct dump_file_info): Convert field "alt_flags" to
dump_flags_t. Convert field "optgroup_flags" to
optgroup_flags_t.
(dump_basic_block): Use dump_flags_t rather than int for param.
(dump_generic_expr_loc): Likewise.
(dump_dec): Likewise.
(dump_register): Convert param "optgroup_flags" to
optgroup_flags_t.
(opt_info_enable_passes): Likewise.
* early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather
than 0.
* gimple-pretty-print.c (debug): Likewise.
* gimple-ssa-store-merging.c (bswap_replace): Likewise.
(merged_store_group::apply_stores): Likewise.
* gimple-ssa-strength-reduction.c (insert_initializers): Likewise.
* gimple.c (verify_gimple_pp): Likewise.
* graphite-poly.c (print_pbb_body): Likewise.
* passes.c (pass_manager::register_one_dump_file): Convert
local "optgroup_flags" to optgroup_flags_t.
* print-tree.c (print_node): Use TDF_NONE rather than 0.
(debug): Likewise.
(debug_body): Likewise.
* tree-pass.h (struct pass_data): Convert field "optgroup_flags"
to optgroup_flags_t.
* tree-pretty-print.c (print_struct_decl): Use TDF_NONE rather
than 0.
* tree-ssa-math-opts.c (convert_mult_to_fma_1): Likewise.
(convert_mult_to_fma): Likewise.
* tree-ssa-reassoc.c (undistribute_ops_list): Likewise.
* tree-ssa-sccvn.c (vn_eliminate): Likewise.
* tree-vect-data-refs.c (dump_lower_bound): Convert param
"dump_kind" to dump_flags_t.
From-SVN: r261325
|
|
2018-06-08 Martin Liska <mliska@suse.cz>
* MAINTAINERS: Remove MPX-related entries.
* Makefile.def: Remove libmpx support.
* Makefile.in: Likewise.
* configure: Remove removed files.
* configure.ac: Likewise.
* libmpx/ChangeLog: Remove.
* libmpx/Makefile.am: Remove.
* libmpx/Makefile.in: Remove.
* libmpx/acinclude.m4: Remove.
* libmpx/aclocal.m4: Remove.
* libmpx/config.h.in: Remove.
* libmpx/configure: Remove.
* libmpx/configure.ac: Remove.
* libmpx/configure.tgt: Remove.
* libmpx/libmpx.spec.in: Remove.
* libmpx/mpxrt/Makefile.am: Remove.
* libmpx/mpxrt/Makefile.in: Remove.
* libmpx/mpxrt/libmpx.map: Remove.
* libmpx/mpxrt/libtool-version: Remove.
* libmpx/mpxrt/mpxrt-utils.c: Remove.
* libmpx/mpxrt/mpxrt-utils.h: Remove.
* libmpx/mpxrt/mpxrt.c: Remove.
* libmpx/mpxrt/mpxrt.h: Remove.
* libmpx/mpxwrap/Makefile.am: Remove.
* libmpx/mpxwrap/Makefile.in: Remove.
* libmpx/mpxwrap/libmpxwrappers.map: Remove.
* libmpx/mpxwrap/libtool-version: Remove.
* libmpx/mpxwrap/mpx_wrappers.c: Remove.
2018-06-08 Martin Liska <mliska@suse.cz>
* bootstrap-mpx.mk: Remove.
2018-06-08 Martin Liska <mliska@suse.cz>
* Makefile.in: Remove support for MPX (macros, related functions,
fields in cgraph_node, ...).
* builtin-types.def (BT_BND): Likewise.
(BT_FN_BND_CONST_PTR): Likewise.
(BT_FN_CONST_PTR_BND): Likewise.
(BT_FN_VOID_PTR_BND): Likewise.
(BT_FN_BND_CONST_PTR_SIZE): Likewise.
(BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise.
* builtins.c (expand_builtin_memcpy_with_bounds): Likewise.
(expand_builtin_mempcpy_with_bounds): Likewise.
(expand_builtin_memset_with_bounds): Likewise.
(expand_builtin_memset_args): Likewise.
(std_expand_builtin_va_start): Likewise.
(expand_builtin): Likewise.
(expand_builtin_with_bounds): Likewise.
* builtins.def (DEF_BUILTIN_CHKP): Likewise.
(DEF_LIB_BUILTIN_CHKP): Likewise.
(DEF_EXT_LIB_BUILTIN_CHKP): Likewise.
(DEF_CHKP_BUILTIN): Likewise.
(BUILT_IN_MEMCPY): Likewise.
(BUILT_IN_MEMMOVE): Likewise.
(BUILT_IN_MEMPCPY): Likewise.
(BUILT_IN_MEMSET): Likewise.
(BUILT_IN_STPCPY): Likewise.
(BUILT_IN_STRCAT): Likewise.
(BUILT_IN_STRCHR): Likewise.
(BUILT_IN_STRCPY): Likewise.
(BUILT_IN_STRLEN): Likewise.
(BUILT_IN_MEMCPY_CHK): Likewise.
(BUILT_IN_MEMMOVE_CHK): Likewise.
(BUILT_IN_MEMPCPY_CHK): Likewise.
(BUILT_IN_MEMSET_CHK): Likewise.
(BUILT_IN_STPCPY_CHK): Likewise.
(BUILT_IN_STRCAT_CHK): Likewise.
(BUILT_IN_STRCPY_CHK): Likewise.
* calls.c (store_bounds): Likewise.
(emit_call_1): Likewise.
(special_function_p): Likewise.
(maybe_warn_nonstring_arg): Likewise.
(initialize_argument_information): Likewise.
(finalize_must_preallocate): Likewise.
(compute_argument_addresses): Likewise.
(expand_call): Likewise.
* cfgexpand.c (expand_call_stmt): Likewise.
(expand_return): Likewise.
(expand_gimple_stmt_1): Likewise.
(pass_expand::execute): Likewise.
* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
(cgraph_node::remove): Likewise.
(cgraph_node::dump): Likewise.
(cgraph_node::verify_node): Likewise.
* cgraph.h (chkp_function_instrumented_p): Likewise.
(symtab_node::get_alias_target): Likewise.
(cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise.
(cgraph_local_p): Likewise.
* cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise.
(cgraph_edge::rebuild_references): Likewise.
* cgraphunit.c (varpool_node::finalize_decl): Likewise.
(walk_polymorphic_call_targets): Likewise.
(cgraph_node::expand_thunk): Likewise.
(symbol_table::output_weakrefs): Likewise.
* common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise.
(ix86_handle_option): Likewise.
* config/i386/constraints.md: Likewise.
* config/i386/i386-builtin-types.def (BND): Likewise.
(VOID): Likewise.
(PVOID): Likewise.
(ULONG): Likewise.
* config/i386/i386-builtin.def (BDESC_END): Likewise.
(BDESC_FIRST): Likewise.
(BDESC): Likewise.
* config/i386/i386-c.c (ix86_target_macros_internal): Likewise.
* config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise.
* config/i386/i386.c (enum reg_class): Likewise.
(ix86_target_string): Likewise.
(ix86_option_override_internal): Likewise.
(ix86_conditional_register_usage): Likewise.
(ix86_valid_target_attribute_inner_p): Likewise.
(ix86_set_indirect_branch_type): Likewise.
(ix86_set_current_function): Likewise.
(ix86_function_arg_regno_p): Likewise.
(init_cumulative_args): Likewise.
(ix86_function_arg_advance): Likewise.
(ix86_function_arg): Likewise.
(ix86_pass_by_reference): Likewise.
(ix86_function_value_regno_p): Likewise.
(ix86_function_value_1): Likewise.
(ix86_function_value_bounds): Likewise.
(ix86_return_in_memory): Likewise.
(ix86_setup_incoming_vararg_bounds): Likewise.
(ix86_va_start): Likewise.
(indirect_thunk_need_prefix): Likewise.
(print_reg): Likewise.
(ix86_print_operand): Likewise.
(ix86_expand_call): Likewise.
(ix86_output_function_return): Likewise.
(reg_encoded_number): Likewise.
(BDESC_VERIFYS): Likewise.
(ix86_init_mpx_builtins): Likewise.
(ix86_init_builtins): Likewise.
(ix86_emit_cmove): Likewise.
(ix86_emit_move_max): Likewise.
(ix86_expand_builtin): Likewise.
(ix86_builtin_mpx_function): Likewise.
(ix86_get_arg_address_for_bt): Likewise.
(ix86_load_bounds): Likewise.
(ix86_store_bounds): Likewise.
(ix86_load_returned_bounds): Likewise.
(ix86_store_returned_bounds): Likewise.
(ix86_class_likely_spilled_p): Likewise.
(ix86_hard_regno_mode_ok): Likewise.
(x86_order_regs_for_local_alloc): Likewise.
(ix86_mitigate_rop): Likewise.
(ix86_bnd_prefixed_insn_p): Likewise.
(ix86_mpx_bound_mode): Likewise.
(ix86_make_bounds_constant): Likewise.
(ix86_initialize_bounds): Likewise.
(TARGET_LOAD_BOUNDS_FOR_ARG): Likewise.
(TARGET_STORE_BOUNDS_FOR_ARG): Likewise.
(TARGET_LOAD_RETURNED_BOUNDS): Likewise.
(TARGET_STORE_RETURNED_BOUNDS): Likewise.
(TARGET_CHKP_BOUND_MODE): Likewise.
(TARGET_BUILTIN_CHKP_FUNCTION): Likewise.
(TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise.
(TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise.
(TARGET_CHKP_INITIALIZE_BOUNDS): Likewise.
* config/i386/i386.h (TARGET_MPX): Likewise.
(TARGET_MPX_P): Likewise.
(VALID_BND_REG_MODE): Likewise.
(FIRST_BND_REG): Likewise.
(LAST_BND_REG): Likewise.
(enum reg_class): Likewise.
(BND_REG_P): Likewise.
(BND_REGNO_P): Likewise.
(BNDmode): Likewise.
(ADJUST_INSN_LENGTH): Likewise.
* config/i386/i386.md: Likewise.
* config/i386/i386.opt: Likewise.
* config/i386/linux-common.h (LIBMPX_LIBS): Likewise.
(defined): Likewise.
(LINK_MPX): Likewise.
(MPX_SPEC): Likewise.
(LIBMPX_SPEC): Likewise.
(LIBMPXWRAPPERS_SPEC): Likewise.
(CHKP_SPEC): Likewise.
* config/i386/predicates.md: Likewise.
* dbxout.c (dbxout_type): Likewise.
* doc/extend.texi: Likewise.
* doc/invoke.texi: Likewise.
* doc/md.texi: Likewise.
* doc/tm.texi: Likewise.
* doc/tm.texi.in: Likewise.
* dwarf2out.c (is_base_type): Likewise.
(gen_formal_types_die): Likewise.
(gen_subprogram_die): Likewise.
(gen_type_die_with_usage): Likewise.
(gen_decl_die): Likewise.
(dwarf2out_late_global_decl): Likewise.
* expr.c (expand_assignment): Likewise.
(emit_storent_insn): Likewise.
(store_expr_with_bounds): Likewise.
(store_expr): Likewise.
(expand_expr_real_1): Likewise.
* expr.h (store_expr_with_bounds): Likewise.
* function.c (use_register_for_decl): Likewise.
(struct bounds_parm_data): Likewise.
(assign_parms_augmented_arg_list): Likewise.
(assign_parm_find_entry_rtl): Likewise.
(assign_parm_is_stack_parm): Likewise.
(assign_parm_load_bounds): Likewise.
(assign_bounds): Likewise.
(assign_parms): Likewise.
(expand_function_start): Likewise.
* gcc.c (CHKP_SPEC): Likewise.
* gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
* gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise.
(wrestrict_dom_walker::check_call): Likewise.
* gimple.c (gimple_build_call_from_tree): Likewise.
* gimple.h (enum gf_mask): Likewise.
(gimple_call_with_bounds_p): Likewise.
(gimple_call_set_with_bounds): Likewise.
* gimplify.c (gimplify_init_constructor): Likewise.
* ipa-cp.c (initialize_node_lattices): Likewise.
(propagate_constants_across_call): Likewise.
(find_more_scalar_values_for_callers_subset): Likewise.
* ipa-hsa.c (process_hsa_functions): Likewise.
* ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise.
* ipa-icf.c (sem_function::merge): Likewise.
* ipa-inline.c (early_inliner): Likewise.
* ipa-pure-const.c (warn_function_noreturn): Likewise.
(warn_function_cold): Likewise.
(propagate_pure_const): Likewise.
* ipa-ref.h (enum GTY): Likewise.
* ipa-split.c (find_retbnd): Likewise.
(consider_split): Likewise.
(split_function): Likewise.
* ipa-visibility.c (cgraph_externally_visible_p): Likewise.
* ipa.c (walk_polymorphic_call_targets): Likewise.
(symbol_table::remove_unreachable_nodes): Likewise.
(process_references): Likewise.
(cgraph_build_static_cdtor_1): Likewise.
* lto-cgraph.c (lto_output_node): Likewise.
(output_refs): Likewise.
(compute_ltrans_boundary): Likewise.
(input_overwrite_node): Likewise.
(input_node): Likewise.
(input_cgraph_1): Likewise.
* params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise.
* passes.c (pass_manager::execute_early_local_passes): Likewise.
(class pass_chkp_instrumentation_passes): Likewise.
(make_pass_chkp_instrumentation_passes): Likewise.
* passes.def: Likewise.
* rtl.h (struct GTY): Likewise.
(CALL_EXPR_WITH_BOUNDS_P): Likewise.
* stor-layout.c (layout_type): Likewise.
* symtab.c: Likewise.
* target.def: Likewise.
* targhooks.c (default_chkp_bound_type): Likewise.
(default_chkp_bound_mode): Likewise.
(default_builtin_chkp_function): Likewise.
(default_chkp_function_value_bounds): Likewise.
(default_chkp_make_bounds_constant): Likewise.
(default_chkp_initialize_bounds): Likewise.
* targhooks.h (default_chkp_bound_type): Likewise.
(default_chkp_bound_mode): Likewise.
(default_builtin_chkp_function): Likewise.
(default_chkp_function_value_bounds): Likewise.
(default_chkp_make_bounds_constant): Likewise.
(default_chkp_initialize_bounds): Likewise.
* toplev.c (compile_file): Likewise.
(process_options): Likewise.
* tree-core.h (DEF_BUILTIN): Likewise.
(DEF_BUILTIN_CHKP): Likewise.
* tree-inline.c (declare_return_variable): Likewise.
(remap_gimple_stmt): Likewise.
(copy_bb): Likewise.
(initialize_inlined_parameters): Likewise.
(expand_call_inline): Likewise.
* tree-pass.h (make_pass_ipa_chkp_versioning): Likewise.
(make_pass_ipa_chkp_early_produce_thunks): Likewise.
(make_pass_ipa_chkp_produce_thunks): Likewise.
(make_pass_chkp): Likewise.
(make_pass_chkp_opt): Likewise.
(make_pass_chkp_instrumentation_passes): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
* tree-ssa-dce.c (propagate_necessity): Likewise.
(eliminate_unnecessary_stmts): Likewise.
* tree-ssa-pre.c (create_expression_by_pieces): Likewise.
* tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
* tree-ssa-sccvn.h: Likewise.
* tree-ssa-strlen.c (get_string_length): Likewise.
(valid_builtin_call): Likewise.
(adjust_last_stmt): Likewise.
(handle_builtin_strchr): Likewise.
(handle_builtin_strcpy): Likewise.
(handle_builtin_stxncpy): Likewise.
(handle_builtin_memcpy): Likewise.
(handle_builtin_strcat): Likewise.
(strlen_check_and_optimize_stmt): Likewise.
* tree-stdarg.c (expand_ifn_va_arg_1): Likewise.
* tree-streamer-in.c: Likewise.
* tree-streamer.c (record_common_node): Likewise.
* tree.c (tree_code_size): Likewise.
(wide_int_to_tree_1): Likewise.
(type_contains_placeholder_1): Likewise.
(build_common_tree_nodes): Likewise.
* tree.def (POINTER_BOUNDS_TYPE): Likewise.
* tree.h (POINTER_BOUNDS_TYPE_P): Likewise.
(POINTER_BOUNDS_P): Likewise.
(BOUNDED_TYPE_P): Likewise.
(BOUNDED_P): Likewise.
(CALL_WITH_BOUNDS_P): Likewise.
(pointer_bounds_type_node): Likewise.
* value-prof.c (gimple_ic): Likewise.
* var-tracking.c (vt_add_function_parameters): Likewise.
* varasm.c (make_decl_rtl): Likewise.
(assemble_start_function): Likewise.
(output_constant): Likewise.
(maybe_assemble_visibility): Likewise.
* varpool.c (ctor_for_folding): Likewise.
* chkp-builtins.def: Remove.
* ipa-chkp.c: Remove.
* ipa-chkp.h: Remove.
* rtl-chkp.c: Remove.
* rtl-chkp.h: Remove.
* tree-chkp-opt.c: Remove.
* tree-chkp.c: Remove.
* tree-chkp.h: Remove.
2018-06-08 Martin Liska <mliska@suse.cz>
* c-attribs.c (handle_bnd_variable_size_attribute): Remove support
for MPX (macros, related functions, fields in cgraph_node, ...).
(handle_bnd_legacy): Likewise.
(handle_bnd_instrument): Likewise.
* c.opt: Likewise.
2018-06-08 Martin Liska <mliska@suse.cz>
* lto-partition.c (add_references_to_partition): Remove support
for MPX (macros, related functions, fields in cgraph_node, ...).
(add_symbol_to_partition_1): Likewise.
(privatize_symbol_name): Likewise.
* lto-symtab.c (lto_cgraph_replace_node): Likewise.
2018-06-08 Martin Liska <mliska@suse.cz>
* g++.dg/dg.exp: Do not use mpx.exp.
* g++.dg/lto/lto.exp: Likewise.
* g++.dg/lto/pr69729_0.C: Remove.
* g++.dg/opt/pr71529.C: Remove.
* g++.dg/pr63995-1.C: Remove.
* g++.dg/pr68270.C: Remove.
* g++.dg/pr71624.C: Remove.
* g++.dg/pr71633.C: Remove.
* g++.dg/pr79761.C: Remove.
* g++.dg/pr79764.C: Remove.
* g++.dg/pr79769.C: Remove.
* gcc.dg/lto/chkp-privatize-1_0.c: Remove.
* gcc.dg/lto/chkp-privatize-2_0.c: Remove.
* gcc.dg/lto/chkp-privatize_0.c: Remove.
* gcc.dg/lto/chkp-removed-alias_0.c: Remove.
* gcc.dg/lto/chkp-static-bounds_0.c: Remove.
* gcc.dg/lto/chkp-wrap-asm-name_0.c: Remove.
* gcc.dg/lto/lto.exp: Do not use mpx.exp.
* gcc.dg/lto/pr66221_0.c: Remove.
* gcc.target/i386/chkp-always_inline.c: Remove.
* gcc.target/i386/chkp-bndret.c: Remove.
* gcc.target/i386/chkp-builtins-1.c: Remove.
* gcc.target/i386/chkp-builtins-2.c: Remove.
* gcc.target/i386/chkp-builtins-3.c: Remove.
* gcc.target/i386/chkp-builtins-4.c: Remove.
* gcc.target/i386/chkp-const-check-1.c: Remove.
* gcc.target/i386/chkp-const-check-2.c: Remove.
* gcc.target/i386/chkp-hidden-def.c: Remove.
* gcc.target/i386/chkp-label-address.c: Remove.
* gcc.target/i386/chkp-lifetime-1.c: Remove.
* gcc.target/i386/chkp-narrow-bounds.c: Remove.
* gcc.target/i386/chkp-pr69044.c: Remove.
* gcc.target/i386/chkp-remove-bndint-1.c: Remove.
* gcc.target/i386/chkp-remove-bndint-2.c: Remove.
* gcc.target/i386/chkp-strchr.c: Remove.
* gcc.target/i386/chkp-strlen-1.c: Remove.
* gcc.target/i386/chkp-strlen-2.c: Remove.
* gcc.target/i386/chkp-strlen-3.c: Remove.
* gcc.target/i386/chkp-strlen-4.c: Remove.
* gcc.target/i386/chkp-strlen-5.c: Remove.
* gcc.target/i386/chkp-stropt-1.c: Remove.
* gcc.target/i386/chkp-stropt-10.c: Remove.
* gcc.target/i386/chkp-stropt-11.c: Remove.
* gcc.target/i386/chkp-stropt-12.c: Remove.
* gcc.target/i386/chkp-stropt-13.c: Remove.
* gcc.target/i386/chkp-stropt-14.c: Remove.
* gcc.target/i386/chkp-stropt-15.c: Remove.
* gcc.target/i386/chkp-stropt-16.c: Remove.
* gcc.target/i386/chkp-stropt-17.c: Remove.
* gcc.target/i386/chkp-stropt-2.c: Remove.
* gcc.target/i386/chkp-stropt-3.c: Remove.
* gcc.target/i386/chkp-stropt-4.c: Remove.
* gcc.target/i386/chkp-stropt-5.c: Remove.
* gcc.target/i386/chkp-stropt-6.c: Remove.
* gcc.target/i386/chkp-stropt-7.c: Remove.
* gcc.target/i386/chkp-stropt-8.c: Remove.
* gcc.target/i386/chkp-stropt-9.c: Remove.
* gcc.target/i386/i386.exp: Do not use mpx.exp.
* gcc.target/i386/indirect-thunk-11.c: Remove.
* gcc.target/i386/indirect-thunk-12.c: Remove.
* gcc.target/i386/indirect-thunk-attr-12.c: Remove.
* gcc.target/i386/indirect-thunk-attr-13.c: Remove.
* gcc.target/i386/indirect-thunk-bnd-1.c: Remove.
* gcc.target/i386/indirect-thunk-bnd-2.c: Remove.
* gcc.target/i386/indirect-thunk-bnd-3.c: Remove.
* gcc.target/i386/indirect-thunk-bnd-4.c: Remove.
* gcc.target/i386/interrupt-bnd-err-1.c: Remove.
* gcc.target/i386/interrupt-bnd-err-2.c: Remove.
* gcc.target/i386/mpx/alloca-1-lbv.c: Remove.
* gcc.target/i386/mpx/alloca-1-nov.c: Remove.
* gcc.target/i386/mpx/alloca-1-ubv.c: Remove.
* gcc.target/i386/mpx/arg-addr-1-lbv.c: Remove.
* gcc.target/i386/mpx/arg-addr-1-nov.c: Remove.
* gcc.target/i386/mpx/arg-addr-1-ubv.c: Remove.
* gcc.target/i386/mpx/bitfields-1-lbv.c: Remove.
* gcc.target/i386/mpx/bitfields-1-nov.c: Remove.
* gcc.target/i386/mpx/bitfields-1-ubv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-chk-ptr-bounds-1-lbv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-chk-ptr-bounds-1-nov.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-chk-ptr-bounds-1-ubv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-chk-ptr-bounds-2.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-chk-ptr-lbounds-1-lbv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-chk-ptr-lbounds-1-nov.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-chk-ptr-lbounds-2.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-chk-ptr-ubounds-1-nov.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-chk-ptr-ubounds-1-ubv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-chk-ptr-ubounds-2.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-copy-ptr-bounds-1.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-copy-ptr-bounds-2-lbv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-copy-ptr-bounds-2-nov.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-copy-ptr-bounds-2-ubv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-copy-ptr-bounds-3.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-get-ptr-lbound-1.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-get-ptr-lbound-2.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-get-ptr-ubound-1.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-get-ptr-ubound-2.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-init-ptr-bounds-1.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-init-ptr-bounds-2-nov.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-init-ptr-bounds-3.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-1.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-2-lbv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-2-nov.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-2-ubv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-3-lbv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-3-nov.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-3-ubv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-4.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-null-ptr-bounds-1-bbv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-set-ptr-bounds-1.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-set-ptr-bounds-2-lbv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-set-ptr-bounds-2-nov.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-set-ptr-bounds-2-ubv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-set-ptr-bounds-3.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-store-ptr-bounds-1-lbv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-store-ptr-bounds-1-nov.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-store-ptr-bounds-1-ubv.c: Remove.
* gcc.target/i386/mpx/builtin-bnd-store-ptr-bounds-2.c: Remove.
* gcc.target/i386/mpx/calloc-1-lbv.c: Remove.
* gcc.target/i386/mpx/calloc-1-nov.c: Remove.
* gcc.target/i386/mpx/calloc-1-ubv.c: Remove.
* gcc.target/i386/mpx/chkp-fix-calls-1.c: Remove.
* gcc.target/i386/mpx/chkp-fix-calls-2.c: Remove.
* gcc.target/i386/mpx/chkp-fix-calls-3.c: Remove.
* gcc.target/i386/mpx/chkp-fix-calls-4.c: Remove.
* gcc.target/i386/mpx/chkp-thunk-comdat-1.cc: Remove.
* gcc.target/i386/mpx/chkp-thunk-comdat-2.cc: Remove.
* gcc.target/i386/mpx/chkp-thunk-comdat-3.c: Remove.
* gcc.target/i386/mpx/fastcall-1-lbv.c: Remove.
* gcc.target/i386/mpx/fastcall-1-nov.c: Remove.
* gcc.target/i386/mpx/fastcall-1-ubv.c: Remove.
* gcc.target/i386/mpx/fastcall-2-lbv.c: Remove.
* gcc.target/i386/mpx/fastcall-2-nov.c: Remove.
* gcc.target/i386/mpx/fastcall-2-ubv.c: Remove.
* gcc.target/i386/mpx/field-addr-1-lbv.c: Remove.
* gcc.target/i386/mpx/field-addr-1-nov.c: Remove.
* gcc.target/i386/mpx/field-addr-1-ubv.c: Remove.
* gcc.target/i386/mpx/field-addr-10-lbv.c: Remove.
* gcc.target/i386/mpx/field-addr-10-nov.c: Remove.
* gcc.target/i386/mpx/field-addr-10-ubv.c: Remove.
* gcc.target/i386/mpx/field-addr-2-lbv.c: Remove.
* gcc.target/i386/mpx/field-addr-2-nov.c: Remove.
* gcc.target/i386/mpx/field-addr-2-ubv.c: Remove.
* gcc.target/i386/mpx/field-addr-3-lbv.c: Remove.
* gcc.target/i386/mpx/field-addr-3-nov.c: Remove.
* gcc.target/i386/mpx/field-addr-3-ubv.c: Remove.
* gcc.target/i386/mpx/field-addr-4-lbv.c: Remove.
* gcc.target/i386/mpx/field-addr-4-nov.c: Remove.
* gcc.target/i386/mpx/field-addr-4-ubv.c: Remove.
* gcc.target/i386/mpx/field-addr-5-lbv.c: Remove.
* gcc.target/i386/mpx/field-addr-5-nov.c: Remove.
* gcc.target/i386/mpx/field-addr-5-ubv.c: Remove.
* gcc.target/i386/mpx/field-addr-6-lbv.c: Remove.
* gcc.target/i386/mpx/field-addr-6-nov.c: Remove.
* gcc.target/i386/mpx/field-addr-6-ubv.c: Remove.
* gcc.target/i386/mpx/field-addr-7-lbv.c: Remove.
* gcc.target/i386/mpx/field-addr-7-nov.c: Remove.
* gcc.target/i386/mpx/field-addr-7-ubv.c: Remove.
* gcc.target/i386/mpx/field-addr-8-lbv.c: Remove.
* gcc.target/i386/mpx/field-addr-8-nov.c: Remove.
* gcc.target/i386/mpx/field-addr-8-ubv.c: Remove.
* gcc.target/i386/mpx/field-addr-9-lbv.c: Remove.
* gcc.target/i386/mpx/field-addr-9-nov.c: Remove.
* gcc.target/i386/mpx/field-addr-9-ubv.c: Remove.
* gcc.target/i386/mpx/frame-address-1-nov.c: Remove.
* gcc.target/i386/mpx/hard-reg-1-nov.c: Remove.
* gcc.target/i386/mpx/hard-reg-2-lbv.c: Remove.
* gcc.target/i386/mpx/hard-reg-2-nov.c: Remove.
* gcc.target/i386/mpx/hard-reg-2-ubv.c: Remove.
* gcc.target/i386/mpx/if-stmt-1-lbv.c: Remove.
* gcc.target/i386/mpx/if-stmt-1-nov.c: Remove.
* gcc.target/i386/mpx/if-stmt-1-ubv.c: Remove.
* gcc.target/i386/mpx/if-stmt-2-lbv.c: Remove.
* gcc.target/i386/mpx/if-stmt-2-nov.c: Remove.
* gcc.target/i386/mpx/if-stmt-2-ubv.c: Remove.
* gcc.target/i386/mpx/label-address-1.c: Remove.
* gcc.target/i386/mpx/legacy-1-nov.c: Remove.
* gcc.target/i386/mpx/macro.c: Remove.
* gcc.target/i386/mpx/malloc-1-lbv.c: Remove.
* gcc.target/i386/mpx/malloc-1-nov.c: Remove.
* gcc.target/i386/mpx/malloc-1-ubv.c: Remove.
* gcc.target/i386/mpx/memcpy-1.c: Remove.
* gcc.target/i386/mpx/memmove-1.c: Remove.
* gcc.target/i386/mpx/memmove-2.c: Remove.
* gcc.target/i386/mpx/memmove-zero-length.c: Remove.
* gcc.target/i386/mpx/mpx-check.h: Remove.
* gcc.target/i386/mpx/mpx-os-support.h: Remove.
* gcc.target/i386/mpx/mpx.exp: Remove.
* gcc.target/i386/mpx/nested-function-1-lbv.c: Remove.
* gcc.target/i386/mpx/nested-function-1-nov.c: Remove.
* gcc.target/i386/mpx/nested-function-1-ubv.c: Remove.
* gcc.target/i386/mpx/pointer-arg-1-lbv.c: Remove.
* gcc.target/i386/mpx/pointer-arg-1-nov.c: Remove.
* gcc.target/i386/mpx/pointer-arg-1-ubv.c: Remove.
* gcc.target/i386/mpx/pointer-arg-2-lbv.c: Remove.
* gcc.target/i386/mpx/pointer-arg-2-nov.c: Remove.
* gcc.target/i386/mpx/pointer-arg-2-ubv.c: Remove.
* gcc.target/i386/mpx/pointer-arg-3-lbv.c: Remove.
* gcc.target/i386/mpx/pointer-arg-3-nov.c: Remove.
* gcc.target/i386/mpx/pointer-arg-3-ubv.c: Remove.
* gcc.target/i386/mpx/pointer-arg-4-lbv.c: Remove.
* gcc.target/i386/mpx/pointer-arg-4-nov.c: Remove.
* gcc.target/i386/mpx/pointer-arg-4-ubv.c: Remove.
* gcc.target/i386/mpx/pointer-arg-5-lbv.c: Remove.
* gcc.target/i386/mpx/pointer-arg-5-nov.c: Remove.
* gcc.target/i386/mpx/pointer-arg-5-ubv.c: Remove.
* gcc.target/i386/mpx/pointer-diff-1.c: Remove.
* gcc.target/i386/mpx/pointer-store-1-lbv.c: Remove.
* gcc.target/i386/mpx/pointer-store-1-nov.c: Remove.
* gcc.target/i386/mpx/pointer-store-1-ubv.c: Remove.
* gcc.target/i386/mpx/pr65508.c: Remove.
* gcc.target/i386/mpx/pr65531.cc: Remove.
* gcc.target/i386/mpx/pr66048.cc: Remove.
* gcc.target/i386/mpx/pr66134.c: Remove.
* gcc.target/i386/mpx/pr66566.c: Remove.
* gcc.target/i386/mpx/pr66567.c: Remove.
* gcc.target/i386/mpx/pr66568.c: Remove.
* gcc.target/i386/mpx/pr66569.c: Remove.
* gcc.target/i386/mpx/pr66581.c: Remove.
* gcc.target/i386/mpx/pr68337-1.c: Remove.
* gcc.target/i386/mpx/pr68337-2.c: Remove.
* gcc.target/i386/mpx/pr68416.c: Remove.
* gcc.target/i386/mpx/pr78339.c: Remove.
* gcc.target/i386/mpx/pr79631.c: Remove.
* gcc.target/i386/mpx/pr79633.c: Remove.
* gcc.target/i386/mpx/pr79753.c: Remove.
* gcc.target/i386/mpx/pr79770.c: Remove.
* gcc.target/i386/mpx/pr79987.c: Remove.
* gcc.target/i386/mpx/pr79988.c: Remove.
* gcc.target/i386/mpx/realloc-1-lbv.c: Remove.
* gcc.target/i386/mpx/realloc-1-nov.c: Remove.
* gcc.target/i386/mpx/realloc-1-ubv.c: Remove.
* gcc.target/i386/mpx/realloc-2-lbv.c: Remove.
* gcc.target/i386/mpx/realloc-2-nov.c: Remove.
* gcc.target/i386/mpx/realloc-2-ubv.c: Remove.
* gcc.target/i386/mpx/reference-1-lbv.cpp: Remove.
* gcc.target/i386/mpx/reference-1-nov.cpp: Remove.
* gcc.target/i386/mpx/reference-1-ubv.cpp: Remove.
* gcc.target/i386/mpx/reference-2-lbv.cpp: Remove.
* gcc.target/i386/mpx/reference-2-nov.cpp: Remove.
* gcc.target/i386/mpx/reference-2-ubv.cpp: Remove.
* gcc.target/i386/mpx/reference-3-lbv.cpp: Remove.
* gcc.target/i386/mpx/reference-3-nov.cpp: Remove.
* gcc.target/i386/mpx/reference-3-ubv.cpp: Remove.
* gcc.target/i386/mpx/reference-4-lbv.cpp: Remove.
* gcc.target/i386/mpx/reference-4-nov.cpp: Remove.
* gcc.target/i386/mpx/reference-4-ubv.cpp: Remove.
* gcc.target/i386/mpx/return-pointer-1-lbv.c: Remove.
* gcc.target/i386/mpx/return-pointer-1-nov.c: Remove.
* gcc.target/i386/mpx/return-pointer-1-ubv.c: Remove.
* gcc.target/i386/mpx/return-struct-1-lbv.c: Remove.
* gcc.target/i386/mpx/return-struct-1-nov.c: Remove.
* gcc.target/i386/mpx/return-struct-1-ubv.c: Remove.
* gcc.target/i386/mpx/return-struct-2-lbv.c: Remove.
* gcc.target/i386/mpx/return-struct-2-nov.c: Remove.
* gcc.target/i386/mpx/return-struct-2-ubv.c: Remove.
* gcc.target/i386/mpx/return-struct-3-lbv.c: Remove.
* gcc.target/i386/mpx/return-struct-3-nov.c: Remove.
* gcc.target/i386/mpx/return-struct-3-ubv.c: Remove.
* gcc.target/i386/mpx/return-struct-4-lbv.c: Remove.
* gcc.target/i386/mpx/return-struct-4-nov.c: Remove.
* gcc.target/i386/mpx/return-struct-4-ubv.c: Remove.
* gcc.target/i386/mpx/return-struct-5-lbv.c: Remove.
* gcc.target/i386/mpx/return-struct-5-nov.c: Remove.
* gcc.target/i386/mpx/return-struct-5-ubv.c: Remove.
* gcc.target/i386/mpx/return-struct-6-lbv.c: Remove.
* gcc.target/i386/mpx/return-struct-6-nov.c: Remove.
* gcc.target/i386/mpx/return-struct-6-ubv.c: Remove.
* gcc.target/i386/mpx/sincos-1-nov.c: Remove.
* gcc.target/i386/mpx/static-array-1-lbv.c: Remove.
* gcc.target/i386/mpx/static-array-1-nov.c: Remove.
* gcc.target/i386/mpx/static-array-1-ubv.c: Remove.
* gcc.target/i386/mpx/static-init-1-lbv.c: Remove.
* gcc.target/i386/mpx/static-init-1-nov.c: Remove.
* gcc.target/i386/mpx/static-init-1-ubv.c: Remove.
* gcc.target/i386/mpx/static-init-2-lbv.c: Remove.
* gcc.target/i386/mpx/static-init-2-nov.c: Remove.
* gcc.target/i386/mpx/static-init-2-ubv.c: Remove.
* gcc.target/i386/mpx/static-init-3-lbv.c: Remove.
* gcc.target/i386/mpx/static-init-3-nov.c: Remove.
* gcc.target/i386/mpx/static-init-3-ubv.c: Remove.
* gcc.target/i386/mpx/static-init-4-lbv.c: Remove.
* gcc.target/i386/mpx/static-init-4-nov.c: Remove.
* gcc.target/i386/mpx/static-init-4-ubv.c: Remove.
* gcc.target/i386/mpx/static-init-5-lbv.c: Remove.
* gcc.target/i386/mpx/static-init-5-nov.c: Remove.
* gcc.target/i386/mpx/static-init-5-ubv.c: Remove.
* gcc.target/i386/mpx/static-init-6-lbv.c: Remove.
* gcc.target/i386/mpx/static-init-6-nov.c: Remove.
* gcc.target/i386/mpx/static-init-6-ubv.c: Remove.
* gcc.target/i386/mpx/static-string-1-lbv.c: Remove.
* gcc.target/i386/mpx/static-string-1-nov.c: Remove.
* gcc.target/i386/mpx/static-string-1-ubv.c: Remove.
* gcc.target/i386/mpx/struct-arg-1-lbv.c: Remove.
* gcc.target/i386/mpx/struct-arg-1-nov.c: Remove.
* gcc.target/i386/mpx/struct-arg-1-ubv.c: Remove.
* gcc.target/i386/mpx/struct-arg-10-lbv.c: Remove.
* gcc.target/i386/mpx/struct-arg-10-nov.c: Remove.
* gcc.target/i386/mpx/struct-arg-10-ubv.c: Remove.
* gcc.target/i386/mpx/struct-arg-2-lbv.c: Remove.
* gcc.target/i386/mpx/struct-arg-2-nov.c: Remove.
* gcc.target/i386/mpx/struct-arg-2-ubv.c: Remove.
* gcc.target/i386/mpx/struct-arg-3-lbv.c: Remove.
* gcc.target/i386/mpx/struct-arg-3-nov.c: Remove.
* gcc.target/i386/mpx/struct-arg-3-ubv.c: Remove.
* gcc.target/i386/mpx/struct-arg-4-lbv.c: Remove.
* gcc.target/i386/mpx/struct-arg-4-nov.c: Remove.
* gcc.target/i386/mpx/struct-arg-4-ubv.c: Remove.
* gcc.target/i386/mpx/struct-arg-5-lbv.c: Remove.
* gcc.target/i386/mpx/struct-arg-5-nov.c: Remove.
* gcc.target/i386/mpx/struct-arg-5-ubv.c: Remove.
* gcc.target/i386/mpx/struct-arg-6-lbv.c: Remove.
* gcc.target/i386/mpx/struct-arg-6-nov.c: Remove.
* gcc.target/i386/mpx/struct-arg-6-ubv.c: Remove.
* gcc.target/i386/mpx/struct-arg-7-lbv.c: Remove.
* gcc.target/i386/mpx/struct-arg-7-nov.c: Remove.
* gcc.target/i386/mpx/struct-arg-7-ubv.c: Remove.
* gcc.target/i386/mpx/struct-arg-8-lbv.c: Remove.
* gcc.target/i386/mpx/struct-arg-8-nov.c: Remove.
* gcc.target/i386/mpx/struct-arg-8-ubv.c: Remove.
* gcc.target/i386/mpx/struct-arg-9-lbv.c: Remove.
* gcc.target/i386/mpx/struct-arg-9-nov.c: Remove.
* gcc.target/i386/mpx/struct-arg-9-ubv.c: Remove.
* gcc.target/i386/mpx/struct-copy-1-lbv.c: Remove.
* gcc.target/i386/mpx/struct-copy-1-nov.c: Remove.
* gcc.target/i386/mpx/struct-copy-1-ubv.c: Remove.
* gcc.target/i386/mpx/struct-copy-2-lbv.c: Remove.
* gcc.target/i386/mpx/struct-copy-2-nov.c: Remove.
* gcc.target/i386/mpx/struct-copy-2-ubv.c: Remove.
* gcc.target/i386/mpx/thread-local-var-1-lbv.c: Remove.
* gcc.target/i386/mpx/thread-local-var-1-nov.c: Remove.
* gcc.target/i386/mpx/thread-local-var-1-ubv.c: Remove.
* gcc.target/i386/mpx/union-arg-1-lbv.c: Remove.
* gcc.target/i386/mpx/union-arg-1-nov.c: Remove.
* gcc.target/i386/mpx/union-arg-1-ubv.c: Remove.
* gcc.target/i386/mpx/va-arg-pack-1-lbv.c: Remove.
* gcc.target/i386/mpx/va-arg-pack-1-nov.c: Remove.
* gcc.target/i386/mpx/va-arg-pack-1-ubv.c: Remove.
* gcc.target/i386/mpx/va-arg-pack-2-lbv.c: Remove.
* gcc.target/i386/mpx/va-arg-pack-2-nov.c: Remove.
* gcc.target/i386/mpx/va-arg-pack-2-ubv.c: Remove.
* gcc.target/i386/mpx/vararg-1-lbv.c: Remove.
* gcc.target/i386/mpx/vararg-1-nov.c: Remove.
* gcc.target/i386/mpx/vararg-1-ubv.c: Remove.
* gcc.target/i386/mpx/vararg-2-lbv.c: Remove.
* gcc.target/i386/mpx/vararg-2-nov.c: Remove.
* gcc.target/i386/mpx/vararg-2-ubv.c: Remove.
* gcc.target/i386/mpx/vararg-3-lbv.c: Remove.
* gcc.target/i386/mpx/vararg-3-nov.c: Remove.
* gcc.target/i386/mpx/vararg-3-ubv.c: Remove.
* gcc.target/i386/mpx/vararg-4-lbv.c: Remove.
* gcc.target/i386/mpx/vararg-4-nov.c: Remove.
* gcc.target/i386/mpx/vararg-4-ubv.c: Remove.
* gcc.target/i386/mpx/vararg-5-lbv.c: Remove.
* gcc.target/i386/mpx/vararg-5-nov.c: Remove.
* gcc.target/i386/mpx/vararg-5-ubv.c: Remove.
* gcc.target/i386/mpx/vararg-6-lbv.c: Remove.
* gcc.target/i386/mpx/vararg-6-nov.c: Remove.
* gcc.target/i386/mpx/vararg-6-ubv.c: Remove.
* gcc.target/i386/mpx/vararg-7-lbv.c: Remove.
* gcc.target/i386/mpx/vararg-7-nov.c: Remove.
* gcc.target/i386/mpx/vararg-7-ubv.c: Remove.
* gcc.target/i386/mpx/vararg-8-lbv.c: Remove.
* gcc.target/i386/mpx/vararg-8-nov.c: Remove.
* gcc.target/i386/mpx/vararg-8-ubv.c: Remove.
* gcc.target/i386/mpx/vla-1-lbv.c: Remove.
* gcc.target/i386/mpx/vla-1-nov.c: Remove.
* gcc.target/i386/mpx/vla-1-ubv.c: Remove.
* gcc.target/i386/mpx/vla-2-lbv.c: Remove.
* gcc.target/i386/mpx/vla-2-nov.c: Remove.
* gcc.target/i386/mpx/vla-2-ubv.c: Remove.
* gcc.target/i386/mpx/vla-trailing-1-lbv.c: Remove.
* gcc.target/i386/mpx/vla-trailing-1-nov.c: Remove.
* gcc.target/i386/mpx/vla-trailing-1-ubv.c: Remove.
* gcc.target/i386/pr63995-2.c: Remove.
* gcc.target/i386/pr64805.c: Remove.
* gcc.target/i386/pr65044.c: Remove.
* gcc.target/i386/pr65167.c: Remove.
* gcc.target/i386/pr65183.c: Remove.
* gcc.target/i386/pr65184.c: Remove.
* gcc.target/i386/pr65523.c: Remove.
* gcc.target/i386/pr70876.c: Remove.
* gcc.target/i386/pr70877.c: Remove.
* gcc.target/i386/pr71458.c: Remove.
* gcc.target/i386/pr80880.c: Remove.
* gcc.target/i386/ret-thunk-25.c: Remove.
* gcc.target/i386/thunk-retbnd.c: Remove.
* lib/mpx-dg.exp: Remove.
* gcc.target/i386/funcspec-56.inc: Adjust test case.
From-SVN: r261304
|
|
2018-05-18 Martin Liska <mliska@suse.cz>
* passes.def: Add pass_lower_switch and pass_lower_switch_O0.
* tree-pass.h (make_pass_lower_switch_O0): New function.
* tree-switch-conversion.c (node_has_low_bound): Remove.
(node_has_high_bound): Likewise.
(node_is_bounded): Likewise.
(class pass_lower_switch): Make it a template type and create
two instances.
(pass_lower_switch::execute): Add template argument.
(make_pass_lower_switch): New function.
(make_pass_lower_switch_O0): New function.
(do_jump_if_equal): Remove.
(emit_case_nodes): Simplify to just handle all 3 cases and leave
all the hard work to tree optimization passes.
2018-05-18 Martin Liska <mliska@suse.cz>
* gcc.dg/tree-ssa/vrp104.c: Adjust dump file that is scanned.
* gcc.dg/tree-prof/update-loopch.c: Likewise.
From-SVN: r260350
|
|
This patch looks for pseudo registers that are live across a call
and for which no call-preserved hard registers exist. It then
recomputes the pseudos as necessary to ensure that they are no
longer live across a call. The comment at the head of the file
describes the approach.
A new target hook selects which modes should be treated in this way.
By default none are, in which case the pass is skipped very early.
It might also be worth looking for cases like:
C1: R1 := f (...)
...
C2: R2 := f (...)
C3: R1 := C2
and giving the same value number to C1 and C3, effectively treating
it like:
C1: R1 := f (...)
...
C2: R2 := f (...)
C3: R1 := f (...)
Another (much more expensive) enhancement would be to apply value
numbering to all pseudo registers (not just rematerialisation
candidates), so that we can handle things like:
C1: R1 := f (...R2...)
...
C2: R1 := f (...R3...)
where R2 and R3 hold the same value. But the current pass seems
to catch the vast majority of cases.
2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* Makefile.in (OBJS): Add early-remat.o.
* target.def (select_early_remat_modes): New hook.
* doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
* doc/tm.texi: Regenerate.
* targhooks.h (default_select_early_remat_modes): Declare.
* targhooks.c (default_select_early_remat_modes): New function.
* timevar.def (TV_EARLY_REMAT): New timevar.
* passes.def (pass_early_remat): New pass.
* tree-pass.h (make_pass_early_remat): Declare.
* early-remat.c: New file.
* config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
function.
(TARGET_SELECT_EARLY_REMAT_MODES): Define.
gcc/testsuite/
* gcc.target/aarch64/sve/spill_1.c: Also test that no predicates
are spilled.
* gcc.target/aarch64/sve/spill_2.c: New test.
* gcc.target/aarch64/sve/spill_3.c: Likewise.
* gcc.target/aarch64/sve/spill_4.c: Likewise.
* gcc.target/aarch64/sve/spill_5.c: Likewise.
* gcc.target/aarch64/sve/spill_6.c: Likewise.
* gcc.target/aarch64/sve/spill_7.c: Likewise.
From-SVN: r256636
|
|
From-SVN: r256169
|
|
gcc/c-family/ChangeLog:
PR tree-optimization/78918
* c-common.c (check_function_restrict): Avoid checking built-ins.
* c.opt (-Wrestrict): Include in -Wall.
gcc/ChangeLog:
PR tree-optimization/78918
* Makefile.in (OBJS): Add gimple-ssa-warn-restrict.o.
* builtins.c (check_sizes): Rename...
(check_access): ...to this. Rename function arguments for clarity.
(check_memop_sizes): Adjust names.
(expand_builtin_memchr, expand_builtin_memcpy): Same.
(expand_builtin_memmove, expand_builtin_mempcpy): Same.
(expand_builtin_strcat, expand_builtin_stpncpy): Same.
(check_strncat_sizes, expand_builtin_strncat): Same.
(expand_builtin_strncpy, expand_builtin_memset): Same.
(expand_builtin_bzero, expand_builtin_memcmp): Same.
(expand_builtin_memory_chk, maybe_emit_chk_warning): Same.
(maybe_emit_sprintf_chk_warning): Same.
(expand_builtin_strcpy): Adjust.
(expand_builtin_stpcpy): Same.
(expand_builtin_with_bounds): Detect out-of-bounds accesses
in pointer-checking forms of memcpy, memmove, and mempcpy.
(gcall_to_tree_minimal, max_object_size): Define new functions.
* builtins.h (max_object_size): Declare.
* calls.c (alloc_max_size): Call max_object_size instead of
hardcoding ssizetype limit.
(get_size_range): Handle new argument.
* calls.h (get_size_range): Add a new argument.
* cfgexpand.c (expand_call_stmt): Propagate no-warning bit.
* doc/invoke.texi (-Wrestrict): Adjust, add example.
* gimple-fold.c (gimple_fold_builtin_memory_op): Detect overlapping
operations.
(gimple_fold_builtin_memory_chk): Same.
(gimple_fold_builtin_stxcpy_chk): New function.
* gimple-ssa-warn-restrict.c: New source.
* gimple-ssa-warn-restrict.h: New header.
* gimple.c (gimple_build_call_from_tree): Propagate location.
* passes.def (pass_warn_restrict): Add new pass.
* tree-pass.h (make_pass_warn_restrict): Declare.
* tree-ssa-strlen.c (handle_builtin_strcpy): Detect overlapping
operations.
(handle_builtin_strcat): Same.
(strlen_optimize_stmt): Rename...
(strlen_check_and_optimize_stmt): ...to this. Handle strncat,
stpncpy, strncpy, and their checking forms.
gcc/testsuite/ChangeLog:
PR tree-optimization/78918
* c-c++-common/Warray-bounds.c: New test.
* c-c++-common/Warray-bounds-2.c: New test.
* c-c++-common/Warray-bounds-3.c: New test.
* c-c++-common/Warray-bounds-4.c: New test.
* c-c++-common/Warray-bounds-5.c: New test.
* c-c++-common/Wrestrict-2.c: New test.
* c-c++-common/Wrestrict.c: New test.
* c-c++-common/Wrestrict.s: New test.
* c-c++-common/Wsizeof-pointer-memaccess1.c: Adjust
* c-c++-common/Wsizeof-pointer-memaccess2.c: Same.
* g++.dg/torture/Wsizeof-pointer-memaccess1.C: Same.
* g++.dg/torture/Wsizeof-pointer-memaccess2.C: Same.
* gcc.dg/range.h: New header.
* gcc.dg/memcpy-6.c: New test.
* gcc.dg/pr69172.c: Adjust.
* gcc.dg/pr79223.c: Same.
* gcc.dg/pr81345.c: Adjust.
* gcc.dg/Wobjsize-1.c: Same.
* gcc.dg/Wrestrict-2.c: New test.
* gcc.dg/Wrestrict.c: New test.
* gcc.dg/Wsizeof-pointer-memaccess1.c: Adjust.
* gcc.dg/builtin-stpncpy.c: Same.
* gcc.dg/builtin-stringop-chk-1.c: Same.
* gcc.target/i386/chkp-stropt-17.c: New test.
* gcc.dg/torture/Wsizeof-pointer-memaccess1.c: Adjust.
From-SVN: r255755
|
|
PR tree-optimization/81303
* Makefile.in (gimple-loop-interchange.o): New object file.
* common.opt (floop-interchange): Reuse the option from graphite.
* doc/invoke.texi (-floop-interchange): Ditto. New document for
-floop-interchange and mention it for -O3.
* opts.c (default_options_table): Enable -floop-interchange at -O3.
* gimple-loop-interchange.cc: New file.
* params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter.
(PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter.
* passes.def (pass_linterchange): New pass.
* timevar.def (TV_LINTERCHANGE): New time var.
* tree-pass.h (make_pass_linterchange): New declaration.
* tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external
interchange. Record IV before/after increment in new parameters.
* tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration.
* tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction
path check into...
(check_reduction_path): ...New function here.
* tree-vectorizer.h (check_reduction_path): New declaration.
gcc/testsuite
* gcc.dg/tree-ssa/loop-interchange-1.c: New test.
* gcc.dg/tree-ssa/loop-interchange-1b.c: New test.
* gcc.dg/tree-ssa/loop-interchange-2.c: New test.
* gcc.dg/tree-ssa/loop-interchange-3.c: New test.
* gcc.dg/tree-ssa/loop-interchange-4.c: New test.
* gcc.dg/tree-ssa/loop-interchange-5.c: New test.
* gcc.dg/tree-ssa/loop-interchange-6.c: New test.
* gcc.dg/tree-ssa/loop-interchange-7.c: New test.
* gcc.dg/tree-ssa/loop-interchange-8.c: New test.
* gcc.dg/tree-ssa/loop-interchange-9.c: New test.
* gcc.dg/tree-ssa/loop-interchange-10.c: New test.
* gcc.dg/tree-ssa/loop-interchange-11.c: New test.
* gcc.dg/tree-ssa/loop-interchange-12.c: New test.
* gcc.dg/tree-ssa/loop-interchange-13.c: New test.
Co-Authored-By: Richard Biener <rguenther@suse.de>
From-SVN: r255472
|
|
* gimple-loop-jam.c: New file.
* Makefile.in (OBJS): Add gimple-loop-jam.o.
* common.opt (funroll-and-jam): New option.
* opts.c (default_options_table): Add unroll-and-jam at -O3.
* params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param.
(PARAM_UNROLL_JAM_MAX_UNROLL): Ditto.
* passes.def: Add pass_loop_jam.
* timevar.def (TV_LOOP_JAM): Add.
* tree-pass.h (make_pass_loop_jam): Declare.
* cfgloop.c (flow_loop_tree_node_add): Add AFTER argument.
* cfgloop.h (flow_loop_tree_node_add): Adjust declaration.
* cfgloopmanip.c (duplicate_loop): Add AFTER argument, adjust call
to flow_loop_tree_node_add.
(duplicate_subloops, copy_loops_to): Append to sibling list.
* cfgloopmanip.h: (duplicate_loop): Adjust declaration.
* doc/invoke.texi (-funroll-and-jam): Document new option.
(unroll-jam-min-percent, unroll-jam-max-unroll): Document new params.
testsuite/
* gcc.dg/unroll-and-jam.c: New test.
From-SVN: r255467
|
|
2017-10-23 Sandra Loosemore <sandra@codesourcery.com>
gcc/
* tree-pass.h (PROP_rtl_split_insns): Define.
* recog.c (pass_data_split_all_insns): Provide PROP_rtl_split_insns.
From-SVN: r254032
|
|
2017-08-29 Martin Liska <mliska@suse.cz>
* passes.def: Include pass_lower_switch.
* stmt.c (dump_case_nodes): Remove and move to
tree-switch-conversion.
(case_values_threshold): Likewise.
(expand_switch_as_decision_tree_p): Likewise.
(emit_case_decision_tree): Likewise.
(expand_case): Likewise.
(balance_case_nodes): Likewise.
(node_has_low_bound): Likewise.
(node_has_high_bound): Likewise.
(node_is_bounded): Likewise.
(emit_case_nodes): Likewise.
(struct simple_case_node): New struct.
(add_case_node): Remove.
(emit_case_dispatch_table): Use vector instead of case_list.
(reset_out_edges_aux): Remove.
(compute_cases_per_edge): Likewise.
(expand_case): Build list of simple_case_node.
(expand_sjlj_dispatch_table): Use it.
* tree-switch-conversion.c (struct case_node): Moved from
stmt.c and adjusted.
(emit_case_nodes): Likewise.
(node_has_low_bound): Likewise.
(node_has_high_bound): Likewise.
(node_is_bounded): Likewise.
(case_values_threshold): Likewise.
(reset_out_edges_aux): Likewise.
(compute_cases_per_edge): Likewise.
(add_case_node): Likewise.
(dump_case_nodes): Likewise.
(balance_case_nodes): Likewise.
(expand_switch_as_decision_tree_p): Likewise.
(emit_jump): Likewise.
(emit_case_decision_tree): Likewise.
(try_switch_expansion): Likewise.
(do_jump_if_equal): Likewise.
(emit_cmp_and_jump_insns): Likewise.
(fix_phi_operands_for_edge): New function.
(record_phi_operand_mapping): Likewise.
(class pass_lower_switch): New pass.
(pass_lower_switch::execute): New function.
(make_pass_lower_switch): Likewise.
(conditional_probability):
* timevar.def: Add TV_TREE_SWITCH_LOWERING.
* tree-pass.h: Add make_pass_lower_switch.
2017-08-29 Martin Liska <mliska@suse.cz>
* gcc.dg/tree-prof/update-loopch.c: Scan patterns in
switchlower.
* gcc.dg/tree-ssa/vrp104.c: Likewise.
From-SVN: r251412
|
|
2017-06-16 Richard Biener <rguenther@suse.de>
PR tree-optimization/81090
* passes.def (pass_record_bounds): Remove.
* tree-pass.h (make_pass_record_bounds): Likewise.
* tree-ssa-loop.c (pass_data_record_bounds, pass_record_bounds,
make_pass_record_bounds): Likewise.
* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Do
not free niter estimates at the beginning but at the end.
* tree-scalar-evolution.c (scev_finalize): Free niter estimates.
* gcc.dg/graphite/pr81090.c: New testcase.
From-SVN: r249249
|
|
* passes.c (emergency_dump_function): New.
* tree-pass.h (emergency_dump_function): Declare.
* plugin.c (plugins_internal_error_function): Remove.
* plugin.h (plugins_internal_error_function): Remove declaration.
* toplev.c (internal_error_function): New static function. Use it...
(general_init): ...here.
From-SVN: r248736
|
|
* cgraphunit.c (symbol_table::process_new_functions): Update.
* ipa-fnsummary.c (pass_data_inline_parameters): Remove.
(inline_generate_summary): Rename to ...
(ipa_fn_summary_generate): ... this one.
(inline_read_summary): Rename to ...
(ipa_fn_summary_read): ... this one.
(inline_write_summary): Rename to ...
(ipa_fn_summary_write): ... this one.
(inline_free_summary): Rename to ...
(ipa_free_fn_summary): ... this one.
(pass_data_local_fn_summary, pass_local_fn_summary,
make_pass_local_fn_summary, pass_data_ipa_free_fn_summary,
pass_ipa_free_fn_summary, make_pass_ipa_free_fn_summary,
pass_data_ipa_fn_summary, pass_ipa_fn_summary,
make_pass_ipa_fn_summary): New.
* ipa-fnsummary.h (inline_generate_summary, inline_read_summary,
inline_write_summary, inline_free_summary): Remove.
(ipa_free_fn_summary) : New.
* ipa-inline.c (ipa_inline): Update.
(pass_ipa_inline): Do not generate summaries.
* ipa.c (pass_data_ipa_free_fn_summary, pass_ipa_free_fn_summary):
Remove.
* passes.def: Replace pass_inline_parameters by pass_local_fn_summary
and add pass_ipa_fn_summary.
* tree-pass.h (make_pass_ipa_fn_summary, make_pass_local_fn_summary):
New.
(make_pass_inline_parameters): Remove.
* lto.c (do_whole_program_analysis): Replace inline_free_summary
by ipa_free_fn_summary.
* gcc.dg/ipa/ctor-empty-1.c: Update template.
* gcc.dg/ipa/inline-5.c: Likewise.
* gfortran.dg/pr48636.f90: Likewise.
From-SVN: r248375
|
|
* ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
(inline_edge_summary_vec): Turn into ...
(ipa_call_summaries): ... this one.
(redirect_to_unreachable, edge_set_predicate,
evaluate_properties_for_edge, inline_summary_alloc,
reset_ipa_call_summary, reset_inline_summary,
inline_summary_t::duplicate): Update.
(inline_edge_duplication_hook): Turn to ...
(ipa_call_summary_t::duplicate): ... this one.
(inline_edge_removal_hook): Turn to ...
(ipa_call_summary_t::remove): ... this one.
(dump_inline_edge_summary): Turn to ...
(dump_ipa_call_summary): ... this one.
(estimate_function_body_sizes): Update.
(inline_update_callee_summaries): Update.
(remap_edge_change_prob): Update.
(remap_edge_summaries): Update.
(inline_merge_summary): Update.
(do_estimate_edge_time): Update.
(inline_generate_summary): Update.
(inline_read_section): Update.
(inline_read_summary): Update.
(inline_free_summary): Update.
* ipa-inline.c (can_inline_edge_p): Update.
(compute_inlined_call_time): Update.
(want_inline_small_function_p): Update.
(edge_badness): Update.
(early_inliner): Update.
* ipa-inline.h (inline_edge_summary): Turn to ...
(ipa_call_summary): ... this one.
(ipa_call_summary_t): New class.
(inline_edge_summary_t, inline_edge_summary_vec): Remove.
(ipa_call_summaries): New.
(inline_edge_summary): Remove.
(estimate_edge_growth): Update.
* ipa-profile.c (ipa_propagate_frequency_1): Update.
* ipa-prop.c (ipa_make_edge_direct_to_target): Update.
* ipa-split.c (execute_split_functions): Update.
* ipa.c (symbol_table::remove_unreachable_nodes): Update.
From-SVN: r248365
|
|
From-SVN: r243994
|
|
argument 1 null where non-null expected after r243661)
PR bootstrap/78817
* tree-pass.h (make_pass_post_ipa_warn): Declare.
* builtins.c (validate_arglist): Adjust get_nonnull_args call.
Check for NULL pointer argument to nonnull arg here.
(validate_arg): Revert 2016-12-14 changes.
* calls.h (get_nonnull_args): Remove declaration.
* tree-ssa-ccp.c: Include diagnostic-core.h.
(pass_data_post_ipa_warn): New variable.
(pass_post_ipa_warn): New class.
(pass_post_ipa_warn::execute): New method.
(make_pass_post_ipa_warn): New function.
* tree.h (get_nonnull_args): Declare.
* tree.c (get_nonnull_args): New function.
* calls.c (maybe_warn_null_arg): Removed.
(maybe_warn_null_arg): Removed.
(initialize_argument_information): Revert 2016-12-14 changes.
* passes.def: Add pass_post_ipa_warn after first ccp after IPA.
c-family/
* c-common.c (struct nonnull_arg_ctx): New type.
(check_function_nonnull): Return bool instead of void. Use
nonnull_arg_ctx as context rather than just location_t.
(check_nonnull_arg): Adjust for the new context type, set
warned_p to true if a warning has been diagnosed.
(check_function_arguments): Return bool instead of void.
* c-common.h (check_function_arguments): Adjust prototype.
c/
* c-typeck.c (build_function_call_vec): If check_function_arguments
returns true, set TREE_NO_WARNING on CALL_EXPR.
cp/
* typeck.c (cp_build_function_call_vec): If check_function_arguments
returns true, set TREE_NO_WARNING on CALL_EXPR.
* call.c (build_over_call): Likewise.
From-SVN: r243874
|
|
* internal-fn.c (expand_GOMP_SIMT_LANE): New.
(expand_GOMP_SIMT_VF): New.
(expand_GOMP_SIMT_LAST_LANE): New.
(expand_GOMP_SIMT_ORDERED_PRED): New.
(expand_GOMP_SIMT_VOTE_ANY): New.
(expand_GOMP_SIMT_XCHG_BFLY): New.
(expand_GOMP_SIMT_XCHG_IDX): New.
* internal-fn.def (GOMP_SIMT_LANE): New.
(GOMP_SIMT_VF): New.
(GOMP_SIMT_LAST_LANE): New.
(GOMP_SIMT_ORDERED_PRED): New.
(GOMP_SIMT_VOTE_ANY): New.
(GOMP_SIMT_XCHG_BFLY): New.
(GOMP_SIMT_XCHG_IDX): New.
* omp-low.c (omp_maybe_offloaded_ctx): New, outlined from...
(create_omp_child_function): ...here. Set "omp target entrypoint"
or "omp declare target" attribute based on is_gimple_omp_offloaded.
(omp_max_simt_vf): New. Use it...
(omp_max_vf): ...here.
(lower_rec_input_clauses): Add reduction lowering for SIMT execution.
(lower_lastprivate_clauses): Likewise, for "lastprivate" lowering.
(lower_omp_ordered): Likewise, for "ordered" lowering.
(expand_omp_simd): Add SIMT transforms.
(pass_data_lower_omp): Add PROP_gimple_lomp_dev.
(execute_omp_device_lower): New.
(pass_data_omp_device_lower): New.
(pass_omp_device_lower): New pass.
(make_pass_omp_device_lower): New.
* passes.def (pass_omp_device_lower): Position new pass.
* tree-pass.h (PROP_gimple_lomp_dev): Define.
(make_pass_omp_device_lower): Declare.
From-SVN: r242710
|
|
2016-10-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR middle-end/22141
* Makefile.in (OBJS): Add gimple-ssa-store-merging.o.
* common.opt (fstore-merging): New Optimization option.
* opts.c (default_options_table): Add entry for
OPT_ftree_store_merging.
* fold-const.h (can_native_encode_type_p): Declare prototype.
* fold-const.c (can_native_encode_type_p): Define.
* params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Define.
(PARAM_MAX_STORES_TO_MERGE): Likewise.
* timevar.def (TV_GIMPLE_STORE_MERGING): New timevar.
* passes.def: Insert pass_tree_store_merging.
* tree-pass.h (make_pass_store_merging): Declare extern
prototype.
* gimple-ssa-store-merging.c: New file.
* doc/invoke.texi (Optimization Options): Document
-fstore-merging.
(--param documentation): Document store-merging-allow-unaligned
and max-stores-to-merge.
2016-10-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Jakub Jelinek <jakub@redhat.com>
Andrew Pinski <pinskia@gmail.com>
PR middle-end/22141
PR rtl-optimization/23684
* gcc.c-torture/execute/pr22141-1.c: New test.
* gcc.c-torture/execute/pr22141-2.c: Likewise.
* gcc.target/aarch64/ldp_stp_1.c: Adjust for -fstore-merging.
* gcc.target/aarch64/ldp_stp_4.c: Likewise.
* gcc.dg/store_merging_1.c: New test.
* gcc.dg/store_merging_2.c: Likewise.
* gcc.dg/store_merging_3.c: Likewise.
* gcc.dg/store_merging_4.c: Likewise.
* gcc.dg/store_merging_5.c: Likewise.
* gcc.dg/store_merging_6.c: Likewise.
* gcc.dg/store_merging_7.c: Likewise.
* gcc.target/i386/pr22141.c: Likewise.
* gcc.target/i386/pr34012.c: Add -fno-store-merging to dg-options.
* g++.dg/init/new17.C: Likewise.
Co-Authored-By: Andrew Pinski <pinskia@gmail.com>
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r241649
|
|
(approved at https://gcc.gnu.org/ml/gcc-patches/2015-12/msg00648.html )
* common.opt (-fsplit-loops): New flag.
* passes.def (pass_loop_split): Add.
* opts.c (default_options_table): Add OPT_fsplit_loops entry at -O3.
(enable_fdo_optimizations): Add loop splitting.
* timevar.def (TV_LOOP_SPLIT): Add.
* tree-pass.h (make_pass_loop_split): Declare.
* tree-ssa-loop-manip.h (rewrite_into_loop_closed_ssa_1): Declare.
* tree-ssa-loop-unswitch.c: Include tree-ssa-loop-manip.h,
* tree-ssa-loop-split.c: New file.
* Makefile.in (OBJS): Add tree-ssa-loop-split.o.
* doc/invoke.texi (fsplit-loops): Document.
* doc/passes.texi (Loop optimization): Add paragraph about loop
splitting.
testsuite/
* gcc.dg/loop-split.c: New test.
* gcc.dg/tree-ssa/ifc-9.c: Update.
* gcc.dg/tree-ssa/ifc-10.c: Update.
From-SVN: r241374
|
|
* Makefile.in (OBJS): Add gimple-ssa-warn-alloca.o.
* passes.def: Add two instances of pass_walloca.
* tree-pass.h (make_pass_walloca): New.
* gimple-ssa-warn-walloca.c: New file.
* doc/invoke.texi: Document -Walloca, -Walloca-larger-than=, and
-Wvla-larger-than= options.
From-SVN: r241318
|
|
gcc/ChangeLog:
PR middle-end/49905
* Makefile.in (OBJS): Add gimple-ssa-sprintf.o.
* config/linux.h (TARGET_PRINTF_POINTER_FORMAT): Redefine.
* config/linux.c (gnu_libc_printf_pointer_format): New function.
* config/sol2.h (TARGET_PRINTF_POINTER_FORMAT): Same.
* config/sol2.c (solaris_printf_pointer_format): New function.
* doc/invoke.texi (-Wformat-length, -fprintf-return-value): New
options.
* doc/tm.texi.in (TARGET_PRINTF_POINTER_FORMAT): Document.
* doc/tm.texi: Regenerate.
* gimple-fold.h (get_range_strlen): New function.
(get_maxval_strlen): Declare existing function.
* gimple-fold.c (get_range_strlen): Add arguments and compute both
maximum and minimum.
(get_range_strlen): Define overload.
(get_maxval_strlen): Adjust.
* gimple-ssa-sprintf.c: New file and pass.
* passes.def (pass_sprintf_length): Add new pass.
* targhooks.h (default_printf_pointer_format): Declare new function.
(gnu_libc_printf_pointer_format): Same.
(solaris_libc_printf_pointer_format): Same.
* targhooks.c (default_printf_pointer_format): Define new function.
* tree-pass.h (make_pass_sprintf_length): Declare new function.
* print-tree.c: Increase buffer size.
gcc/c-family/ChangeLog:
PR middle-end/49905
* c.opt: Add -Wformat-length and -fprintf-return-value.
gcc/testsuite/ChangeLog:
PR middle-end/49905
* gcc.dg/builtin-stringop-chk-1.c: Adjust.
* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-warn-2.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-warn-4.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-2.c: New test.
From-SVN: r240298
|
|
gcc/ChangeLog:
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* doc/invoke.texi: Document -fdump-tree-evrp.
* passes.def: Define new pass_early_vrp.
* timevar.def: Define new TV_TREE_EARLY_VRP.
* tree-pass.h (make_pass_early_vrp): New.
* tree-ssa-propagate.c: Make replace_uses_in non static.
* tree-ssa-propagate.h: Export replace_uses_in.
* tree-vrp.c (extract_range_for_var_from_comparison_expr): New.
(extract_range_from_assert): Factor out
extract_range_for_var_from_comparison_expr.
(vrp_initialize_lattice): New.
(vrp_initialize): Factor out vrp_initialize_lattice.
(vrp_valueize): Fix it to reject complex value ranges.
(vrp_free_lattice): New.
(evrp_dom_walker::before_dom_children): Likewise.
(evrp_dom_walker::after_dom_children): Likewise.
(evrp_dom_walker::push_value_range): Likewise.
(evrp_dom_walker::pop_value_range): Likewise.
(execute_early_vrp): Likewise.
(execute_vrp): Call vrp_initialize_lattice and
vrp_free_lattice.
(make_pass_early_vrp): New.
gcc/testsuite/ChangeLog:
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* g++.dg/tree-ssa/pr31146-2.C: Run with -fno-tree-evrp as evrp also
does the same transformation.
* g++.dg/warn/pr33738.C: XFAIL as optimization now happens in ccp.
* gcc.dg/tree-ssa/evrp1.c: New test.
* gcc.dg/tree-ssa/evrp2.c: New test.
* gcc.dg/tree-ssa/evrp3.c: New test.
* gcc.dg/tree-ssa/pr20657.c: Check for the pattern in evrp dump.
* gcc.dg/tree-ssa/pr22117.c: Likewise.
* gcc.dg/tree-ssa/pr61839_2.c: Likewise.
* gcc.dg/tree-ssa/pr64130.c: Likewise.
* gcc.dg/tree-ssa/pr37508.c: Change the pattern to be checked as
foling now happens early.
* gcc.dg/tree-ssa/vrp04.c: Likewise.
* gcc.dg/tree-ssa/vrp06.c: Likewise.
* gcc.dg/tree-ssa/vrp16.c: Likewise.
* gcc.dg/tree-ssa/vrp25.c: Likewise.
* gcc.dg/tree-ssa/vrp67.c: Likewise.
From-SVN: r240291
|
|
* passes.def (pass_early_thread_jumps): Schedule after forwprop.
* tree-pass.h (make_pass_early_thread_jumps): Declare.
* tree-ssa-threadbackward.c (fsm_find_thread_path,
fsm_find_thread_path, profitable_jump_thread_path,
fsm_find_control_statement_thread_paths,
find_jump_threads_backwards): Add speed_p parameter.
(pass_data_early_thread_jumps): New pass.
(make_pass_early_thread_jumps): New function.
* g++.dg/predict-loop-exit-1.C: Disable early jump threading.
* g++.dg/predict-loop-exit-2.C: Disable early jump threading.
* g++.dg/predict-loop-exit-3.C: Disable early jump threading.
* gcc.dg/tree-ssa/pr69196-1.c: Disable early jump threading.
* gcc.dg/tree-ssa/vrp01.c: Disable early jump threading.
* gcc.dg/tree-ssa/ssa-dom-thread-2b.c: Disable early jump threading.
* gcc.dg/tree-ssa/pr68198.c: Scan ethread dump.
* gcc.dg/tree-ssa/ssa-thread-13.c: Scan ethread dump.
* gcc.dg/tree-ssa/vrp56.c: Scan ethread dump.
* gcc.dg/tree-ssa/vrp92.c: Scan ethread dump.
* gcc.dg/uninit-15.c: Swap xfailed and non-xfailed alternative.
From-SVN: r240221
|
|
2016-08-18 Richard Biener <rguenther@suse.de>
* tree-pass.h (make_pass_materialize_all_clones): Declare.
* ipa.c (pass_data_materialize_all_clones, pass_materialize_all_clones,
make_pass_materialize_all_clones): New simple IPA pass encapsulating
clone materialization.
* passes.def (all_late_ipa_passes): Start with
pass_materialize_all_clones.
* cgraphunit.c (symbol_table::compile): Remove call to
materialize_all_clones.
* tree-into-ssa.c: Include statistics.h.
(update_ssa): Count number of times we do incremental/rewrite
SSA update.
From-SVN: r239567
|
|
* tree-ssa-threadedge.c: Remove include of tree-ssa-threadbackward.h.
(thread_across_edge): Remove calls to find_jump_threads_backwards.
* passes.def: Add jump threading passes before DOM/VRP.
* tree-ssa-threadbackward.c (find_jump_threads_backwards): Change
argument to a basic block from an edge. Remove tests which are
handled elsewhere.
(pass_data_thread_jumps, class pass_thread_jumps): New.
(pass_thread_jumps::gate, pass_thread_jumps::execute): New.
(make_pass_thread_jumps): Likewise.
* tree-pass.h (make_pass_thread_jumps): Declare.
* gcc.dg/tree-ssa/pr21417.c: Update expected output.
* gcc.dg/tree-ssa/pr66752-3.c: Likewise.
* gcc.dg/tree-ssa/pr68198.c: Likewise.
* gcc.dg/tree-ssa/pr69196-1.c: Likewise.
* gcc.dg/tree-ssa/pr69270-3.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-2b.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-2g.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-2h.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-6.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-12.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-13.c: Likewise.
* gcc.dg/tree-ssa/vrp56.c: Likewise.
From-SVN: r236831
|
|
2016-05-03 Richard Biener <rguenther@suse.de>
* gimplify.h (get_initialized_tmp_var): Add allow_ssa parameter
default true.
(gimplify_arg): Likewise.
* gimplify.c (gimplify_expr): Add overload with allow_ssa parameter,
re-writing the result to a decl if required.
(internal_get_tmp_var): Add allow_ssa parameter
and override into_ssa with it.
(get_formal_tmp_var): Adjust.
(get_initialized_tmp_var): Add allow_ssa parameter.
(gimplify_arg): Add allow_ssa parameter and avoid generating
SSA names for the result false.
(gimplify_call_expr): If the call may return twice do not
gimplify parameters into SSA.
(prepare_gimple_addressable): Do not allow an SSA name as
temporary.
(gimplify_modify_expr): Adjust assert. For noreturn calls
with a SSA name LHS adjust its def.
(gimplify_save_expr): Do not allow an SSA name as save-expr
result.
(gimplify_one_sizepos): Do not allow an SSA name as a sizepos.
(gimplify_body): Init GIMPLE SSA data structures and gimplify
into-SSA.
(gimplify_scan_omp_clauses): Make sure OMP_CLAUSE_SIZE is not
an SSA name. Likewise for OMP_CLAUSE_REDUCTION operands.
(gimplify_omp_for): Likewise for OMP_CLAUSE_DECL. Likewise
for OMP_FOR_COND, OMP_FOR_INCR and OMP_CLAUSE_LINEAR_STEP.
(optimize_target_teams): Do not allow SSA names for clause operands.
(gimplify_expr): Likewise for where we mark the result addressable.
* passes.def (pass_init_datastructures): Remove.
* tree-into-ssa.c (mark_def_sites): Ignore existing SSA names.
(rewrite_stmt): Likewise.
* tree-inline.c (initialize_cfun): Properly transfer SSA state.
(replace_locals_op): Replace SSA names.
(copy_gimple_seq_and_replace_locals): Init src_cfun.
* gimple-low.c (lower_builtin_setjmp): Deal with SSA.
* cgraph.c (release_function_body): Free CFG annotations only
when we have a CFG. Simplify.
* gimple-fold.c (gimplify_and_update_call_from_tree): Use
force_gimple_operand instead of get_initialized_tmp_var.
* tree-pass.h (make_pass_init_datastructures): Remove.
* tree-ssa.c (execute_init_datastructures): Remove.
(pass_data_init_datastructures): Likewise.
(class pass_init_datastructures): Likewise.
(make_pass_init_datastructures): Likewise.
* omp-low.c (create_omp_child_function): Init SSA data structures.
(grid_expand_target_grid_body): Likewise.
* tree-cfg.c (move_block_to_fn): Double-check the DEF is an SSA
name before adding it to names_to_release.
(remove_bb): Always release SSA defs.
* tree-ssa-ccp.c (get_default_value): Check SSA_NAME_VAR
before dereferencing it.
* cgraphunit.c (init_lowered_empty_function): Always
int SSA data structures.
* tree-ssanames.c (release_defs): Remove assert that we are in
SSA form.
* trans-mem.c (diagnose_tm_1): Handle SSA name function.
c-family/
* cilk.c (cilk_gimplify_call_params_in_spawned_fn): Do not
allow call args to gimplify to SSA names.
* gcc.dg/pr30172-1.c: Adjust.
* gcc.dg/pr63743.c: Likewise.
* gcc.dg/tm/pr51696.c: Likewise.
* c-c++-common/tm/safe-1.c: Likewise.
* gcc.dg/tree-prof/val-prof-3.c: Likewise.
* gcc.dg/plugin/self-assign-test-1.c: XFAIL case that needs CSE.
* g++.dg/plugin/self-assign-test-1.C: Likewise.
* g++.dg/plugin/self-assign-test-2.C: Likewise.
From-SVN: r235817
|
|
2016-04-17 Tom de Vries <tom@codesourcery.com>
PR other/70185
* tree-pass.h (class opt_pass): Remove graph_dump_initialized member.
* dumpfile.h (struct dump_file_info): Add graph_dump_initialized field.
* dumpfile.c (dump_files): Initialize graph_dump_initialized field.
* passes.c (finish_optimization_passes): Only call
finish_graph_dump_file if dfi->graph_dump_initialized.
(execute_function_dump, pass_init_dump_file): Use
dfi->graph_dump_initialized instead of pass->graph_dump_initialized.
From-SVN: r235074
|
|
those could have changed)
PR c/69835
* common.opt (Wnonnull-compare): New warning.
* doc/invoke.texi (-Wnonnull): Remove text about comparison
of arguments against NULL.
(-Wnonnull-compare): Document.
* Makefile.in (OBJS): Add gimple-ssa-nonnull-compare.o.
* tree-pass.h (make_pass_warn_nonnull_compare): Declare.
* passes.def (pass_warn_nonnull_compare): Add.
* gimple-ssa-nonnull-compare.c: New file.
c-family/
* c.opt (Wnonnull-compare): Enable for -Wall.
c/
* c-typeck.c (build_binary_op): Revert 2015-09-09 change.
cp/
* typeck.c (cp_build_binary_op): Revert 2015-09-09 change.
testsuite/
* c-c++-common/nonnull-1.c: Use -Wnonnull-compare instead of
-Wnonnull in dg-options.
* c-c++-common/nonnull-2.c: New test.
From-SVN: r233472
|
|
2016-01-19 Martin Jambor <mjambor@suse.cz>
Martin Liska <mliska@suse.cz>
Michael Matz <matz@suse.de>
libgomp/
* plugin/Makefrag.am: Add HSA plugin requirements.
* plugin/configfrag.ac (HSA_RUNTIME_INCLUDE): New variable.
(HSA_RUNTIME_LIB): Likewise.
(HSA_RUNTIME_CPPFLAGS): Likewise.
(HSA_RUNTIME_INCLUDE): New substitution.
(HSA_RUNTIME_LIB): Likewise.
(HSA_RUNTIME_LDFLAGS): Likewise.
(hsa-runtime): New configure option.
(hsa-runtime-include): Likewise.
(hsa-runtime-lib): Likewise.
(PLUGIN_HSA): New substitution variable.
Fill HSA_RUNTIME_INCLUDE and HSA_RUNTIME_LIB according to the new
configure options.
(PLUGIN_HSA_CPPFLAGS): Likewise.
(PLUGIN_HSA_LDFLAGS): Likewise.
(PLUGIN_HSA_LIBS): Likewise.
Check that we have access to HSA run-time.
* libgomp-plugin.h (offload_target_type): New element
OFFLOAD_TARGET_TYPE_HSA.
* libgomp.h (gomp_target_task): New fields firstprivate_copies and
args.
(bool gomp_create_target_task): Updated.
(gomp_device_descr): Extra parameter of run_func and async_run_func,
new field can_run_func.
* libgomp_g.h (GOMP_target_ext): Update prototype.
* oacc-host.c (host_run): Added a new parameter args.
* target.c (calculate_firstprivate_requirements): New function.
(copy_firstprivate_data): Likewise.
(gomp_target_fallback_firstprivate): Use them.
(gomp_target_unshare_firstprivate): New function.
(gomp_get_target_fn_addr): Allow returning NULL for shared memory
devices.
(GOMP_target): Do host fallback for all shared memory devices. Do not
pass any args to plugins.
(GOMP_target_ext): Introduce device-specific argument parameter args.
Allow host fallback if device shares memory. Do not remap data if
device has shared memory.
(gomp_target_task_fn): Likewise. Also treat shared memory devices
like host fallback for mappings.
(GOMP_target_data): Treat shared memory devices like host fallback.
(GOMP_target_data_ext): Likewise.
(GOMP_target_update): Likewise.
(GOMP_target_update_ext): Likewise. Also pass NULL as args to
gomp_create_target_task.
(GOMP_target_enter_exit_data): Likewise.
(omp_target_alloc): Treat shared memory devices like host fallback.
(omp_target_free): Likewise.
(omp_target_is_present): Likewise.
(omp_target_memcpy): Likewise.
(omp_target_memcpy_rect): Likewise.
(omp_target_associate_ptr): Likewise.
(gomp_load_plugin_for_device): Also load can_run.
* task.c (GOMP_PLUGIN_target_task_completion): Free
firstprivate_copies.
(gomp_create_target_task): Accept new argument args and store it to
ttask.
* plugin/plugin-hsa.c: New file.
gcc/
* Makefile.in (OBJS): Add new source files.
(GTFILES): Add hsa.c.
* common.opt (disable_hsa): New variable.
(-Whsa): New warning.
* config.in (ENABLE_HSA): New.
* configure.ac: Treat hsa differently from other accelerators.
(OFFLOAD_TARGETS): Define ENABLE_OFFLOADING according to
$enable_offloading.
(ENABLE_HSA): Define ENABLE_HSA according to $enable_hsa.
* doc/install.texi (Configuration): Document --with-hsa-runtime,
--with-hsa-runtime-include, --with-hsa-runtime-lib and
--with-hsa-kmt-lib.
* doc/invoke.texi (-Whsa): Document.
(hsa-gen-debug-stores): Likewise.
* lto-wrapper.c (compile_images_for_offload_targets): Do not attempt
to invoke offload compiler for hsa acclerator.
* opts.c (common_handle_option): Determine whether HSA offloading
should be performed.
* params.def (PARAM_HSA_GEN_DEBUG_STORES): New parameter.
* builtin-types.def (BT_FN_VOID_UINT_PTR_INT_PTR): New.
(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_INT_INT): Removed.
(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): New.
* gimple-low.c (lower_stmt): Also handle GIMPLE_OMP_GRID_BODY.
* gimple-pretty-print.c (dump_gimple_omp_for): Also handle
GF_OMP_FOR_KIND_GRID_LOOP.
(dump_gimple_omp_block): Also handle GIMPLE_OMP_GRID_BODY.
(pp_gimple_stmt_1): Likewise.
* gimple-walk.c (walk_gimple_stmt): Likewise.
* gimple.c (gimple_build_omp_grid_body): New function.
(gimple_copy): Also handle GIMPLE_OMP_GRID_BODY.
* gimple.def (GIMPLE_OMP_GRID_BODY): New.
* gimple.h (enum gf_mask): Added GF_OMP_PARALLEL_GRID_PHONY,
GF_OMP_FOR_KIND_GRID_LOOP, GF_OMP_FOR_GRID_PHONY and
GF_OMP_TEAMS_GRID_PHONY.
(gimple_statement_omp_single_layout): Updated comments.
(gimple_build_omp_grid_body): New function.
(gimple_has_substatements): Also handle GIMPLE_OMP_GRID_BODY.
(gimple_omp_for_grid_phony): New function.
(gimple_omp_for_set_grid_phony): Likewise.
(gimple_omp_parallel_grid_phony): Likewise.
(gimple_omp_parallel_set_grid_phony): Likewise.
(gimple_omp_teams_grid_phony): Likewise.
(gimple_omp_teams_set_grid_phony): Likewise.
(gimple_return_set_retbnd): Also handle GIMPLE_OMP_GRID_BODY.
* omp-builtins.def (BUILT_IN_GOMP_OFFLOAD_REGISTER): New.
(BUILT_IN_GOMP_OFFLOAD_UNREGISTER): Likewise.
(BUILT_IN_GOMP_TARGET): Updated type.
* omp-low.c: Include symbol-summary.h, hsa.h and params.h.
(adjust_for_condition): New function.
(get_omp_for_step_from_incr): Likewise.
(extract_omp_for_data): Moved parts to adjust_for_condition and
get_omp_for_step_from_incr.
(build_outer_var_ref): Handle GIMPLE_OMP_GRID_BODY.
(fixup_child_record_type): Bail out if receiver_decl is NULL.
(scan_sharing_clauses): Handle OMP_CLAUSE__GRIDDIM_.
(scan_omp_parallel): Do not create child functions for phony
constructs.
(check_omp_nesting_restrictions): Handle GIMPLE_OMP_GRID_BODY.
(scan_omp_1_op): Checking assert we are not remapping to
ERROR_MARK. Also also handle GIMPLE_OMP_GRID_BODY.
(parallel_needs_hsa_kernel_p): New function.
(expand_parallel_call): Register apprpriate parallel child
functions as HSA kernels.
(grid_launch_attributes_trees): New type.
(grid_attr_trees): New variable.
(grid_create_kernel_launch_attr_types): New function.
(grid_insert_store_range_dim): Likewise.
(grid_get_kernel_launch_attributes): Likewise.
(get_target_argument_identifier_1): Likewise.
(get_target_argument_identifier): Likewise.
(get_target_argument_value): Likewise.
(push_target_argument_according_to_value): Likewise.
(get_target_arguments): Likewise.
(expand_omp_target): Call get_target_arguments instead of looking
up for teams and thread limit.
(grid_expand_omp_for_loop): New function.
(grid_arg_decl_map): New type.
(grid_remap_kernel_arg_accesses): New function.
(grid_expand_target_kernel_body): New function.
(expand_omp): Call it.
(lower_omp_for): Do not emit phony constructs.
(lower_omp_taskreg): Do not emit phony constructs but create for them
a temporary variable receiver_decl.
(lower_omp_taskreg): Do not emit phony constructs.
(lower_omp_teams): Likewise.
(lower_omp_grid_body): New function.
(lower_omp_1): Call it.
(grid_reg_assignment_to_local_var_p): New function.
(grid_seq_only_contains_local_assignments): Likewise.
(grid_find_single_omp_among_assignments_1): Likewise.
(grid_find_single_omp_among_assignments): Likewise.
(grid_find_ungridifiable_statement): Likewise.
(grid_target_follows_gridifiable_pattern): Likewise.
(grid_remap_prebody_decls): Likewise.
(grid_copy_leading_local_assignments): Likewise.
(grid_process_kernel_body_copy): Likewise.
(grid_attempt_target_gridification): Likewise.
(grid_gridify_all_targets_stmt): Likewise.
(grid_gridify_all_targets): Likewise.
(execute_lower_omp): Call grid_gridify_all_targets.
(make_gimple_omp_edges): Handle GIMPLE_OMP_GRID_BODY.
* tree-core.h (omp_clause_code): Added OMP_CLAUSE__GRIDDIM_.
(tree_omp_clause): Added union field dimension.
* tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE__GRIDDIM_.
* tree.c (omp_clause_num_ops): Added number of arguments of
OMP_CLAUSE__GRIDDIM_.
(omp_clause_code_name): Added name of OMP_CLAUSE__GRIDDIM_.
(walk_tree_1): Handle OMP_CLAUSE__GRIDDIM_.
* tree.h (OMP_CLAUSE_GRIDDIM_DIMENSION): New.
(OMP_CLAUSE_SET_GRIDDIM_DIMENSION): Likewise.
(OMP_CLAUSE_GRIDDIM_SIZE): Likewise.
(OMP_CLAUSE_GRIDDIM_GROUP): Likewise.
* passes.def: Schedule pass_ipa_hsa and pass_gen_hsail.
* tree-pass.h (make_pass_gen_hsail): Declare.
(make_pass_ipa_hsa): Likewise.
* ipa-hsa.c: New file.
* lto-section-in.c (lto_section_name): Add hsa section name.
* lto-streamer.h (lto_section_type): Add hsa section.
* timevar.def (TV_IPA_HSA): New.
* hsa-brig-format.h: New file.
* hsa-brig.c: New file.
* hsa-dump.c: Likewise.
* hsa-gen.c: Likewise.
* hsa.c: Likewise.
* hsa.h: Likewise.
* toplev.c (compile_file): Call hsa_output_brig.
* hsa-regalloc.c: New file.
gcc/fortran/
* types.def (BT_FN_VOID_UINT_PTR_INT_PTR): New.
(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_INT_INT): Removed.
(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): New.
gcc/lto/
* lto-partition.c: Include "hsa.h"
(add_symbol_to_partition_1): Put hsa implementations into the
same partition as host implementations.
liboffloadmic/
* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_async_run): New
unused parameter.
(GOMP_OFFLOAD_run): Likewise.
include/
* gomp-constants.h (GOMP_DEVICE_HSA): New macro.
(GOMP_VERSION_HSA): Likewise.
(GOMP_TARGET_ARG_DEVICE_MASK): Likewise.
(GOMP_TARGET_ARG_DEVICE_ALL): Likewise.
(GOMP_TARGET_ARG_SUBSEQUENT_PARAM): Likewise.
(GOMP_TARGET_ARG_ID_MASK): Likewise.
(GOMP_TARGET_ARG_NUM_TEAMS): Likewise.
(GOMP_TARGET_ARG_THREAD_LIMIT): Likewise.
(GOMP_TARGET_ARG_VALUE_SHIFT): Likewise.
(GOMP_TARGET_ARG_HSA_KERNEL_ATTRIBUTES): Likewise.
From-SVN: r232549
|
|
From-SVN: r232055
|
|
2015-12-16 Tom de Vries <tom@codesourcery.com>
* opts.c (default_options_optimization): Set fipa-pta on by default for
fopenacc.
* passes.def: Move kernels pass group to pass_ipa_oacc.
* tree-pass.h (make_pass_oacc_kernels2): Remove.
(make_pass_ipa_oacc, make_pass_ipa_oacc_kernels): Declare.
* tree-ssa-loop.c (pass_oacc_kernels2, make_pass_oacc_kernels2): Remove.
(pass_ipa_oacc, pass_ipa_oacc_kernels): New pass.
(make_pass_ipa_oacc, make_pass_ipa_oacc_kernels): New function.
* tree-ssa-structalias.c (pass_ipa_pta::clone): New function.
* g++.dg/ipa/devirt-37.C: Update for new fre2 pass.
* g++.dg/ipa/devirt-40.C: Same.
* g++.dg/tree-ssa/pr61034.C: Same.
* gcc.dg/ipa/ipa-pta-1.c: Update for new pta1 pass.
* gcc.dg/ipa/ipa-pta-10.c: Same.
* gcc.dg/ipa/ipa-pta-11.c: Same.
* gcc.dg/ipa/ipa-pta-14.c: Same.
* gcc.dg/ipa/ipa-pta-16.c: Same.
* gcc.dg/ipa/ipa-pta-2.c: Same.
* gcc.dg/ipa/ipa-pta-5.c: Same.
* gcc.dg/ipa/ipa-pta-6.c: Same.
* gcc.dg/torture/ipa-pta-1.c: Same.
* gcc.dg/ipa/ipa-pta-13.c: Update for new fre2 and pta1 pass.
* gcc.dg/ipa/ipa-pta-3.c: Same.
* gcc.dg/ipa/ipa-pta-4.c: Same.
From-SVN: r231690
|
|
attribute.
gcc/c-family/
* c-common.c (c_common_attribute_table): Handle "omp declare target
link" attribute.
gcc/
* cgraphunit.c (output_in_order): Do not assemble "omp declare target
link" variables in ACCEL_COMPILER.
* gimplify.c (gimplify_adjust_omp_clauses): Do not remove mapping of
"omp declare target link" variables.
* omp-low.c (scan_sharing_clauses): Do not remove mapping of "omp
declare target link" variables.
(add_decls_addresses_to_decl_constructor): For "omp declare target link"
variables output address of the artificial pointer instead of address of
the variable. Set most significant bit of the size to mark them.
(pass_data_omp_target_link): New pass_data.
(pass_omp_target_link): New class.
(find_link_var_op): New static function.
(make_pass_omp_target_link): New function.
* passes.def: Add pass_omp_target_link.
* tree-pass.h (make_pass_omp_target_link): Declare.
* varpool.c (symbol_table::output_variables): Do not assemble "omp
declare target link" variables in ACCEL_COMPILER.
gcc/lto/
* lto.c: Include stringpool.h and fold-const.h.
(offload_handle_link_vars): New static function.
(lto_main): Call offload_handle_link_vars.
libgomp/
* libgomp.h (REFCOUNT_LINK): Define.
(struct splay_tree_key_s): Add link_key.
* target.c (gomp_map_vars): Treat REFCOUNT_LINK objects as not mapped.
Replace target address of the pointer with target address of newly
mapped object in the splay tree. Set link pointer on target to the
device address of the mapped object.
(gomp_unmap_vars): Restore target address of the pointer in the splay
tree for REFCOUNT_LINK objects after unmapping.
(gomp_load_image_to_device): Set refcount to REFCOUNT_LINK for "omp
declare target link" objects.
(gomp_unload_image_from_device): Replace j with i. Force unmap of all
"omp declare target link" objects, which were mapped for the image.
(gomp_exit_data): Restore target address of the pointer in the splay
tree for REFCOUNT_LINK objects after unmapping.
* testsuite/libgomp.c/target-link-1.c: New file.
From-SVN: r231655
|
|
* sancov.c: New file.
* Makefile.in (OBJS): Add sancov.o.
* invoke.texi (-fsanitize-coverage=trace-pc): Describe.
* passes.def (sancov_pass): Add.
* tree-pass.h (sancov_pass): Add.
* common.opt (-fsanitize-coverage=trace-pc): Add.
* sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_PC): Add.
* builtins.def (DEF_SANITIZER_BUILTIN): Enable for
flag_sanitize_coverage.
From-SVN: r231296
|
|
2015-11-25 Tom de Vries <tom@codesourcery.com>
* tree-pass.h (make_pass_oacc_kernels, make_pass_oacc_kernels2):
Declare.
* tree-ssa-loop.c (gate_oacc_kernels): New static function.
(pass_data_oacc_kernels, pass_data_oacc_kernels2): New pass_data.
(class pass_oacc_kernels, class pass_oacc_kernels2): New pass.
(make_pass_oacc_kernels, make_pass_oacc_kernels2): New function.
From-SVN: r230906
|
|
2015-11-16 Tom de Vries <tom@codesourcery.com>
* passes.c (first_pass_instance): Remove variable.
(execute_todo): Remove setting of first_pass_instance.
* tree-pass.h (first_pass_instance): Remove declaration.
From-SVN: r230420
|
|
2015-11-16 Tom de Vries <tom@codesourcery.com>
* passes.def: Add arg to pass_dominator pass instantiation.
* tree-pass.h (first_pass_instance): Remove pass_dominator-related bit
of comment.
* tree-ssa-dom.c (pass_dominator::pass_dominator): Initialize
may_peel_loop_headers_p.
(pass_dominator::set_pass_param): New member function. Set
may_peel_loop_headers_p.
(pass_dominator::may_peel_loop_headers_p): New private member.
(pass_dominator::execute): Use may_peel_loop_headers_p instead of
first_pass_instance.
From-SVN: r230417
|
|
2015-11-16 Tom de Vries <tom@codesourcery.com>
* gdbhooks.py (class PassNames): Handle extra arg NEXT_PASS argument.
* gen-pass-instances.awk (handle_line): Same.
* pass_manager.h (class pass_manager): Define and undefine
NEXT_PASS_WITH_ARG.
* passes.c (opt_pass::set_pass_param): New function.
(pass_manager::pass_manager): Define and undefine NEXT_PASS_WITH_ARG.
* passes.def: Add extra arg to NEXT_PASS (pass_vrp).
* tree-pass.h (gimple_opt::set_pass_param): Declare.
* tree-vrp.c (vrp_finalize, execute_vrp): Add and handle
warn_array_bounds_p parameter.
(pass_vrp::pass_vrp): Initialize warn_array_bounds_p.
(pass_vrp::set_pass_param): New function.
(pass_vrp::execute): Add warn_array_bounds_p arg to execute_vrp call.
(pass_vrp::warn_array_bounds_p): New private member.
From-SVN: r230415
|
|
representation
* Makefile.in (OBJS): Add gimple-ssa-split-paths.o
* common.opt (-fsplit-paths): New flag controlling path splitting.
* doc/invoke.texi (fsplit-paths): Document.
* opts.c (default_options_table): Add -fsplit-paths to -O2.
* passes.def: Add split_paths pass.
* timevar.def (TV_SPLIT_PATHS): New timevar.
* tracer.c: Include "tracer.h"
(ignore_bb_p): No longer static.
(transform_duplicate): New function, broken out of tail_duplicate.
(tail_duplicate): Use transform_duplicate.
* tracer.h (ignore_bb_p): Declare
(transform_duplicate): Likewise.
* tree-pass.h (make_pass_split_paths): Declare.
* gimple-ssa-split-paths.c: New file.
* gcc.dg/tree-ssa/split-path-1.c: New test.
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r230364
|
|
* cgraphunit.c (cgraph_node::expand_thunk): Call
allocate_struct_function before init_function_start.
(cgraph_node::expand): Use push_cfun and pop_cfun.
* config/i386/i386.c (ix86_code_end): Call
allocate_struct_function before init_function_start.
* config/rs6000/rs6000.c (rs6000_code_end): Likewise.
* function.c (init_function_start): Move preamble to all
callers.
* passes.c (do_per_function_toporder): Use push_cfun and pop_cfun.
(execute_one_pass): Handle newly added TODO_discard_function.
(execute_pass_list_1): Terminate if cfun equals to NULL.
(execute_pass_list): Do not push and pop cfun, expect that
cfun is set.
* tree-pass.h (TODO_discard_function): Define.
From-SVN: r229764
|
|
2015-10-30 Evgeny Stupachenko <evstupac@gmail.com>
gcc/
* Makefile.in (OBJS): Add multiple_target.o.
* attrib.c (make_attribute): Moved from config/i386/i386.c
* config/i386/i386.c (make_attribute): Deleted.
* multiple_target.c (create_dispatcher_calls): New.
(get_attr_len): Ditto.
(get_attr_str): Ditto.
(separate_attrs): Ditto.
(is_valid_asm_symbol): Ditto.
(create_new_asm_name): Ditto.
(create_target_clone): Ditto.
(expand_target_clones): Ditto.
(ipa_target_clone): Ditto.
(ipa_dispatcher_calls): Ditto.
* passes.def (pass_target_clone): Two new ipa passes.
* tree-pass.h (make_pass_target_clone): Ditto.
* doc/extend.texi (target_clones): New attribute description.
gcc/c-family/
* c-common.c (handle_target_clones_attribute): New.
(c_common_attribute_table): Add handle_target_clones_attribute.
(handle_always_inline_attribute): Add check on target_clones attribute.
(handle_target_attribute): Ditto.
gcc/testsuite/
* gcc.dg/mvc1.c: New test for multiple targets cloning.
* gcc.dg/mvc2.c: Ditto.
* gcc.dg/mvc3.c: Ditto.
* gcc.dg/mvc4.c: Ditto.
* gcc.dg/mvc5.c: Ditto.
* gcc.dg/mvc6.c: Ditto.
* gcc.dg/mvc7.c: Ditto.
* g++.dg/ext/mvc1.C: Ditto.
* g++.dg/ext/mvc2.C: Ditto.
* g++.dg/ext/mvc3.C: Ditto.
* g++.dg/ext/mvc4.C: Ditto.
From-SVN: r229595
|
|
This patch adds a pass that collects information that is common to
all uses of an SSA name X and back-propagates that information up
the statements that generate X. The general idea is to use the
information to simplify instructions (rather than a pure DCE) so
I've simply called it gimple-ssa-backprop.c, to go with
tree-ssa-forwprop.c.
At the moment the only use of the pass is to remove unnecessary
sign operations, so that it's effectively a global version of
fold_strip_sign_ops. I'm hoping it could be extended in future
to record which bits of an integer are significant. There are
probably other potential uses too.
A later patch gets rid of fold_strip_sign_ops.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* doc/invoke.texi (-fdump-tree-backprop, -fssa-backprop): Document.
* Makefile.in (OBJS): Add gimple-ssa-backprop.o.
* common.opt (fssa-backprop): New option.
* fold-const.h (negate_mathfn_p): Declare.
* fold-const.c (negate_mathfn_p): Make public.
* timevar.def (TV_TREE_BACKPROP): New.
* tree-pass.h (make_pass_backprop): Declare.
* passes.def (pass_backprop): Add.
* gimple-ssa-backprop.c: New file.
gcc/testsuite/
* gcc.dg/tree-ssa/backprop-1.c, gcc.dg/tree-ssa/backprop-2.c,
gcc.dg/tree-ssa/backprop-3.c, gcc.dg/tree-ssa/backprop-4.c,
gcc.dg/tree-ssa/backprop-5.c, gcc.dg/tree-ssa/backprop-6.c: New tests.
From-SVN: r229139
|
|
This patch fixes some fallout from my patch to move the sqrt and cbrt
folding rules to match.pd. The rules included canonicalisations like:
sqrt(sqrt(x))->pow(x,1/4)
which in the original code was only ever done at the generic level.
My patch meant that we'd do it whenever we tried to fold a gimple
statement, and eventually it would win over the sincos optimisation
that replaces pow(x,1/4) with sqrt(sqrt(x)).
Following a suggestion from Richard B, the patch adds a new
PROP_gimple_* flag to say whether fp routines have been optimised
for the target. If so, match.pd should only transform calls to math
functions if the result is actually an optimisation, not just an
IL simplification or canonicalisation. The question then of course
is: which rules are which? I've added block comments that describe
the criteria I was using.
A slight wart is that we need to use the cfun global to access
the PROP_gimple_* flag; there's no local function pointer available.
Bootstrapped & regression-tested on x86_64-linux-gnu. Also tested
on powerc64-linux-gnu.
gcc/
PR tree-optimization/67945
* tree-pass.h (PROP_gimple_opt_math): New property flag.
* generic-match-head.c (canonicalize_math_p): New function.
* gimple-match-head.c: Include tree-pass.h.
(canonicalize_math_p): New function.
* match.pd: Group math built-in rules into simplifications
and canonicalizations. Guard the latter with canonicalize_math_p.
* tree-ssa-math-opts.c (pass_data_cse_sincos): Provide the
PROP_gimple_opt_math property.
From-SVN: r228840
|
|
* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): New.
(TARGET_GOACC_VALIDATE_DIMS): Override.
* target.def (TARGET_GOACC): New target hook prefix.
(validate_dims): New hook.
* targhooks.h (default_goacc_validate_dims): New.
* omp-low.c (oacc_validate_dims): New.
(execute_oacc_device_lower): New.
(default_goacc_validate_dims): New.
(pass_data_oacc_device_lower): New.
(pass_oacc_device_lower): New pass.
(make_pass_oacc_device_lower): New.
* tree-pass.h (make_pass_oacc_device_lower): Declare.
* passes.def (pass_oacc_device_lower): Add it.
* doc/tm.texi: Rebuilt.
* doc/tm.texi.in (TARGET_GOACC_VALIDATE_DIMS): Add hook.
* doc/invoke.texi (oaccdevlow): Document tree dump flag.
Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
From-SVN: r228304
|
|
This renames the gimple_statement_base struct to gimple removes the
typedef of gimple_statement_base * to gimple, and then adjusts all of
the places that use the type.
gcc/ChangeLog:
2015-09-19 Trevor Saunders <tbsaunde@tbsaunde.org>
* coretypes.h (gimple): Change typedef to be a forward
declaration.
* gimple.h (gimple_statement_base): rename to gimple.
* (all functions and types using gimple): Adjust.
* *.[ch]: Likewise.
gcc/cp/ChangeLog:
2015-09-19 Trevor Saunders <tbsaunde@tbsaunde.org>
* cp-gimplify.c (gimplify_must_not_throw_expr): Adjust.
From-SVN: r227941
|
|
2015-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
* tree-pass.h (get_current_pass_name): Removed.
From-SVN: r226121
|
|
PR tree-optimization/66718
* Makefile.in (OBJS): Add gimple-laddress.o.
* passes.def: Schedule pass_laddress.
* timevar.def (DEFTIMEVAR): Add TV_GIMPLE_LADDRESS.
* tree-pass.h (make_pass_laddress): Declare.
* gimple-laddress.c: New file.
* gcc.dg/vect/vect-126.c: New test.
From-SVN: r225604
|