diff options
Diffstat (limited to 'gcc/rust/rust-session-manager.h')
-rw-r--r-- | gcc/rust/rust-session-manager.h | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/gcc/rust/rust-session-manager.h b/gcc/rust/rust-session-manager.h index 07d5461..b7e081b 100644 --- a/gcc/rust/rust-session-manager.h +++ b/gcc/rust/rust-session-manager.h @@ -116,8 +116,8 @@ public: // Dump all target options to stderr. void dump_target_options () const; - /* Creates derived values and implicit enables after all target info is added - * (e.g. "unix"). */ + /* Creates derived values and implicit enables after all target info is + * added (e.g. "unix"). */ void init_derived_values (); /* Enables all requirements for the feature given, and will enable feature @@ -162,13 +162,8 @@ public: // Defines compiler options (e.g. dump, etc.). struct CompileOptions { - // TODO: use bitfield for smaller memory requirements? - - /* FIXME: this is set up for "instead of" dumping - in future, dumps should - * not inhibit compilation */ - enum DumpOptions + enum DumpOption { - NO_DUMP, LEXER_DUMP, PARSER_AST_DUMP, REGISTER_PLUGINS_DUMP, @@ -178,8 +173,9 @@ struct CompileOptions TARGET_OPTION_DUMP, HIR_DUMP, TYPE_RESOLUTION_DUMP, + }; - } dump_option; + std::set<DumpOption> dump_options; /* configuration options - actually useful for conditional compilation and * whatever data related to target arch, features, os, family, env, endian, @@ -188,6 +184,26 @@ struct CompileOptions bool enable_test = false; bool debug_assertions = false; bool proc_macro = false; + + bool dump_option_enabled (DumpOption option) const + { + return dump_options.find (option) != dump_options.end (); + } + + void enable_dump_option (DumpOption option) { dump_options.insert (option); } + + void enable_all_dump_options () + { + enable_dump_option (DumpOption::LEXER_DUMP); + enable_dump_option (DumpOption::PARSER_AST_DUMP); + enable_dump_option (DumpOption::REGISTER_PLUGINS_DUMP); + enable_dump_option (DumpOption::INJECTION_DUMP); + enable_dump_option (DumpOption::EXPANSION_DUMP); + enable_dump_option (DumpOption::RESOLUTION_DUMP); + enable_dump_option (DumpOption::TARGET_OPTION_DUMP); + enable_dump_option (DumpOption::HIR_DUMP); + enable_dump_option (DumpOption::TYPE_RESOLUTION_DUMP); + } }; /* Defines a compiler session. This is for a single compiler invocation, so @@ -219,6 +235,12 @@ private: void parse_file (const char *filename); bool enable_dump (std::string arg); + void dump_lex (Parser<Lexer> &parser) const; + void dump_ast (Parser<Lexer> &parser, AST::Crate &crate) const; + void dump_ast_expanded (Parser<Lexer> &parser, AST::Crate &crate) const; + void dump_hir (HIR::Crate &crate) const; + void dump_type_resolution (HIR::Crate &crate) const; + void debug_dump_load_crates (Parser<Lexer> &parser); void implicitly_enable_feature (std::string feature_name); |