diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-02-14 15:21:53 -0800 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-02-24 20:46:27 -0800 |
| commit | f3ca50c9ca4fd2084cfbc85030ff5ea21e589635 (patch) | |
| tree | 026a63d77c1657e897e33adc6de3fedb7b36a341 /src/comp/driver | |
| parent | be9914625b0cbf5f305c5af3adbc6bc337ae760e (diff) | |
| download | rust-f3ca50c9ca4fd2084cfbc85030ff5ea21e589635.tar.gz rust-f3ca50c9ca4fd2084cfbc85030ff5ea21e589635.zip | |
Encode/decode AST into metadata, re-instantiate inlined items
Diffstat (limited to 'src/comp/driver')
| -rw-r--r-- | src/comp/driver/driver.rs | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/comp/driver/driver.rs b/src/comp/driver/driver.rs index 40cf4e50472..33398722605 100644 --- a/src/comp/driver/driver.rs +++ b/src/comp/driver/driver.rs @@ -6,7 +6,7 @@ import syntax::parse::{parser}; import syntax::{ast, codemap}; import front::attr; import middle::{trans, resolve, freevars, kind, ty, typeck, fn_usage, - last_use, lint}; + last_use, lint, inline}; import syntax::print::{pp, pprust}; import util::{ppaux, filesearch}; import back::link; @@ -157,7 +157,7 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg, bind middle::check_alt::check_crate(ty_cx, crate)); time(time_passes, "typestate checking", bind middle::tstate::ck::check_crate(ty_cx, crate)); - let mut_map = + let mutbl_map = time(time_passes, "mutability checking", bind middle::mutbl::check_crate(ty_cx, crate)); let (copy_map, ref_map) = @@ -173,12 +173,19 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg, if upto == cu_no_trans { ret {crate: crate, tcx: some(ty_cx)}; } let outputs = option::get(outputs); + let maps = {mutbl_map: mutbl_map, copy_map: copy_map, + last_uses: last_uses, impl_map: impl_map, + method_map: method_map, dict_map: dict_map}; + + let inline_map = + time(time_passes, "inline", + bind inline::instantiate_inlines(ty_cx, maps, crate)); + let (llmod, link_meta) = time(time_passes, "translation", bind trans::base::trans_crate( - sess, crate, ty_cx, outputs.obj_filename, exp_map, ast_map, - mut_map, copy_map, last_uses, impl_map, method_map, - dict_map)); + sess, crate, ty_cx, outputs.obj_filename, + exp_map, maps, inline_map)); time(time_passes, "LLVM passes", bind link::write::run_passes(sess, llmod, outputs.obj_filename)); |
