let val = match *r {
CEnum(ity, min, max) => load_discr(bcx, ity, scrutinee, min, max),
General(ity, ref cases, _) => {
- let ptr = GEPi(bcx, scrutinee, &[0, 0]);
+ let ptr = StructGEP(bcx, scrutinee, 0);
load_discr(bcx, ity, ptr, 0, (cases.len() - 1) as Disr)
}
Univariant(..) => C_u8(bcx.ccx(), 0),
Store(bcx, C_u8(bcx.ccx(), DTOR_NEEDED), ptr);
}
Store(bcx, C_integral(ll_inttype(bcx.ccx(), ity), discr as u64, true),
- GEPi(bcx, val, &[0, 0]));
+ StructGEP(bcx, val, 0));
}
Univariant(ref st, dtor) => {
assert_eq!(discr, 0);
if dtor_active(dtor) {
Store(bcx, C_u8(bcx.ccx(), DTOR_NEEDED),
- GEPi(bcx, val, &[0, st.fields.len() - 1]));
+ StructGEP(bcx, val, st.fields.len() - 1));
}
}
RawNullablePointer { nndiscr, nnty, ..} => {
val
};
- GEPi(bcx, val, &[0, ix])
+ StructGEP(bcx, val, ix)
}
pub fn fold_variants<'blk, 'tcx, F>(bcx: Block<'blk, 'tcx>,
let ptr_ty = bcx.tcx().mk_imm_ptr(tcx.dtor_type());
match *r {
Univariant(ref st, dtor) if dtor_active(dtor) => {
- let flag_ptr = GEPi(bcx, val, &[0, st.fields.len() - 1]);
+ let flag_ptr = StructGEP(bcx, val, st.fields.len() - 1);
datum::immediate_rvalue_bcx(bcx, flag_ptr, ptr_ty).to_expr_datumblock()
}
General(_, _, dtor) if dtor_active(dtor) => {
llval| {
for (j, &tupled_arg_ty) in
tupled_arg_tys.iter().enumerate() {
- let lldest = GEPi(bcx, llval, &[0, j]);
+ let lldest = StructGEP(bcx, llval, j);
if common::type_is_fat_ptr(bcx.tcx(), tupled_arg_ty) {
let data = get_param(bcx.fcx.llfn, idx);
let extra = get_param(bcx.fcx.llfn, idx + 1);
let upvar_id = ty::UpvarId { var_id: freevar.def.local_node_id(),
closure_expr_id: closure_id.node };
let upvar_capture = bcx.tcx().upvar_capture(upvar_id).unwrap();
- let mut upvar_ptr = GEPi(bcx, llenv, &[0, i]);
+ let mut upvar_ptr = StructGEP(bcx, llenv, i);
let captured_by_ref = match upvar_capture {
ty::UpvarCapture::ByValue => false,
ty::UpvarCapture::ByRef(..) => {
}
pub fn get_meta(bcx: Block, fat_ptr: ValueRef) -> ValueRef {
- GEPi(bcx, fat_ptr, &[0, abi::FAT_PTR_EXTRA])
+ StructGEP(bcx, fat_ptr, abi::FAT_PTR_EXTRA)
}
pub fn get_dataptr(bcx: Block, fat_ptr: ValueRef) -> ValueRef {
- GEPi(bcx, fat_ptr, &[0, abi::FAT_PTR_ADDR])
+ StructGEP(bcx, fat_ptr, abi::FAT_PTR_ADDR)
}
pub fn copy_fat_ptr(bcx: Block, src_ptr: ValueRef, dst_ptr: ValueRef) {
i, ccx.tn().val_to_string(llrust_arg));
if type_is_fat_ptr(ccx.tcx(), rust_ty) {
let next_llrust_ty = rust_param_tys.next().expect("Not enough parameter types!");
- llrust_args.push(builder.load(builder.bitcast(builder.gepi(
- llrust_arg, &[0, abi::FAT_PTR_ADDR]), llrust_ty.ptr_to())));
- llrust_args.push(builder.load(builder.bitcast(builder.gepi(
- llrust_arg, &[0, abi::FAT_PTR_EXTRA]), next_llrust_ty.ptr_to())));
+ llrust_args.push(builder.load(builder.bitcast(builder.struct_gep(
+ llrust_arg, abi::FAT_PTR_ADDR), llrust_ty.ptr_to())));
+ llrust_args.push(builder.load(builder.bitcast(builder.struct_gep(
+ llrust_arg, abi::FAT_PTR_EXTRA), next_llrust_ty.ptr_to())));
} else {
llrust_args.push(llrust_arg);
}
SaveIn(lldest) => {
// lldest will have type *[T x N], but we want the type *T,
// so use GEP to convert:
- let lldest = GEPi(bcx, lldest, &[0, 0]);
+ let lldest = StructGEP(bcx, lldest, 0);
write_content(bcx, &vt, expr, expr, SaveIn(lldest))
}
};
// llfixed has type *[T x N], but we want the type *T,
// so use GEP to convert
bcx = write_content(bcx, &vt, slice_expr, content_expr,
- SaveIn(GEPi(bcx, llfixed, &[0, 0])));
+ SaveIn(StructGEP(bcx, llfixed, 0)));
};
immediate_rvalue_bcx(bcx, llfixed, vec_ty).to_expr_datumblock()