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
506 lines
20 KiB
Modula-2
506 lines
20 KiB
Modula-2
/* Description of pass structure
|
|
Copyright (C) 1987-2018 Free Software Foundation, Inc.
|
|
|
|
This file is part of GCC.
|
|
|
|
GCC is free software; you can redistribute it and/or modify it under
|
|
the terms of the GNU General Public License as published by the Free
|
|
Software Foundation; either version 3, or (at your option) any later
|
|
version.
|
|
|
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with GCC; see the file COPYING3. If not see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
/*
|
|
Macros that should be defined when using this file:
|
|
INSERT_PASSES_AFTER (PASS)
|
|
PUSH_INSERT_PASSES_WITHIN (PASS)
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (PASS)
|
|
TERMINATE_PASS_LIST (PASS)
|
|
*/
|
|
|
|
/* All passes needed to lower the function into shape optimizers can
|
|
operate on. These passes are always run first on the function, but
|
|
backend might produce already lowered functions that are not processed
|
|
by these passes. */
|
|
INSERT_PASSES_AFTER (all_lowering_passes)
|
|
NEXT_PASS (pass_warn_unused_result);
|
|
NEXT_PASS (pass_diagnose_omp_blocks);
|
|
NEXT_PASS (pass_diagnose_tm_blocks);
|
|
NEXT_PASS (pass_lower_omp);
|
|
NEXT_PASS (pass_lower_cf);
|
|
NEXT_PASS (pass_lower_tm);
|
|
NEXT_PASS (pass_refactor_eh);
|
|
NEXT_PASS (pass_lower_eh);
|
|
NEXT_PASS (pass_build_cfg);
|
|
NEXT_PASS (pass_warn_function_return);
|
|
NEXT_PASS (pass_expand_omp);
|
|
NEXT_PASS (pass_sprintf_length, false);
|
|
NEXT_PASS (pass_walloca, /*strict_mode_p=*/true);
|
|
NEXT_PASS (pass_build_cgraph_edges);
|
|
TERMINATE_PASS_LIST (all_lowering_passes)
|
|
|
|
/* Interprocedural optimization passes. */
|
|
INSERT_PASSES_AFTER (all_small_ipa_passes)
|
|
NEXT_PASS (pass_ipa_free_lang_data);
|
|
NEXT_PASS (pass_ipa_function_and_variable_visibility);
|
|
NEXT_PASS (pass_build_ssa_passes);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_build_ssa_passes)
|
|
NEXT_PASS (pass_fixup_cfg);
|
|
NEXT_PASS (pass_build_ssa);
|
|
NEXT_PASS (pass_warn_nonnull_compare);
|
|
NEXT_PASS (pass_ubsan);
|
|
NEXT_PASS (pass_early_warn_uninitialized);
|
|
NEXT_PASS (pass_nothrow);
|
|
NEXT_PASS (pass_rebuild_cgraph_edges);
|
|
POP_INSERT_PASSES ()
|
|
|
|
NEXT_PASS (pass_local_optimization_passes);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_local_optimization_passes)
|
|
NEXT_PASS (pass_fixup_cfg);
|
|
NEXT_PASS (pass_rebuild_cgraph_edges);
|
|
NEXT_PASS (pass_local_fn_summary);
|
|
NEXT_PASS (pass_early_inline);
|
|
NEXT_PASS (pass_all_early_optimizations);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_all_early_optimizations)
|
|
NEXT_PASS (pass_remove_cgraph_callee_edges);
|
|
NEXT_PASS (pass_object_sizes, true /* insert_min_max_p */);
|
|
/* Don't record nonzero bits before IPA to avoid
|
|
using too much memory. */
|
|
NEXT_PASS (pass_ccp, false /* nonzero_p */);
|
|
/* After CCP we rewrite no longer addressed locals into SSA
|
|
form if possible. */
|
|
NEXT_PASS (pass_forwprop);
|
|
NEXT_PASS (pass_early_thread_jumps);
|
|
NEXT_PASS (pass_sra_early);
|
|
/* pass_build_ealias is a dummy pass that ensures that we
|
|
execute TODO_rebuild_alias at this point. */
|
|
NEXT_PASS (pass_build_ealias);
|
|
NEXT_PASS (pass_fre);
|
|
NEXT_PASS (pass_early_vrp);
|
|
NEXT_PASS (pass_merge_phi);
|
|
NEXT_PASS (pass_dse);
|
|
NEXT_PASS (pass_cd_dce);
|
|
NEXT_PASS (pass_early_ipa_sra);
|
|
NEXT_PASS (pass_tail_recursion);
|
|
NEXT_PASS (pass_convert_switch);
|
|
NEXT_PASS (pass_cleanup_eh);
|
|
NEXT_PASS (pass_profile);
|
|
NEXT_PASS (pass_local_pure_const);
|
|
/* Split functions creates parts that are not run through
|
|
early optimizations again. It is thus good idea to do this
|
|
late. */
|
|
NEXT_PASS (pass_split_functions);
|
|
NEXT_PASS (pass_strip_predict_hints);
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_release_ssa_names);
|
|
NEXT_PASS (pass_rebuild_cgraph_edges);
|
|
NEXT_PASS (pass_local_fn_summary);
|
|
POP_INSERT_PASSES ()
|
|
|
|
NEXT_PASS (pass_ipa_oacc);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_ipa_oacc)
|
|
NEXT_PASS (pass_ipa_pta);
|
|
/* Pass group that runs when the function is an offloaded function
|
|
containing oacc kernels loops. */
|
|
NEXT_PASS (pass_ipa_oacc_kernels);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_ipa_oacc_kernels)
|
|
NEXT_PASS (pass_oacc_kernels);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels)
|
|
NEXT_PASS (pass_ch);
|
|
NEXT_PASS (pass_fre);
|
|
/* We use pass_lim to rewrite in-memory iteration and reduction
|
|
variable accesses in loops into local variables accesses. */
|
|
NEXT_PASS (pass_lim);
|
|
NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */);
|
|
NEXT_PASS (pass_dce);
|
|
NEXT_PASS (pass_parallelize_loops, true /* oacc_kernels_p */);
|
|
NEXT_PASS (pass_expand_omp_ssa);
|
|
NEXT_PASS (pass_rebuild_cgraph_edges);
|
|
POP_INSERT_PASSES ()
|
|
POP_INSERT_PASSES ()
|
|
POP_INSERT_PASSES ()
|
|
|
|
NEXT_PASS (pass_target_clone);
|
|
NEXT_PASS (pass_ipa_auto_profile);
|
|
NEXT_PASS (pass_ipa_tree_profile);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_ipa_tree_profile)
|
|
NEXT_PASS (pass_feedback_split_functions);
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_ipa_free_fn_summary, true /* small_p */);
|
|
NEXT_PASS (pass_ipa_increase_alignment);
|
|
NEXT_PASS (pass_ipa_tm);
|
|
NEXT_PASS (pass_ipa_lower_emutls);
|
|
TERMINATE_PASS_LIST (all_small_ipa_passes)
|
|
|
|
INSERT_PASSES_AFTER (all_regular_ipa_passes)
|
|
NEXT_PASS (pass_ipa_whole_program_visibility);
|
|
NEXT_PASS (pass_ipa_profile);
|
|
NEXT_PASS (pass_ipa_icf);
|
|
NEXT_PASS (pass_ipa_devirt);
|
|
NEXT_PASS (pass_ipa_cp);
|
|
NEXT_PASS (pass_ipa_cdtor_merge);
|
|
NEXT_PASS (pass_ipa_hsa);
|
|
NEXT_PASS (pass_ipa_fn_summary);
|
|
NEXT_PASS (pass_ipa_inline);
|
|
NEXT_PASS (pass_ipa_pure_const);
|
|
NEXT_PASS (pass_ipa_free_fn_summary, false /* small_p */);
|
|
NEXT_PASS (pass_ipa_reference);
|
|
/* This pass needs to be scheduled after any IP code duplication. */
|
|
NEXT_PASS (pass_ipa_single_use);
|
|
/* Comdat privatization come last, as direct references to comdat local
|
|
symbols are not allowed outside of the comdat group. Privatizing early
|
|
would result in missed optimizations due to this restriction. */
|
|
NEXT_PASS (pass_ipa_comdats);
|
|
TERMINATE_PASS_LIST (all_regular_ipa_passes)
|
|
|
|
/* Simple IPA passes executed after the regular passes. In WHOPR mode the
|
|
passes are executed after partitioning and thus see just parts of the
|
|
compiled unit. */
|
|
INSERT_PASSES_AFTER (all_late_ipa_passes)
|
|
NEXT_PASS (pass_materialize_all_clones);
|
|
NEXT_PASS (pass_ipa_pta);
|
|
NEXT_PASS (pass_omp_simd_clone);
|
|
TERMINATE_PASS_LIST (all_late_ipa_passes)
|
|
|
|
/* These passes are run after IPA passes on every function that is being
|
|
output to the assembler file. */
|
|
INSERT_PASSES_AFTER (all_passes)
|
|
NEXT_PASS (pass_fixup_cfg);
|
|
NEXT_PASS (pass_lower_eh_dispatch);
|
|
NEXT_PASS (pass_oacc_device_lower);
|
|
NEXT_PASS (pass_omp_device_lower);
|
|
NEXT_PASS (pass_omp_target_link);
|
|
NEXT_PASS (pass_all_optimizations);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_all_optimizations)
|
|
NEXT_PASS (pass_remove_cgraph_callee_edges);
|
|
/* Initial scalar cleanups before alias computation.
|
|
They ensure memory accesses are not indirect wherever possible. */
|
|
NEXT_PASS (pass_strip_predict_hints);
|
|
NEXT_PASS (pass_ccp, true /* nonzero_p */);
|
|
NEXT_PASS (pass_post_ipa_warn);
|
|
/* After CCP we rewrite no longer addressed locals into SSA
|
|
form if possible. */
|
|
NEXT_PASS (pass_complete_unrolli);
|
|
NEXT_PASS (pass_backprop);
|
|
NEXT_PASS (pass_phiprop);
|
|
NEXT_PASS (pass_forwprop);
|
|
NEXT_PASS (pass_object_sizes, false /* insert_min_max_p */);
|
|
/* pass_build_alias is a dummy pass that ensures that we
|
|
execute TODO_rebuild_alias at this point. */
|
|
NEXT_PASS (pass_build_alias);
|
|
NEXT_PASS (pass_return_slot);
|
|
NEXT_PASS (pass_fre);
|
|
NEXT_PASS (pass_merge_phi);
|
|
NEXT_PASS (pass_thread_jumps);
|
|
NEXT_PASS (pass_vrp, true /* warn_array_bounds_p */);
|
|
NEXT_PASS (pass_dce);
|
|
NEXT_PASS (pass_stdarg);
|
|
NEXT_PASS (pass_call_cdce);
|
|
NEXT_PASS (pass_cselim);
|
|
NEXT_PASS (pass_copy_prop);
|
|
NEXT_PASS (pass_tree_ifcombine);
|
|
NEXT_PASS (pass_merge_phi);
|
|
NEXT_PASS (pass_phiopt);
|
|
NEXT_PASS (pass_tail_recursion);
|
|
NEXT_PASS (pass_ch);
|
|
NEXT_PASS (pass_lower_complex);
|
|
NEXT_PASS (pass_sra);
|
|
/* The dom pass will also resolve all __builtin_constant_p calls
|
|
that are still there to 0. This has to be done after some
|
|
propagations have already run, but before some more dead code
|
|
is removed, and this place fits nicely. Remember this when
|
|
trying to move or duplicate pass_dominator somewhere earlier. */
|
|
NEXT_PASS (pass_thread_jumps);
|
|
NEXT_PASS (pass_dominator, true /* may_peel_loop_headers_p */);
|
|
/* At this point the majority of const/copy propagations
|
|
are exposed. Go ahead and identify paths that should never
|
|
be executed in a conforming program and isolate those paths.
|
|
|
|
This will expose more degenerate PHIs in the main path and
|
|
expose more PRE/DOM optimization opportunities. */
|
|
NEXT_PASS (pass_isolate_erroneous_paths);
|
|
/* The only const/copy propagation opportunities left after
|
|
DOM and erroneous path isolation should be due to degenerate PHI nodes.
|
|
So rather than run the full propagators, run a specialized pass which
|
|
only examines PHIs to discover const/copy propagation
|
|
opportunities. */
|
|
NEXT_PASS (pass_phi_only_cprop);
|
|
NEXT_PASS (pass_dse);
|
|
NEXT_PASS (pass_reassoc, true /* insert_powi_p */);
|
|
NEXT_PASS (pass_dce);
|
|
NEXT_PASS (pass_forwprop);
|
|
NEXT_PASS (pass_phiopt);
|
|
NEXT_PASS (pass_ccp, true /* nonzero_p */);
|
|
/* After CCP we rewrite no longer addressed locals into SSA
|
|
form if possible. */
|
|
NEXT_PASS (pass_cse_sincos);
|
|
NEXT_PASS (pass_optimize_bswap);
|
|
NEXT_PASS (pass_laddress);
|
|
NEXT_PASS (pass_lim);
|
|
NEXT_PASS (pass_walloca, false);
|
|
NEXT_PASS (pass_pre);
|
|
NEXT_PASS (pass_sink_code);
|
|
NEXT_PASS (pass_sancov);
|
|
NEXT_PASS (pass_asan);
|
|
NEXT_PASS (pass_tsan);
|
|
NEXT_PASS (pass_dce);
|
|
/* Pass group that runs when 1) enabled, 2) there are loops
|
|
in the function. Make sure to run pass_fix_loops before
|
|
to discover/remove loops before running the gate function
|
|
of pass_tree_loop. */
|
|
NEXT_PASS (pass_fix_loops);
|
|
NEXT_PASS (pass_tree_loop);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_tree_loop)
|
|
NEXT_PASS (pass_tree_loop_init);
|
|
NEXT_PASS (pass_tree_unswitch);
|
|
NEXT_PASS (pass_scev_cprop);
|
|
NEXT_PASS (pass_loop_split);
|
|
NEXT_PASS (pass_loop_jam);
|
|
/* All unswitching, final value replacement and splitting can expose
|
|
empty loops. Remove them now. */
|
|
NEXT_PASS (pass_cd_dce);
|
|
NEXT_PASS (pass_iv_canon);
|
|
NEXT_PASS (pass_loop_distribution);
|
|
NEXT_PASS (pass_linterchange);
|
|
NEXT_PASS (pass_copy_prop);
|
|
NEXT_PASS (pass_graphite);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_graphite)
|
|
NEXT_PASS (pass_graphite_transforms);
|
|
NEXT_PASS (pass_lim);
|
|
NEXT_PASS (pass_copy_prop);
|
|
NEXT_PASS (pass_dce);
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_parallelize_loops, false /* oacc_kernels_p */);
|
|
NEXT_PASS (pass_expand_omp_ssa);
|
|
NEXT_PASS (pass_ch_vect);
|
|
NEXT_PASS (pass_if_conversion);
|
|
/* pass_vectorize must immediately follow pass_if_conversion.
|
|
Please do not add any other passes in between. */
|
|
NEXT_PASS (pass_vectorize);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_vectorize)
|
|
NEXT_PASS (pass_dce);
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_predcom);
|
|
NEXT_PASS (pass_complete_unroll);
|
|
NEXT_PASS (pass_slp_vectorize);
|
|
NEXT_PASS (pass_loop_prefetch);
|
|
/* Run IVOPTs after the last pass that uses data-reference analysis
|
|
as that doesn't handle TARGET_MEM_REFs. */
|
|
NEXT_PASS (pass_iv_optimize);
|
|
NEXT_PASS (pass_lim);
|
|
NEXT_PASS (pass_tree_loop_done);
|
|
POP_INSERT_PASSES ()
|
|
/* Pass group that runs when pass_tree_loop is disabled or there
|
|
are no loops in the function. */
|
|
NEXT_PASS (pass_tree_no_loop);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_tree_no_loop)
|
|
NEXT_PASS (pass_slp_vectorize);
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_simduid_cleanup);
|
|
NEXT_PASS (pass_lower_vector_ssa);
|
|
NEXT_PASS (pass_lower_switch);
|
|
NEXT_PASS (pass_cse_reciprocals);
|
|
NEXT_PASS (pass_sprintf_length, true);
|
|
NEXT_PASS (pass_reassoc, false /* insert_powi_p */);
|
|
NEXT_PASS (pass_strength_reduction);
|
|
NEXT_PASS (pass_split_paths);
|
|
NEXT_PASS (pass_tracer);
|
|
NEXT_PASS (pass_thread_jumps);
|
|
NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */);
|
|
NEXT_PASS (pass_strlen);
|
|
NEXT_PASS (pass_thread_jumps);
|
|
NEXT_PASS (pass_vrp, false /* warn_array_bounds_p */);
|
|
/* The only const/copy propagation opportunities left after
|
|
DOM and VRP should be due to degenerate PHI nodes. So rather than
|
|
run the full propagators, run a specialized pass which
|
|
only examines PHIs to discover const/copy propagation
|
|
opportunities. */
|
|
NEXT_PASS (pass_warn_restrict);
|
|
NEXT_PASS (pass_phi_only_cprop);
|
|
NEXT_PASS (pass_dse);
|
|
NEXT_PASS (pass_cd_dce);
|
|
NEXT_PASS (pass_forwprop);
|
|
NEXT_PASS (pass_phiopt);
|
|
NEXT_PASS (pass_fold_builtins);
|
|
NEXT_PASS (pass_optimize_widening_mul);
|
|
NEXT_PASS (pass_store_merging);
|
|
NEXT_PASS (pass_tail_calls);
|
|
/* If DCE is not run before checking for uninitialized uses,
|
|
we may get false warnings (e.g., testsuite/gcc.dg/uninit-5.c).
|
|
However, this also causes us to misdiagnose cases that should be
|
|
real warnings (e.g., testsuite/gcc.dg/pr18501.c). */
|
|
NEXT_PASS (pass_dce);
|
|
/* Split critical edges before late uninit warning to reduce the
|
|
number of false positives from it. */
|
|
NEXT_PASS (pass_split_crit_edges);
|
|
NEXT_PASS (pass_late_warn_uninitialized);
|
|
NEXT_PASS (pass_uncprop);
|
|
NEXT_PASS (pass_local_pure_const);
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_all_optimizations_g);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_all_optimizations_g)
|
|
NEXT_PASS (pass_remove_cgraph_callee_edges);
|
|
NEXT_PASS (pass_strip_predict_hints);
|
|
/* Lower remaining pieces of GIMPLE. */
|
|
NEXT_PASS (pass_lower_complex);
|
|
NEXT_PASS (pass_lower_vector_ssa);
|
|
NEXT_PASS (pass_lower_switch);
|
|
/* Perform simple scalar cleanup which is constant/copy propagation. */
|
|
NEXT_PASS (pass_ccp, true /* nonzero_p */);
|
|
NEXT_PASS (pass_post_ipa_warn);
|
|
NEXT_PASS (pass_object_sizes);
|
|
/* Fold remaining builtins. */
|
|
NEXT_PASS (pass_fold_builtins);
|
|
NEXT_PASS (pass_sprintf_length, true);
|
|
/* Copy propagation also copy-propagates constants, this is necessary
|
|
to forward object-size and builtin folding results properly. */
|
|
NEXT_PASS (pass_copy_prop);
|
|
NEXT_PASS (pass_dce);
|
|
NEXT_PASS (pass_sancov);
|
|
NEXT_PASS (pass_asan);
|
|
NEXT_PASS (pass_tsan);
|
|
/* ??? We do want some kind of loop invariant motion, but we possibly
|
|
need to adjust LIM to be more friendly towards preserving accurate
|
|
debug information here. */
|
|
/* Split critical edges before late uninit warning to reduce the
|
|
number of false positives from it. */
|
|
NEXT_PASS (pass_split_crit_edges);
|
|
NEXT_PASS (pass_late_warn_uninitialized);
|
|
NEXT_PASS (pass_uncprop);
|
|
NEXT_PASS (pass_local_pure_const);
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_tm_init);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_tm_init)
|
|
NEXT_PASS (pass_tm_mark);
|
|
NEXT_PASS (pass_tm_memopt);
|
|
NEXT_PASS (pass_tm_edges);
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_simduid_cleanup);
|
|
NEXT_PASS (pass_vtable_verify);
|
|
NEXT_PASS (pass_lower_vaarg);
|
|
NEXT_PASS (pass_lower_vector);
|
|
NEXT_PASS (pass_lower_complex_O0);
|
|
NEXT_PASS (pass_sancov_O0);
|
|
NEXT_PASS (pass_lower_switch_O0);
|
|
NEXT_PASS (pass_asan_O0);
|
|
NEXT_PASS (pass_tsan_O0);
|
|
NEXT_PASS (pass_sanopt);
|
|
NEXT_PASS (pass_cleanup_eh);
|
|
NEXT_PASS (pass_lower_resx);
|
|
NEXT_PASS (pass_nrv);
|
|
NEXT_PASS (pass_cleanup_cfg_post_optimizing);
|
|
NEXT_PASS (pass_warn_function_noreturn);
|
|
NEXT_PASS (pass_gen_hsail);
|
|
|
|
NEXT_PASS (pass_expand);
|
|
|
|
NEXT_PASS (pass_rest_of_compilation);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_rest_of_compilation)
|
|
NEXT_PASS (pass_instantiate_virtual_regs);
|
|
NEXT_PASS (pass_into_cfg_layout_mode);
|
|
NEXT_PASS (pass_jump);
|
|
NEXT_PASS (pass_lower_subreg);
|
|
NEXT_PASS (pass_df_initialize_opt);
|
|
NEXT_PASS (pass_cse);
|
|
NEXT_PASS (pass_rtl_fwprop);
|
|
NEXT_PASS (pass_rtl_cprop);
|
|
NEXT_PASS (pass_rtl_pre);
|
|
NEXT_PASS (pass_rtl_hoist);
|
|
NEXT_PASS (pass_rtl_cprop);
|
|
NEXT_PASS (pass_rtl_store_motion);
|
|
NEXT_PASS (pass_cse_after_global_opts);
|
|
NEXT_PASS (pass_rtl_ifcvt);
|
|
NEXT_PASS (pass_reginfo_init);
|
|
/* Perform loop optimizations. It might be better to do them a bit
|
|
sooner, but we want the profile feedback to work more
|
|
efficiently. */
|
|
NEXT_PASS (pass_loop2);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_loop2)
|
|
NEXT_PASS (pass_rtl_loop_init);
|
|
NEXT_PASS (pass_rtl_move_loop_invariants);
|
|
NEXT_PASS (pass_rtl_unroll_loops);
|
|
NEXT_PASS (pass_rtl_doloop);
|
|
NEXT_PASS (pass_rtl_loop_done);
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_web);
|
|
NEXT_PASS (pass_rtl_cprop);
|
|
NEXT_PASS (pass_cse2);
|
|
NEXT_PASS (pass_rtl_dse1);
|
|
NEXT_PASS (pass_rtl_fwprop_addr);
|
|
NEXT_PASS (pass_inc_dec);
|
|
NEXT_PASS (pass_initialize_regs);
|
|
NEXT_PASS (pass_ud_rtl_dce);
|
|
NEXT_PASS (pass_combine);
|
|
NEXT_PASS (pass_if_after_combine);
|
|
NEXT_PASS (pass_partition_blocks);
|
|
NEXT_PASS (pass_outof_cfg_layout_mode);
|
|
NEXT_PASS (pass_split_all_insns);
|
|
NEXT_PASS (pass_lower_subreg2);
|
|
NEXT_PASS (pass_df_initialize_no_opt);
|
|
NEXT_PASS (pass_stack_ptr_mod);
|
|
NEXT_PASS (pass_mode_switching);
|
|
NEXT_PASS (pass_match_asm_constraints);
|
|
NEXT_PASS (pass_sms);
|
|
NEXT_PASS (pass_live_range_shrinkage);
|
|
NEXT_PASS (pass_sched);
|
|
NEXT_PASS (pass_early_remat);
|
|
NEXT_PASS (pass_ira);
|
|
NEXT_PASS (pass_reload);
|
|
NEXT_PASS (pass_postreload);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_postreload)
|
|
NEXT_PASS (pass_postreload_cse);
|
|
NEXT_PASS (pass_gcse2);
|
|
NEXT_PASS (pass_split_after_reload);
|
|
NEXT_PASS (pass_ree);
|
|
NEXT_PASS (pass_compare_elim_after_reload);
|
|
NEXT_PASS (pass_branch_target_load_optimize1);
|
|
NEXT_PASS (pass_thread_prologue_and_epilogue);
|
|
NEXT_PASS (pass_rtl_dse2);
|
|
NEXT_PASS (pass_stack_adjustments);
|
|
NEXT_PASS (pass_jump2);
|
|
NEXT_PASS (pass_duplicate_computed_gotos);
|
|
NEXT_PASS (pass_sched_fusion);
|
|
NEXT_PASS (pass_peephole2);
|
|
NEXT_PASS (pass_if_after_reload);
|
|
NEXT_PASS (pass_regrename);
|
|
NEXT_PASS (pass_cprop_hardreg);
|
|
NEXT_PASS (pass_fast_rtl_dce);
|
|
NEXT_PASS (pass_reorder_blocks);
|
|
NEXT_PASS (pass_branch_target_load_optimize2);
|
|
NEXT_PASS (pass_leaf_regs);
|
|
NEXT_PASS (pass_split_before_sched2);
|
|
NEXT_PASS (pass_sched2);
|
|
NEXT_PASS (pass_stack_regs);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_stack_regs)
|
|
NEXT_PASS (pass_split_before_regstack);
|
|
NEXT_PASS (pass_stack_regs_run);
|
|
POP_INSERT_PASSES ()
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_late_compilation);
|
|
PUSH_INSERT_PASSES_WITHIN (pass_late_compilation)
|
|
NEXT_PASS (pass_compute_alignments);
|
|
NEXT_PASS (pass_variable_tracking);
|
|
NEXT_PASS (pass_free_cfg);
|
|
NEXT_PASS (pass_machine_reorg);
|
|
NEXT_PASS (pass_cleanup_barriers);
|
|
NEXT_PASS (pass_delay_slots);
|
|
NEXT_PASS (pass_split_for_shorten_branches);
|
|
NEXT_PASS (pass_convert_to_eh_region_ranges);
|
|
NEXT_PASS (pass_shorten_branches);
|
|
NEXT_PASS (pass_set_nothrow_function_flags);
|
|
NEXT_PASS (pass_dwarf2_frame);
|
|
NEXT_PASS (pass_final);
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_df_finish);
|
|
POP_INSERT_PASSES ()
|
|
NEXT_PASS (pass_clean_state);
|
|
TERMINATE_PASS_LIST (all_passes)
|