diff options
Diffstat (limited to 'gcc/pass_manager.h')
-rw-r--r-- | gcc/pass_manager.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gcc/pass_manager.h b/gcc/pass_manager.h index f66cd80408f..ea078a5eb66 100644 --- a/gcc/pass_manager.h +++ b/gcc/pass_manager.h @@ -58,6 +58,12 @@ public: void dump_profile_report () const; + void finish_optimization_passes (); + + /* Access to specific passes, so that the majority can be private. */ + void execute_early_local_passes (); + unsigned int execute_pass_mode_switching (); + public: /* The root of the compilation pass tree, once constructed. */ opt_pass *all_passes; @@ -81,6 +87,37 @@ private: private: context *ctxt_; + /* References to all of the individual passes. + These fields are generated via macro expansion. + + For example: + NEXT_PASS (pass_build_cfg, 1); + within pass-instances.def means that there is a field: + opt_pass *pass_build_cfg_1; + + Similarly, the various: + NEXT_PASS (pass_copy_prop, 1); + ... + NEXT_PASS (pass_copy_prop, 8); + in pass-instances.def lead to fields: + opt_pass *pass_copy_prop_1; + ... + opt_pass *pass_copy_prop_8; */ + +#define INSERT_PASSES_AFTER(PASS) +#define PUSH_INSERT_PASSES_WITHIN(PASS) +#define POP_INSERT_PASSES() +#define NEXT_PASS(PASS, NUM) opt_pass *PASS ## _ ## NUM +#define TERMINATE_PASS_LIST() + +#include "pass-instances.def" + +#undef INSERT_PASSES_AFTER +#undef PUSH_INSERT_PASSES_WITHIN +#undef POP_INSERT_PASSES +#undef NEXT_PASS +#undef TERMINATE_PASS_LIST + }; // class pass_manager } // namespace gcc |