Skip to content

Commit 41f2670

Browse files
committed
librustc: discard side tables after translation, before llvm passes.
1 parent 872cb5e commit 41f2670

File tree

1 file changed

+52
-40
lines changed

1 file changed

+52
-40
lines changed

src/librustc/driver/driver.rs

Lines changed: 52 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -208,57 +208,69 @@ fn compile_upto(sess: Session, cfg: ast::crate_cfg,
208208
let rp_set = time(time_passes, ~"region parameterization inference", ||
209209
middle::region::determine_rp_in_crate(sess, ast_map, def_map, crate));
210210

211-
let ty_cx = ty::mk_ctxt(sess, def_map, ast_map, freevars,
212-
region_map, rp_set, move lang_items, crate);
213211

214-
let (method_map, vtable_map) = time(time_passes, ~"typechecking", ||
215-
typeck::check_crate(ty_cx,
216-
trait_map,
217-
crate));
218-
// These next two const passes can probably be merged
219-
time(time_passes, ~"const marking", ||
220-
middle::const_eval::process_crate(crate, def_map, ty_cx));
212+
let outputs = outputs.get();
221213

222-
time(time_passes, ~"const checking", ||
223-
middle::check_const::check_crate(sess, crate, ast_map, def_map,
224-
method_map, ty_cx));
214+
let (llmod, link_meta) = {
225215

226-
if upto == cu_typeck { return {crate: crate, tcx: Some(ty_cx)}; }
216+
let ty_cx = ty::mk_ctxt(sess, def_map, ast_map, freevars,
217+
region_map, rp_set, move lang_items, crate);
227218

228-
time(time_passes, ~"privacy checking", ||
229-
middle::privacy::check_crate(ty_cx, &method_map, crate));
219+
let (method_map, vtable_map) =
220+
time(time_passes, ~"typechecking", ||
221+
typeck::check_crate(ty_cx,
222+
trait_map,
223+
crate));
230224

231-
time(time_passes, ~"loop checking", ||
232-
middle::check_loop::check_crate(ty_cx, crate));
225+
// These next two const passes can probably be merged
226+
time(time_passes, ~"const marking", ||
227+
middle::const_eval::process_crate(crate, def_map, ty_cx));
233228

234-
time(time_passes, ~"alt checking", ||
235-
middle::check_alt::check_crate(ty_cx, crate));
229+
time(time_passes, ~"const checking", ||
230+
middle::check_const::check_crate(sess, crate, ast_map, def_map,
231+
method_map, ty_cx));
236232

237-
let last_use_map = time(time_passes, ~"liveness checking", ||
238-
middle::liveness::check_crate(ty_cx, method_map, crate));
233+
if upto == cu_typeck { return {crate: crate, tcx: Some(ty_cx)}; }
239234

240-
let (root_map, mutbl_map) = time(time_passes, ~"borrow checking", ||
241-
middle::borrowck::check_crate(ty_cx, method_map,
242-
last_use_map, crate));
235+
time(time_passes, ~"privacy checking", ||
236+
middle::privacy::check_crate(ty_cx, &method_map, crate));
243237

244-
time(time_passes, ~"kind checking", ||
245-
kind::check_crate(ty_cx, method_map, last_use_map, crate));
238+
time(time_passes, ~"loop checking", ||
239+
middle::check_loop::check_crate(ty_cx, crate));
246240

247-
time(time_passes, ~"lint checking", || lint::check_crate(ty_cx, crate));
241+
time(time_passes, ~"alt checking", ||
242+
middle::check_alt::check_crate(ty_cx, crate));
248243

249-
if upto == cu_no_trans { return {crate: crate, tcx: Some(ty_cx)}; }
250-
let outputs = outputs.get();
244+
let last_use_map =
245+
time(time_passes, ~"liveness checking", ||
246+
middle::liveness::check_crate(ty_cx, method_map, crate));
247+
248+
let (root_map, mutbl_map) =
249+
time(time_passes, ~"borrow checking", ||
250+
middle::borrowck::check_crate(ty_cx, method_map,
251+
last_use_map, crate));
252+
253+
time(time_passes, ~"kind checking", ||
254+
kind::check_crate(ty_cx, method_map, last_use_map, crate));
255+
256+
time(time_passes, ~"lint checking", ||
257+
lint::check_crate(ty_cx, crate));
251258

252-
let maps = {mutbl_map: mutbl_map,
253-
root_map: root_map,
254-
last_use_map: last_use_map,
255-
method_map: method_map,
256-
vtable_map: vtable_map};
259+
if upto == cu_no_trans { return {crate: crate, tcx: Some(ty_cx)}; }
260+
261+
let maps = {mutbl_map: mutbl_map,
262+
root_map: root_map,
263+
last_use_map: last_use_map,
264+
method_map: method_map,
265+
vtable_map: vtable_map};
266+
267+
time(time_passes, ~"translation", ||
268+
trans::base::trans_crate(sess, crate, ty_cx,
269+
&outputs.obj_filename,
270+
exp_map2, maps))
271+
272+
};
257273

258-
let (llmod, link_meta) = time(time_passes, ~"translation", ||
259-
trans::base::trans_crate(sess, crate, ty_cx,
260-
&outputs.obj_filename,
261-
exp_map2, maps));
262274

263275
time(time_passes, ~"LLVM passes", ||
264276
link::write::run_passes(sess, llmod,
@@ -269,14 +281,14 @@ fn compile_upto(sess: Session, cfg: ast::crate_cfg,
269281
(sess.opts.static && sess.building_library) ||
270282
sess.opts.jit;
271283

272-
if stop_after_codegen { return {crate: crate, tcx: Some(ty_cx)}; }
284+
if stop_after_codegen { return {crate: crate, tcx: None}; }
273285

274286
time(time_passes, ~"linking", ||
275287
link::link_binary(sess,
276288
&outputs.obj_filename,
277289
&outputs.out_filename, link_meta));
278290

279-
return {crate: crate, tcx: Some(ty_cx)};
291+
return {crate: crate, tcx: None};
280292
}
281293

282294
fn compile_input(sess: Session, cfg: ast::crate_cfg, input: input,

0 commit comments

Comments
 (0)