Skip to content

Commit f8b0d3d

Browse files
committed
Use GEPi a bunch.
1 parent bc11cd5 commit f8b0d3d

File tree

1 file changed

+14
-28
lines changed

1 file changed

+14
-28
lines changed

src/comp/middle/trans.rs

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3687,8 +3687,7 @@ fn build_environment_heap(bcx: @block_ctxt, lltydescs: ValueRef[],
36873687
let closure = r.body;
36883688

36893689
// Store bindings tydesc.
3690-
let bound_tydesc =
3691-
bcx.build.GEP(closure, ~[C_int(0), C_int(abi::closure_elt_tydesc)]);
3690+
let bound_tydesc = GEPi(bcx, closure, ~[0, abi::closure_elt_tydesc]);
36923691
let ti = none;
36933692
let bindings_tydesc = get_tydesc(bcx, bindings_ty, true, ti);
36943693
lazily_emit_tydesc_glue(bcx, abi::tydesc_field_drop_glue, ti);
@@ -3718,8 +3717,7 @@ fn build_environment_heap(bcx: @block_ctxt, lltydescs: ValueRef[],
37183717
bcx = ty_params_slot.bcx;
37193718
i = 0u;
37203719
for td: ValueRef in lltydescs {
3721-
let ty_param_slot =
3722-
bcx.build.GEP(ty_params_slot.val, ~[C_int(0), C_int(i as int)]);
3720+
let ty_param_slot = GEPi(bcx, ty_params_slot.val, ~[0, i as int]);
37233721
bcx.build.Store(td, ty_param_slot);
37243722
i += 1u;
37253723
}
@@ -3767,8 +3765,7 @@ fn build_environment(cx: &@block_ctxt, upvars: &@ast::node_id[]) ->
37673765
let upvar_count = std::ivec::len(llbindings);
37683766
let i = 0u;
37693767
while i < upvar_count {
3770-
let llbindingptr =
3771-
cx.build.GEP(llbindingsptr, ~[C_int(0), C_int(i as int)]);
3768+
let llbindingptr = GEPi(cx, llbindingsptr, ~[0, i as int]);
37723769
cx.build.Store(llbindings.(i), llbindingptr);
37733770
i += 1u;
37743771
}
@@ -3783,21 +3780,18 @@ fn build_environment(cx: &@block_ctxt, upvars: &@ast::node_id[]) ->
37833780
T_closure_ptr(*bcx_ccx(cx), val_ty(llbindingsptr), tydesc_count);
37843781
let llenvptr = alloca(cx, llvm::LLVMGetElementType(llenvptrty));
37853782
let llbindingsptrptr =
3786-
cx.build.GEP(llenvptr,
3787-
~[C_int(0), C_int(abi::box_rc_field_body),
3788-
C_int(abi::closure_elt_bindings)]);
3783+
GEPi(cx, llenvptr,
3784+
~[0, abi::box_rc_field_body, abi::closure_elt_bindings]);
37893785
cx.build.Store(llbindingsptr, llbindingsptrptr);
37903786

37913787
// Copy in our type descriptors, in case the iterator body needs to refer
37923788
// to them.
37933789
let lltydescsptr =
3794-
cx.build.GEP(llenvptr,
3795-
~[C_int(0), C_int(abi::box_rc_field_body),
3796-
C_int(abi::closure_elt_ty_params)]);
3790+
GEPi(cx, llenvptr,
3791+
~[0, abi::box_rc_field_body, abi::closure_elt_ty_params]);
37973792
let i = 0u;
37983793
while i < tydesc_count {
3799-
let lltydescptr =
3800-
cx.build.GEP(lltydescsptr, ~[C_int(0), C_int(i as int)]);
3794+
let lltydescptr = GEPi(cx, lltydescsptr, ~[0, i as int]);
38013795
cx.build.Store(cx.fcx.lltydescs.(i), lltydescptr);
38023796
i += 1u;
38033797
}
@@ -3878,42 +3872,34 @@ fn load_environment(enclosing_cx: &@block_ctxt, fcx: &@fn_ctxt,
38783872

38793873
// Populate the upvars from the environment.
38803874
let llenvptr = bcx.build.PointerCast(fcx.llenv, llenvptrty);
3881-
llenvptr =
3882-
bcx.build.GEP(llenvptr, ~[C_int(0), C_int(abi::box_rc_field_body)]);
3875+
llenvptr = GEPi(bcx, llenvptr, ~[0, abi::box_rc_field_body]);
38833876
let llbindingsptrptr =
3884-
bcx.build.GEP(llenvptr,
3885-
~[C_int(0), C_int(abi::closure_elt_bindings)]);
3877+
GEPi(bcx, llenvptr, ~[0, abi::closure_elt_bindings]);
38863878
let llbindingsptr = bcx.build.Load(llbindingsptrptr);
38873879

38883880
let i = 0u;
38893881
if !option::is_none(enclosing_cx.fcx.lliterbody) {
38903882
i += 1u;
3891-
let lliterbodyptr =
3892-
bcx.build.GEP(llbindingsptr, ~[C_int(0), C_int(0)]);
3883+
let lliterbodyptr = GEPi(bcx, llbindingsptr, ~[0, 0]);
38933884
fcx.lliterbody = some(bcx.build.Load(lliterbodyptr));
38943885
}
38953886
for upvar_id: ast::node_id in *upvars {
3896-
let llupvarptrptr =
3897-
bcx.build.GEP(llbindingsptr, ~[C_int(0), C_int(i as int)]);
3887+
let llupvarptrptr = GEPi(bcx, llbindingsptr, ~[0, i as int]);
38983888
let llupvarptr = bcx.build.Load(llupvarptrptr);
38993889
let def_id = ast::def_id_of_def(bcx_tcx(bcx).def_map.get(upvar_id));
39003890
fcx.llupvars.insert(def_id.node, llupvarptr);
39013891
i += 1u;
39023892
}
39033893

39043894
// Populate the type parameters from the environment.
3905-
let lltydescsptr =
3906-
bcx.build.GEP(llenvptr,
3907-
~[C_int(0), C_int(abi::closure_elt_ty_params)]);
3895+
let lltydescsptr = GEPi(bcx, llenvptr, ~[0, abi::closure_elt_ty_params]);
39083896
let tydesc_count = std::ivec::len(enclosing_cx.fcx.lltydescs);
39093897
i = 0u;
39103898
while i < tydesc_count {
3911-
let lltydescptr =
3912-
bcx.build.GEP(lltydescsptr, ~[C_int(0), C_int(i as int)]);
3899+
let lltydescptr = GEPi(bcx, lltydescsptr, ~[0, i as int]);
39133900
fcx.lltydescs += ~[bcx.build.Load(lltydescptr)];
39143901
i += 1u;
39153902
}
3916-
39173903
}
39183904

39193905
fn trans_for_each(cx: &@block_ctxt, local: &@ast::local, seq: &@ast::expr,

0 commit comments

Comments
 (0)