Skip to content

Commit 5c630a6

Browse files
committed
Auto merge of #27981 - dotdash:gepi, r=brson
2 parents 28ef44a + 5d9c250 commit 5c630a6

File tree

11 files changed

+52
-57
lines changed

11 files changed

+52
-57
lines changed

src/librustc_trans/trans/_match.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,6 @@ pub use self::TransBindingMode::*;
188188
use self::Opt::*;
189189
use self::FailureHandler::*;
190190

191-
use back::abi;
192191
use llvm::{ValueRef, BasicBlockRef};
193192
use middle::check_match::StaticInliner;
194193
use middle::check_match;
@@ -731,9 +730,8 @@ fn bind_subslice_pat(bcx: Block,
731730
let slice_ty = bcx.tcx().mk_imm_ref(bcx.tcx().mk_region(ty::ReStatic),
732731
bcx.tcx().mk_slice(unit_ty));
733732
let scratch = rvalue_scratch_datum(bcx, slice_ty, "");
734-
Store(bcx, slice_begin,
735-
GEPi(bcx, scratch.val, &[0, abi::FAT_PTR_ADDR]));
736-
Store(bcx, slice_len, GEPi(bcx, scratch.val, &[0, abi::FAT_PTR_EXTRA]));
733+
Store(bcx, slice_begin, expr::get_dataptr(bcx, scratch.val));
734+
Store(bcx, slice_len, expr::get_meta(bcx, scratch.val));
737735
scratch.val
738736
}
739737

@@ -887,9 +885,9 @@ fn compare_values<'blk, 'tcx>(cx: Block<'blk, 'tcx>,
887885
&format!("comparison of `{}`", rhs_t),
888886
StrEqFnLangItem);
889887
let lhs_data = Load(cx, expr::get_dataptr(cx, lhs));
890-
let lhs_len = Load(cx, expr::get_len(cx, lhs));
888+
let lhs_len = Load(cx, expr::get_meta(cx, lhs));
891889
let rhs_data = Load(cx, expr::get_dataptr(cx, rhs));
892-
let rhs_len = Load(cx, expr::get_len(cx, rhs));
890+
let rhs_len = Load(cx, expr::get_meta(cx, rhs));
893891
callee::trans_lang_call(cx, did, &[lhs_data, lhs_len, rhs_data, rhs_len], None, debug_loc)
894892
}
895893

