diff options
| author | Jonas Schievink <jonas@schievink.net> | 2015-12-25 17:17:45 +0100 |
|---|---|---|
| committer | Jonas Schievink <jonas@schievink.net> | 2015-12-25 17:17:45 +0100 |
| commit | 389e8e3b8172f1d878eb1358e047573a7e76e853 (patch) | |
| tree | 13642024b353e1dc24e27d83d702a444d7a57add /src | |
| parent | 93a655940da888a52ec84b9ab49c01466e8ee41f (diff) | |
Delete the AST after lowering
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/session/config.rs | 2 | ||||
| -rw-r--r-- | src/librustc_driver/driver.rs | 14 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs index b275480a6fc..d1c7da1d107 100644 --- a/src/librustc/session/config.rs +++ b/src/librustc/session/config.rs @@ -622,6 +622,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options, "force nonzeroing move optimization on"), keep_mtwt_tables: bool = (false, parse_bool, "don't clear the resolution tables after analysis"), + keep_ast: bool = (false, parse_bool, + "keep the AST after lowering it to HIR"), } pub fn default_lib_output() -> CrateType { diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index f6dce8af435..1ac1b5978cf 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -144,6 +144,14 @@ pub fn compile_input(sess: Session, "early lint checks", || lint::check_ast_crate(&sess, &expanded_crate)); + let opt_crate = if sess.opts.debugging_opts.keep_ast || + sess.opts.debugging_opts.save_analysis { + Some(&expanded_crate) + } else { + drop(expanded_crate); + None + }; + phase_3_run_analysis_passes(&sess, &cstore, hir_map, @@ -157,7 +165,7 @@ pub fn compile_input(sess: Session, CompileState::state_after_analysis(input, &tcx.sess, outdir, - &expanded_crate, + opt_crate, tcx.map.krate(), &analysis, &mir_map, @@ -360,7 +368,7 @@ impl<'a, 'ast, 'tcx> CompileState<'a, 'ast, 'tcx> { fn state_after_analysis(input: &'a Input, session: &'a Session, out_dir: &'a Option<PathBuf>, - krate: &'a ast::Crate, + krate: Option<&'a ast::Crate>, hir_crate: &'a hir::Crate, analysis: &'a ty::CrateAnalysis, mir_map: &'a MirMap<'tcx>, @@ -372,7 +380,7 @@ impl<'a, 'ast, 'tcx> CompileState<'a, 'ast, 'tcx> { analysis: Some(analysis), mir_map: Some(mir_map), tcx: Some(tcx), - krate: Some(krate), + krate: krate, hir_crate: Some(hir_crate), lcx: Some(lcx), crate_name: Some(crate_name), |
