diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-12-08 20:33:31 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-12-08 20:33:31 -0800 |
| commit | 6156295a4c0ed42f1f383aff3aa6cc65fe1e1f30 (patch) | |
| tree | ac8f43074f19edf452103837aa57d811d4c0f477 /src/comp | |
| parent | fd81fb6a2418d3cbef5244662573e2b61d5f66a7 (diff) | |
| download | rust-6156295a4c0ed42f1f383aff3aa6cc65fe1e1f30.tar.gz rust-6156295a4c0ed42f1f383aff3aa6cc65fe1e1f30.zip | |
rustc: Move linking into compile_input
Diffstat (limited to 'src/comp')
| -rw-r--r-- | src/comp/driver/rustc.rs | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs index e00c16425f2..a32e9537187 100644 --- a/src/comp/driver/rustc.rs +++ b/src/comp/driver/rustc.rs @@ -131,11 +131,13 @@ fn inject_libcore_reference(sess: session::session, fn compile_input(sess: session::session, cfg: ast::crate_cfg, input: str, - output: str) { + output: option::t<str>) { + let time_passes = sess.get_opts().time_passes; let crate = time(time_passes, "parsing", bind parse_input(sess, cfg, input)); if sess.get_opts().parse_only { ret; } + crate = time(time_passes, "configuration", bind front::config::strip_unconfigured_items(crate)); @@ -186,12 +188,26 @@ fn compile_input(sess: session::session, cfg: ast::crate_cfg, input: str, time(time_passes, "kind checking", bind kind::check_crate(ty_cx, last_uses, crate)); if sess.get_opts().no_trans { ret; } + + let outputs = build_output_filenames(input, output, sess); + let llmod = time(time_passes, "translation", - bind trans::trans_crate(sess, crate, ty_cx, output, ast_map, + bind trans::trans_crate(sess, crate, ty_cx, + outputs.obj_filename, ast_map, mut_map, copy_map, last_uses)); time(time_passes, "LLVM passes", - bind link::write::run_passes(sess, llmod, output)); + bind link::write::run_passes(sess, llmod, outputs.obj_filename)); + + let stop_after_codegen = + sess.get_opts().output_type != link::output_type_exe || + sess.get_opts().static && sess.building_library(); + + if stop_after_codegen { ret; } + + time(time_passes, "Linking", + bind link::link_binary(sess, outputs.obj_filename, + outputs.out_filename)); } fn pretty_print_input(sess: session::session, cfg: ast::crate_cfg, input: str, @@ -604,19 +620,7 @@ fn main(args: [str]) { ret; } - let outputs = build_output_filenames(ifile, ofile, sess); - - let stop_after_codegen = - sopts.output_type != link::output_type_exe || - sopts.static && sess.building_library(); - - let temp_filename = outputs.obj_filename; - - compile_input(sess, cfg, ifile, temp_filename); - - if stop_after_codegen { ret; } - - link::link_binary(sess, temp_filename, outputs.out_filename); + compile_input(sess, cfg, ifile, ofile); } #[cfg(test)] |