@@ -910,15 +908,15 @@ fn compare_values<'blk, 'tcx>(cx: Block<'blk, 'tcx>,
910908
let ty_str_slice = cx.tcx().mk_static_str();
911909

912910
let rhs_str = alloc_ty(cx, ty_str_slice, "rhs_str");
913-
Store(cx, GEPi(cx, rhs, &[0, 0]), expr::get_dataptr(cx, rhs_str));
914-
Store(cx, C_uint(cx.ccx(), pat_len), expr::get_len(cx, rhs_str));
911+
Store(cx, expr::get_dataptr(cx, rhs), expr::get_dataptr(cx, rhs_str));
912+
Store(cx, C_uint(cx.ccx(), pat_len), expr::get_meta(cx, rhs_str));
915913

916914
let lhs_str;
917915
if val_ty(lhs) == val_ty(rhs) {
918916
// Both the discriminant and the pattern are thin pointers
919917
lhs_str = alloc_ty(cx, ty_str_slice, "lhs_str");
920-
Store(cx, GEPi(cx, lhs, &[0, 0]), expr::get_dataptr(cx, lhs_str));
921-
Store(cx, C_uint(cx.ccx(), pat_len), expr::get_len(cx, lhs_str));
918+
Store(cx, expr::get_dataptr(cx, lhs), expr::get_dataptr(cx, lhs_str));
919+
Store(cx, C_uint(cx.ccx(), pat_len), expr::get_meta(cx, lhs_str));
922920
}
923921
else {
924922
// The discriminant is a fat pointer
@@ -1197,9 +1195,9 @@ fn compile_submatch_continue<'a, 'p, 'blk, 'tcx>(mut bcx: Block<'blk, 'tcx>,
11971195
let llty = type_of::type_of(bcx.ccx(), unsized_ty);
11981196
let scratch = alloca_no_lifetime(bcx, llty, "__struct_field_fat_ptr");
11991197
let data = adt::trans_field_ptr(bcx, &*repr, struct_val, 0, arg_count);
1200-
let len = Load(bcx, expr::get_len(bcx, val.val));
1198+
let len = Load(bcx, expr::get_meta(bcx, val.val));
12011199
Store(bcx, data, expr::get_dataptr(bcx, scratch));
1202-
Store(bcx, len, expr::get_len(bcx, scratch));
1200+
Store(bcx, len, expr::get_meta(bcx, scratch));
12031201
field_vals.push(scratch);
12041202
}
12051203
_ => {}

src/librustc_trans/trans/adt.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -892,7 +892,7 @@ pub fn trans_get_discr<'blk, 'tcx>(bcx: Block<'blk, 'tcx>, r: &Repr<'tcx>,
892892
let val = match *r {
893893
CEnum(ity, min, max) => load_discr(bcx, ity, scrutinee, min, max),
894894
General(ity, ref cases, _) => {
895-
let ptr = GEPi(bcx, scrutinee, &[0, 0]);
895+
let ptr = StructGEP(bcx, scrutinee, 0);
896896
load_discr(bcx, ity, ptr, 0, (cases.len() - 1) as Disr)
897897
}
898898
Univariant(..) => C_u8(bcx.ccx(), 0),
@@ -986,13 +986,13 @@ pub fn trans_set_discr<'blk, 'tcx>(bcx: Block<'blk, 'tcx>, r: &Repr<'tcx>,
986986
Store(bcx, C_u8(bcx.ccx(), DTOR_NEEDED), ptr);
987987
}
988988
Store(bcx, C_integral(ll_inttype(bcx.ccx(), ity), discr as u64, true),
989-
GEPi(bcx, val, &[0, 0]));
989+
StructGEP(bcx, val, 0));
990990
}
991991
Univariant(ref st, dtor) => {
992992
assert_eq!(discr, 0);
993993
if dtor_active(dtor) {
994994
Store(bcx, C_u8(bcx.ccx(), DTOR_NEEDED),
995-
GEPi(bcx, val, &[0, st.fields.len() - 1]));
995+
StructGEP(bcx, val, st.fields.len() - 1));
996996
}
997997
}
998998
RawNullablePointer { nndiscr, nnty, ..} => {
@@ -1091,7 +1091,7 @@ pub fn struct_field_ptr<'blk, 'tcx>(bcx: Block<'blk, 'tcx>, st: &Struct<'tcx>, v
10911091
val
10921092
};
10931093

1094-
GEPi(bcx, val, &[0, ix])
1094+
StructGEP(bcx, val, ix)
10951095
}
10961096

10971097
pub fn fold_variants<'blk, 'tcx, F>(bcx: Block<'blk, 'tcx>,
@@ -1162,7 +1162,7 @@ pub fn trans_drop_flag_ptr<'blk, 'tcx>(mut bcx: Block<'blk, 'tcx>,
11621162
let ptr_ty = bcx.tcx().mk_imm_ptr(tcx.dtor_type());
11631163
match *r {
11641164
Univariant(ref st, dtor) if dtor_active(dtor) => {
1165-
let flag_ptr = GEPi(bcx, val, &[0, st.fields.len() - 1]);
1165+
let flag_ptr = StructGEP(bcx, val, st.fields.len() - 1);
11661166
datum::immediate_rvalue_bcx(bcx, flag_ptr, ptr_ty).to_expr_datumblock()
11671167
}
11681168
General(_, _, dtor) if dtor_active(dtor) => {

src/librustc_trans/trans/base.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -403,8 +403,8 @@ pub fn iter_structural_ty<'blk, 'tcx, F>(cx: Block<'blk, 'tcx>,
403403
let (data_ptr, info) = if common::type_is_sized(cx.tcx(), t) {
404404
(av, None)
405405
} else {
406-
let data = GEPi(cx, av, &[0, abi::FAT_PTR_ADDR]);
407-
let info = GEPi(cx, av, &[0, abi::FAT_PTR_EXTRA]);
406+
let data = expr::get_dataptr(cx, av);
407+
let info = expr::get_meta(cx, av);
408408
(Load(cx, data), Some(Load(cx, info)))
409409
};
410410

@@ -420,8 +420,8 @@ pub fn iter_structural_ty<'blk, 'tcx, F>(cx: Block<'blk, 'tcx>,
420420
llfld_a
421421
} else {
422422
let scratch = datum::rvalue_scratch_datum(cx, field_ty, "__fat_ptr_iter");
423-
Store(cx, llfld_a, GEPi(cx, scratch.val, &[0, abi::FAT_PTR_ADDR]));
424-
Store(cx, info.unwrap(), GEPi(cx, scratch.val, &[0, abi::FAT_PTR_EXTRA]));
423+
Store(cx, llfld_a, expr::get_dataptr(cx, scratch.val));
424+
Store(cx, info.unwrap(), expr::get_meta(cx, scratch.val));
425425
scratch.val
426426
};
427427
cx = f(cx, val, field_ty);
@@ -835,7 +835,7 @@ pub fn store_ty<'blk, 'tcx>(cx: Block<'blk, 'tcx>, v: ValueRef, dst: ValueRef, t
835835

836836
if common::type_is_fat_ptr(cx.tcx(), t) {
837837
Store(cx, ExtractValue(cx, v, abi::FAT_PTR_ADDR), expr::get_dataptr(cx, dst));
838-
Store(cx, ExtractValue(cx, v, abi::FAT_PTR_EXTRA), expr::get_len(cx, dst));
838+
Store(cx, ExtractValue(cx, v, abi::FAT_PTR_EXTRA), expr::get_meta(cx, dst));
839839
} else {
840840
let store = Store(cx, from_arg_ty(cx, v, t), to_arg_ty_ptr(cx, dst, t));
841841
unsafe {
@@ -1402,7 +1402,7 @@ pub fn create_datums_for_fn_args<'a, 'tcx>(mut bcx: Block<'a, 'tcx>,
14021402
arg_scope_id, (data, extra),
14031403
|(data, extra), bcx, dst| {
14041404
Store(bcx, data, expr::get_dataptr(bcx, dst));
1405-
Store(bcx, extra, expr::get_len(bcx, dst));
1405+
Store(bcx, extra, expr::get_meta(bcx, dst));
14061406
bcx
14071407
}))
14081408
} else {
@@ -1428,12 +1428,12 @@ pub fn create_datums_for_fn_args<'a, 'tcx>(mut bcx: Block<'a, 'tcx>,
14281428
llval| {
14291429
for (j, &tupled_arg_ty) in
14301430
tupled_arg_tys.iter().enumerate() {
1431-
let lldest = GEPi(bcx, llval, &[0, j]);
1431+
let lldest = StructGEP(bcx, llval, j);
14321432
if common::type_is_fat_ptr(bcx.tcx(), tupled_arg_ty) {
14331433
let data = get_param(bcx.fcx.llfn, idx);
14341434
let extra = get_param(bcx.fcx.llfn, idx + 1);
14351435
Store(bcx, data, expr::get_dataptr(bcx, lldest));
1436-
Store(bcx, extra, expr::get_len(bcx, lldest));
1436+
Store(bcx, extra, expr::get_meta(bcx, lldest));
14371437
idx += 2;
14381438
} else {
14391439
let datum = datum::Datum::new(
@@ -1835,7 +1835,7 @@ fn trans_enum_variant_or_tuple_like_struct<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx
18351835
i);
18361836
if common::type_is_fat_ptr(bcx.tcx(), arg_ty) {
18371837
Store(bcx, get_param(fcx.llfn, llarg_idx), expr::get_dataptr(bcx, lldestptr));
1838-
Store(bcx, get_param(fcx.llfn, llarg_idx + 1), expr::get_len(bcx, lldestptr));
1838+
Store(bcx, get_param(fcx.llfn, llarg_idx + 1), expr::get_meta(bcx, lldestptr));
18391839
llarg_idx += 2;
18401840
} else {
18411841
let arg = get_param(fcx.llfn, llarg_idx);

src/librustc_trans/trans/callee.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1129,7 +1129,7 @@ pub fn trans_arg_datum<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
11291129

11301130
if common::type_is_fat_ptr(bcx.tcx(), formal_arg_ty) {
11311131
llargs.push(Load(bcx, expr::get_dataptr(bcx, val)));
1132-
llargs.push(Load(bcx, expr::get_len(bcx, val)));
1132+
llargs.push(Load(bcx, expr::get_meta(bcx, val)));
11331133
} else {
11341134
llargs.push(val);
11351135
}

src/librustc_trans/trans/closure.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ fn load_closure_environment<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
7070
let upvar_id = ty::UpvarId { var_id: freevar.def.local_node_id(),
7171
closure_expr_id: closure_id.node };
7272
let upvar_capture = bcx.tcx().upvar_capture(upvar_id).unwrap();
73-
let mut upvar_ptr = GEPi(bcx, llenv, &[0, i]);
73+
let mut upvar_ptr = StructGEP(bcx, llenv, i);
7474
let captured_by_ref = match upvar_capture {
7575
ty::UpvarCapture::ByValue => false,
7676
ty::UpvarCapture::ByRef(..) => {

src/librustc_trans/trans/expr.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -282,17 +282,17 @@ pub fn trans<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
282282
return DatumBlock::new(bcx, datum);
283283
}
284284

285-
pub fn get_len(bcx: Block, fat_ptr: ValueRef) -> ValueRef {
286-
GEPi(bcx, fat_ptr, &[0, abi::FAT_PTR_EXTRA])
285+
pub fn get_meta(bcx: Block, fat_ptr: ValueRef) -> ValueRef {
286+
StructGEP(bcx, fat_ptr, abi::FAT_PTR_EXTRA)
287287
}
288288

289289
pub fn get_dataptr(bcx: Block, fat_ptr: ValueRef) -> ValueRef {
290-
GEPi(bcx, fat_ptr, &[0, abi::FAT_PTR_ADDR])
290+
StructGEP(bcx, fat_ptr, abi::FAT_PTR_ADDR)
291291
}
292292

293293
pub fn copy_fat_ptr(bcx: Block, src_ptr: ValueRef, dst_ptr: ValueRef) {
294294
Store(bcx, Load(bcx, get_dataptr(bcx, src_ptr)), get_dataptr(bcx, dst_ptr));
295-
Store(bcx, Load(bcx, get_len(bcx, src_ptr)), get_len(bcx, dst_ptr));
295+
Store(bcx, Load(bcx, get_meta(bcx, src_ptr)), get_meta(bcx, dst_ptr));
296296
}
297297

298298
/// Retrieve the information we are losing (making dynamic) in an unsizing
@@ -454,7 +454,7 @@ fn coerce_unsized<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
454454
// load out the original data pointer so we can repackage
455455
// it.
456456
(Load(bcx, get_dataptr(bcx, source.val)),
457-
Some(Load(bcx, get_len(bcx, source.val))))
457+
Some(Load(bcx, get_meta(bcx, source.val))))
458458
} else {
459459
let val = if source.kind.is_by_ref() {
460460
load_ty(bcx, source.val, source.ty)
@@ -473,7 +473,7 @@ fn coerce_unsized<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
473473
let base = PointerCast(bcx, base, ptr_ty);
474474

475475
Store(bcx, base, get_dataptr(bcx, target.val));
476-
Store(bcx, info, get_len(bcx, target.val));
476+
Store(bcx, info, get_meta(bcx, target.val));
477477
}
478478

479479
// This can be extended to enums and tuples in the future.
@@ -729,8 +729,8 @@ fn trans_field<'blk, 'tcx, F>(bcx: Block<'blk, 'tcx>,
729729
} else {
730730
let scratch = rvalue_scratch_datum(bcx, d.ty, "");
731731
Store(bcx, d.val, get_dataptr(bcx, scratch.val));
732-
let info = Load(bcx, get_len(bcx, base_datum.val));
733-
Store(bcx, info, get_len(bcx, scratch.val));
732+
let info = Load(bcx, get_meta(bcx, base_datum.val));
733+
Store(bcx, info, get_meta(bcx, scratch.val));
734734

735735
// Always generate an lvalue datum, because this pointer doesn't own
736736
// the data and cleanup is scheduled elsewhere.

src/librustc_trans/trans/foreign.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ pub fn trans_native_call<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
302302
"__arg");
303303
if type_is_fat_ptr(ccx.tcx(), passed_arg_tys[i]) {
304304
Store(bcx, llargs_rust[i + offset], expr::get_dataptr(bcx, scratch));
305-
Store(bcx, llargs_rust[i + offset + 1], expr::get_len(bcx, scratch));
305+
Store(bcx, llargs_rust[i + offset + 1], expr::get_meta(bcx, scratch));
306306
offset += 1;
307307
} else {
308308
base::store_ty(bcx, llarg_rust, scratch, passed_arg_tys[i]);
@@ -821,10 +821,10 @@ pub fn trans_rust_fn_with_foreign_abi<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
821821
i, ccx.tn().val_to_string(llrust_arg));
822822
if type_is_fat_ptr(ccx.tcx(), rust_ty) {
823823
let next_llrust_ty = rust_param_tys.next().expect("Not enough parameter types!");
824-
llrust_args.push(builder.load(builder.bitcast(builder.gepi(
825-
llrust_arg, &[0, abi::FAT_PTR_ADDR]), llrust_ty.ptr_to())));
826-
llrust_args.push(builder.load(builder.bitcast(builder.gepi(
827-
llrust_arg, &[0, abi::FAT_PTR_EXTRA]), next_llrust_ty.ptr_to())));
824+
llrust_args.push(builder.load(builder.bitcast(builder.struct_gep(
825+
llrust_arg, abi::FAT_PTR_ADDR), llrust_ty.ptr_to())));
826+
llrust_args.push(builder.load(builder.bitcast(builder.struct_gep(
827+
llrust_arg, abi::FAT_PTR_EXTRA), next_llrust_ty.ptr_to())));
828828
} else {
829829
llrust_args.push(llrust_arg);
830830
}

src/librustc_trans/trans/glue.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
// Code relating to drop glue.
1414

1515

16-
use back::abi;
1716
use back::link::*;
1817
use llvm;
1918
use llvm::{ValueRef, get_param};
@@ -390,7 +389,7 @@ fn trans_struct_drop<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
390389
let (_, bcx) = if type_is_sized(bcx.tcx(), t) {
391390
invoke(bcx, dtor_addr, &[v0], dtor_ty, DebugLoc::None)
392391
} else {
393-
let args = [Load(bcx, expr::get_dataptr(bcx, v0)), Load(bcx, expr::get_len(bcx, v0))];
392+
let args = [Load(bcx, expr::get_dataptr(bcx, v0)), Load(bcx, expr::get_meta(bcx, v0))];
394393
invoke(bcx, dtor_addr, &args, dtor_ty, DebugLoc::None)
395394
};
396395

@@ -525,14 +524,14 @@ fn make_drop_glue<'blk, 'tcx>(bcx: Block<'blk, 'tcx>, v0: ValueRef, g: DropGlueK
525524
// a safe-guard, assert TyBox not used with TyContents.
526525
assert!(!skip_dtor);
527526
if !type_is_sized(bcx.tcx(), content_ty) {
528-
let llval = GEPi(bcx, v0, &[0, abi::FAT_PTR_ADDR]);
527+
let llval = expr::get_dataptr(bcx, v0);
529528
let llbox = Load(bcx, llval);
530529
let llbox_as_usize = PtrToInt(bcx, llbox, Type::int(bcx.ccx()));
531530
let drop_flag_not_dropped_already =
532531
ICmp(bcx, llvm::IntNE, llbox_as_usize, dropped_pattern, DebugLoc::None);
533532
with_cond(bcx, drop_flag_not_dropped_already, |bcx| {
534533
let bcx = drop_ty(bcx, v0, content_ty, DebugLoc::None);
535-
let info = GEPi(bcx, v0, &[0, abi::FAT_PTR_EXTRA]);
534+
let info = expr::get_meta(bcx, v0);
536535
let info = Load(bcx, info);
537536
let (llsize, llalign) = size_and_align_of_dst(bcx, content_ty, info);
538537

@@ -591,8 +590,8 @@ fn make_drop_glue<'blk, 'tcx>(bcx: Block<'blk, 'tcx>, v0: ValueRef, g: DropGlueK
591590
// versus without calling Drop::drop. Assert caller is
592591
// okay with always calling the Drop impl, if any.
593592
assert!(!skip_dtor);
594-
let data_ptr = GEPi(bcx, v0, &[0, abi::FAT_PTR_ADDR]);
595-
let vtable_ptr = Load(bcx, GEPi(bcx, v0, &[0, abi::FAT_PTR_EXTRA]));
593+
let data_ptr = expr::get_dataptr(bcx, v0);
594+
let vtable_ptr = Load(bcx, expr::get_meta(bcx, v0));
596595
let dtor = Load(bcx, vtable_ptr);
597596
Call(bcx,
598597
dtor,

src/librustc_trans/trans/intrinsic.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ pub fn trans_intrinsic_call<'a, 'blk, 'tcx>(mut bcx: Block<'blk, 'tcx>,
449449
} else {
450450
let scratch = rvalue_scratch_datum(bcx, tp_ty, "tmp");
451451
Store(bcx, llargs[0], expr::get_dataptr(bcx, scratch.val));
452-
Store(bcx, llargs[1], expr::get_len(bcx, scratch.val));
452+
Store(bcx, llargs[1], expr::get_meta(bcx, scratch.val));
453453
fcx.schedule_lifetime_end(cleanup::CustomScope(cleanup_scope), scratch.val);
454454
scratch.val
455455
};

src/librustc_trans/trans/meth.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
// except according to those terms.
1010

1111
use arena::TypedArena;
12-
use back::abi;
1312
use back::link;
1413
use llvm::{ValueRef, get_params};
1514
use middle::def_id::DefId;
@@ -446,8 +445,8 @@ fn trans_trait_callee<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
446445
self_datum.val
447446
};
448447

449-
let llself = Load(bcx, GEPi(bcx, llval, &[0, abi::FAT_PTR_ADDR]));
450-
let llvtable = Load(bcx, GEPi(bcx, llval, &[0, abi::FAT_PTR_EXTRA]));
448+
let llself = Load(bcx, expr::get_dataptr(bcx, llval));
449+
let llvtable = Load(bcx, expr::get_meta(bcx, llval));
451450
trans_trait_callee_from_llval(bcx, opaque_fn_ty, vtable_index, llself, llvtable)
452451
}
453452

src/librustc_trans/trans/tvec.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
#![allow(non_camel_case_types)]
1212

13-
use back::abi;
1413
use llvm;
1514
use llvm::ValueRef;
1615
use trans::base::*;
@@ -67,7 +66,7 @@ pub fn trans_fixed_vstore<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
6766
SaveIn(lldest) => {
6867
// lldest will have type *[T x N], but we want the type *T,
6968
// so use GEP to convert:
70-
let lldest = GEPi(bcx, lldest, &[0, 0]);
69+
let lldest = StructGEP(bcx, lldest, 0);
7170
write_content(bcx, &vt, expr, expr, SaveIn(lldest))
7271
}
7372
};
@@ -123,7 +122,7 @@ pub fn trans_slice_vec<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
123122
// llfixed has type *[T x N], but we want the type *T,
124123
// so use GEP to convert
125124
bcx = write_content(bcx, &vt, slice_expr, content_expr,
126-
SaveIn(GEPi(bcx, llfixed, &[0, 0])));
125+
SaveIn(StructGEP(bcx, llfixed, 0)));
127126
};
128127

129128
immediate_rvalue_bcx(bcx, llfixed, vec_ty).to_expr_datumblock()
@@ -147,8 +146,8 @@ pub fn trans_lit_str<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
147146
let llbytes = C_uint(bcx.ccx(), bytes);
148147
let llcstr = C_cstr(bcx.ccx(), str_lit, false);
149148
let llcstr = consts::ptrcast(llcstr, Type::i8p(bcx.ccx()));
150-
Store(bcx, llcstr, GEPi(bcx, lldest, &[0, abi::FAT_PTR_ADDR]));
151-
Store(bcx, llbytes, GEPi(bcx, lldest, &[0, abi::FAT_PTR_EXTRA]));
149+
Store(bcx, llcstr, expr::get_dataptr(bcx, lldest));
150+
Store(bcx, llbytes, expr::get_meta(bcx, lldest));
152151
bcx
153152
}
154153
}
@@ -310,7 +309,7 @@ pub fn get_base_and_len<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
310309
ty::TyArray(_, n) => get_fixed_base_and_len(bcx, llval, n),
311310
ty::TySlice(_) | ty::TyStr => {
312311
let base = Load(bcx, expr::get_dataptr(bcx, llval));
313-
let len = Load(bcx, expr::get_len(bcx, llval));
312+
let len = Load(bcx, expr::get_meta(bcx, llval));
314313
(base, len)
315314
}
316315

0 commit comments

Comments
 (0)