From 401c80dab1dbdeaf60daa6b79d4c0096bf9acd1c Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Tue, 20 Oct 2015 08:54:19 +1300 Subject: [PATCH] save-analysis: don't recompute crate name --- src/librustc/middle/ty/mod.rs | 4 ++-- src/librustc_driver/driver.rs | 13 ++++++++----- src/librustc_driver/lib.rs | 1 + src/librustc_driver/pretty.rs | 8 ++++---- src/librustc_trans/back/link.rs | 4 ++-- src/librustc_trans/save/dump_csv.rs | 4 ++-- src/librustc_trans/save/mod.rs | 13 +++---------- src/librustdoc/core.rs | 2 +- src/test/run-make/execution-engine/test.rs | 2 +- 9 files changed, 24 insertions(+), 27 deletions(-) diff --git a/src/librustc/middle/ty/mod.rs b/src/librustc/middle/ty/mod.rs index 975a5adad2b..57363441493 100644 --- a/src/librustc/middle/ty/mod.rs +++ b/src/librustc/middle/ty/mod.rs @@ -102,12 +102,12 @@ /// The complete set of all analyses described in this module. This is /// produced by the driver and fed to trans and later passes. -pub struct CrateAnalysis { +pub struct CrateAnalysis<'a> { pub export_map: ExportMap, pub exported_items: middle::privacy::ExportedItems, pub public_items: middle::privacy::PublicItems, pub reachable: NodeSet, - pub name: String, + pub name: &'a str, pub glob_map: Option, } diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index 619fcd3406c..c086737b640 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -143,7 +143,7 @@ pub fn compile_input(sess: Session, phase_3_run_analysis_passes(&sess, ast_map, &arenas, - id, + &id, control.make_glob_map, |tcx, analysis| { @@ -155,7 +155,8 @@ pub fn compile_input(sess: Session, tcx.map.krate(), &analysis, tcx, - &lcx); + &lcx, + &id); (control.after_analysis.callback)(state); tcx.sess.abort_if_errors(); @@ -279,7 +280,7 @@ pub struct CompileState<'a, 'ast: 'a, 'tcx: 'a> { pub expanded_crate: Option<&'a ast::Crate>, pub hir_crate: Option<&'a hir::Crate>, pub ast_map: Option<&'a hir_map::Map<'ast>>, - pub analysis: Option<&'a ty::CrateAnalysis>, + pub analysis: Option<&'a ty::CrateAnalysis<'a>>, pub tcx: Option<&'a ty::ctxt<'tcx>>, pub lcx: Option<&'a LoweringContext<'a>>, pub trans: Option<&'a trans::CrateTranslation>, @@ -358,7 +359,8 @@ fn state_after_analysis(input: &'a Input, hir_crate: &'a hir::Crate, analysis: &'a ty::CrateAnalysis, tcx: &'a ty::ctxt<'tcx>, - lcx: &'a LoweringContext<'a>) + lcx: &'a LoweringContext<'a>, + crate_name: &'a str) -> CompileState<'a, 'ast, 'tcx> { CompileState { analysis: Some(analysis), @@ -366,6 +368,7 @@ fn state_after_analysis(input: &'a Input, krate: Some(krate), hir_crate: Some(hir_crate), lcx: Some(lcx), + crate_name: Some(crate_name), .. CompileState::empty(input, session, out_dir) } } @@ -661,7 +664,7 @@ pub fn make_map<'ast>(sess: &Session, pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session, ast_map: front::map::Map<'tcx>, arenas: &'tcx ty::CtxtArenas<'tcx>, - name: String, + name: &str, make_glob_map: resolve::MakeGlobMap, f: F) -> R diff --git a/src/librustc_driver/lib.rs b/src/librustc_driver/lib.rs index 276b747feb2..ce40d9b53ff 100644 --- a/src/librustc_driver/lib.rs +++ b/src/librustc_driver/lib.rs @@ -399,6 +399,7 @@ fn build_controller(&mut self, sess: &Session) -> CompileController<'a> { state.lcx.unwrap(), state.krate.unwrap(), state.analysis.unwrap(), + state.crate_name.unwrap(), state.out_dir)); }; control.make_glob_map = resolve::MakeGlobMap::Yes; diff --git a/src/librustc_driver/pretty.rs b/src/librustc_driver/pretty.rs index 57186cb6ce8..8407939bebc 100644 --- a/src/librustc_driver/pretty.rs +++ b/src/librustc_driver/pretty.rs @@ -158,7 +158,7 @@ fn call_with_pp_support_hir<'tcx, A, B, F>(&self, sess: &'tcx Session, ast_map: &hir_map::Map<'tcx>, arenas: &'tcx ty::CtxtArenas<'tcx>, - id: String, + id: &str, payload: B, f: F) -> A where F: FnOnce(&HirPrinterSupport, B, &hir::Crate) -> A, @@ -713,7 +713,7 @@ pub fn pretty_print_input(sess: Session, (PpmHir(s), None) => { let out: &mut Write = &mut out; s.call_with_pp_support_hir( - &sess, &ast_map.unwrap(), &arenas, id, box out, |annotation, out, krate| { + &sess, &ast_map.unwrap(), &arenas, &id, box out, |annotation, out, krate| { debug!("pretty printing source code {:?}", s); let sess = annotation.sess(); pprust_hir::print_crate(sess.codemap(), @@ -732,7 +732,7 @@ pub fn pretty_print_input(sess: Session, s.call_with_pp_support_hir(&sess, &ast_map.unwrap(), &arenas, - id, + &id, (out,uii), |annotation, (out,uii), _| { debug!("pretty printing source code {:?}", s); @@ -780,7 +780,7 @@ pub fn pretty_print_input(sess: Session, driver::phase_3_run_analysis_passes(&sess, ast_map, &arenas, - id, + &id, resolve::MakeGlobMap::No, |tcx, _| { print_flowgraph(variants, tcx, code, mode, out) diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs index ad0d8ef73c9..f2f8c13880a 100644 --- a/src/librustc_trans/back/link.rs +++ b/src/librustc_trans/back/link.rs @@ -184,9 +184,9 @@ pub fn find_crate_name(sess: Option<&Session>, } pub fn build_link_meta(sess: &Session, krate: &hir::Crate, - name: String) -> LinkMeta { + name: &str) -> LinkMeta { let r = LinkMeta { - crate_name: name, + crate_name: name.to_owned(), crate_hash: Svh::calculate(&sess.opts.cg.metadata, krate), }; info!("{:?}", r); diff --git a/src/librustc_trans/save/dump_csv.rs b/src/librustc_trans/save/dump_csv.rs index e5fadc9a19b..8a5b8f4eb56 100644 --- a/src/librustc_trans/save/dump_csv.rs +++ b/src/librustc_trans/save/dump_csv.rs @@ -66,7 +66,7 @@ pub struct DumpCsvVisitor<'l, 'tcx: 'l> { save_ctxt: SaveContext<'l, 'tcx>, sess: &'l Session, tcx: &'l ty::ctxt<'tcx>, - analysis: &'l ty::CrateAnalysis, + analysis: &'l ty::CrateAnalysis<'l>, span: SpanUtils<'l>, fmt: FmtStrs<'l, 'tcx>, @@ -77,7 +77,7 @@ pub struct DumpCsvVisitor<'l, 'tcx: 'l> { impl <'l, 'tcx> DumpCsvVisitor<'l, 'tcx> { pub fn new(tcx: &'l ty::ctxt<'tcx>, lcx: &'l LoweringContext<'l>, - analysis: &'l ty::CrateAnalysis, + analysis: &'l ty::CrateAnalysis<'l>, output_file: Box) -> DumpCsvVisitor<'l, 'tcx> { let span_utils = SpanUtils::new(&tcx.sess); diff --git a/src/librustc_trans/save/mod.rs b/src/librustc_trans/save/mod.rs index 72f665f63bf..af9f3e4896d 100644 --- a/src/librustc_trans/save/mod.rs +++ b/src/librustc_trans/save/mod.rs @@ -20,7 +20,6 @@ use rustc::front::map::NodeItem; use rustc_front::{hir, lowering}; -use syntax::attr; use syntax::ast::{self, NodeId}; use syntax::ast_util; use syntax::codemap::*; @@ -714,19 +713,13 @@ pub fn process_crate<'l, 'tcx>(tcx: &'l ty::ctxt<'tcx>, lcx: &'l lowering::LoweringContext<'l>, krate: &ast::Crate, analysis: &ty::CrateAnalysis, + cratename: &str, odir: Option<&Path>) { if generated_code(krate.span) { return; } assert!(analysis.glob_map.is_some()); - let cratename = match attr::find_crate_name(&krate.attrs) { - Some(name) => name.to_string(), - None => { - info!("Could not find crate name, using 'unknown_crate'"); - String::from("unknown_crate") - } - }; info!("Dumping crate {}", cratename); @@ -751,7 +744,7 @@ pub fn process_crate<'l, 'tcx>(tcx: &'l ty::ctxt<'tcx>, } // Create output file. - let mut out_name = cratename.clone(); + let mut out_name = cratename.to_owned(); out_name.push_str(".csv"); root_path.push(&out_name); let output_file = match File::create(&root_path) { @@ -765,7 +758,7 @@ pub fn process_crate<'l, 'tcx>(tcx: &'l ty::ctxt<'tcx>, let mut visitor = dump_csv::DumpCsvVisitor::new(tcx, lcx, analysis, output_file); - visitor.dump_crate_info(&cratename, krate); + visitor.dump_crate_info(cratename, krate); visit::walk_crate(&mut visitor, krate); } diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs index 776917d6724..4955951d36e 100644 --- a/src/librustdoc/core.rs +++ b/src/librustdoc/core.rs @@ -143,7 +143,7 @@ pub fn run_core(search_paths: SearchPaths, cfgs: Vec, externs: Externs, driver::phase_3_run_analysis_passes(&sess, hir_map, &arenas, - name, + &name, resolve::MakeGlobMap::No, |tcx, analysis| { let ty::CrateAnalysis { exported_items, public_items, .. } = analysis; diff --git a/src/test/run-make/execution-engine/test.rs b/src/test/run-make/execution-engine/test.rs index bad0afe79d6..f4031a3aaae 100644 --- a/src/test/run-make/execution-engine/test.rs +++ b/src/test/run-make/execution-engine/test.rs @@ -229,7 +229,7 @@ fn compile_program(input: &str, sysroot: PathBuf) let ast_map = driver::make_map(&sess, &mut hir_forest); driver::phase_3_run_analysis_passes( - &sess, ast_map, &arenas, id, MakeGlobMap::No, |tcx, analysis| { + &sess, ast_map, &arenas, &id, MakeGlobMap::No, |tcx, analysis| { let trans = driver::phase_4_translate_to_llvm(tcx, analysis); -- GitLab