@@ -659,14 +659,6 @@ fn dynamic_align_of(cx: @block_ctxt, t: ty::t) -> result {
659
659
}
660
660
}
661
661
662
- // Simple wrapper around GEP that takes an array of ints and wraps them
663
- // in C_int()
664
- fn GEPi ( cx : @block_ctxt , base : ValueRef , ixs : [ int ] ) -> ValueRef {
665
- let v: [ ValueRef ] = [ ] ;
666
- for i: int in ixs { v += [ C_int ( bcx_ccx ( cx) , i) ] ; }
667
- ret InBoundsGEP ( cx, base, v) ;
668
- }
669
-
670
662
// Increment a pointer by a given amount and then cast it to be a pointer
671
663
// to a given type.
672
664
fn bump_ptr ( bcx : @block_ctxt , t : ty:: t , base : ValueRef , sz : ValueRef ) ->
@@ -898,10 +890,8 @@ fn field_of_tydesc(cx: @block_ctxt, t: ty::t, escapes: bool, field: int) ->
898
890
result {
899
891
let ti = none :: < @tydesc_info > ;
900
892
let tydesc = get_tydesc ( cx, t, escapes, tps_normal, ti) . result ;
901
- let ccx = bcx_ccx ( cx) ;
902
893
ret rslt( tydesc. bcx ,
903
- GEP ( tydesc. bcx , tydesc. val , [ C_int ( ccx, 0 ) ,
904
- C_int ( ccx, field) ] ) ) ;
894
+ GEPi ( tydesc. bcx , tydesc. val , [ 0 , field] ) ) ;
905
895
}
906
896
907
897
@@ -1230,7 +1220,7 @@ fn make_generic_glue_inner(cx: @local_ctxt, sp: span, t: ty::t,
1230
1220
let lltydescs = [ mutable] ;
1231
1221
let p = 0 u;
1232
1222
while p < ty_param_count {
1233
- let llparam = GEP ( load_env_bcx, lltyparams, [ C_int ( ccx , p as int ) ] ) ;
1223
+ let llparam = GEPi ( load_env_bcx, lltyparams, [ p as int ] ) ;
1234
1224
llparam = Load ( load_env_bcx, llparam) ;
1235
1225
std:: vec:: grow_set ( lltydescs, ty_params[ p] , 0 as ValueRef , llparam) ;
1236
1226
p += 1 u;
@@ -1354,8 +1344,7 @@ fn make_take_glue(cx: @block_ctxt, v: ValueRef, t: ty::t) {
1354
1344
fn incr_refcnt_of_boxed ( cx : @block_ctxt , box_ptr : ValueRef ) -> @block_ctxt {
1355
1345
let ccx = bcx_ccx ( cx) ;
1356
1346
let rc_ptr =
1357
- GEP ( cx, box_ptr, [ C_int ( ccx, 0 ) ,
1358
- C_int ( ccx, abi:: box_rc_field_refcnt) ] ) ;
1347
+ GEPi ( cx, box_ptr, [ 0 , abi:: box_rc_field_refcnt] ) ;
1359
1348
let rc = Load ( cx, rc_ptr) ;
1360
1349
rc = Add ( cx, rc, C_int ( ccx, 1 ) ) ;
1361
1350
Store ( cx, rc, rc_ptr) ;
@@ -1369,9 +1358,7 @@ fn make_free_glue(bcx: @block_ctxt, v: ValueRef, t: ty::t) {
1369
1358
let bcx = alt ty:: struct ( bcx_tcx ( bcx) , t) {
1370
1359
ty:: ty_box ( body_mt) {
1371
1360
v = PointerCast ( bcx, v, type_of_1 ( bcx, t) ) ;
1372
- let ccx = bcx_ccx ( bcx) ;
1373
- let body = GEP ( bcx, v, [ C_int ( ccx, 0 ) ,
1374
- C_int ( ccx, abi:: box_rc_field_body) ] ) ;
1361
+ let body = GEPi ( bcx, v, [ 0 , abi:: box_rc_field_body] ) ;
1375
1362
let bcx = drop_ty ( bcx, body, body_mt. ty ) ;
1376
1363
if !bcx_ccx ( bcx) . sess . get_opts ( ) . do_gc {
1377
1364
trans_non_gc_free ( bcx, v)
@@ -1391,11 +1378,9 @@ fn make_free_glue(bcx: @block_ctxt, v: ValueRef, t: ty::t) {
1391
1378
let ccx = bcx_ccx ( bcx) ;
1392
1379
let llbox_ty = T_opaque_obj_ptr ( ccx) ;
1393
1380
let b = PointerCast ( bcx, v, llbox_ty) ;
1394
- let body = GEP ( bcx, b, [ C_int ( ccx, 0 ) ,
1395
- C_int ( ccx, abi:: box_rc_field_body) ] ) ;
1381
+ let body = GEPi ( bcx, b, [ 0 , abi:: box_rc_field_body] ) ;
1396
1382
let tydescptr =
1397
- GEP ( bcx, body, [ C_int ( ccx, 0 ) ,
1398
- C_int ( ccx, abi:: obj_body_elt_tydesc) ] ) ;
1383
+ GEPi ( bcx, body, [ 0 , abi:: obj_body_elt_tydesc] ) ;
1399
1384
let tydesc = Load ( bcx, tydescptr) ;
1400
1385
let ti = none;
1401
1386
call_tydesc_glue_full ( bcx, body, tydesc,
@@ -1409,14 +1394,11 @@ fn make_free_glue(bcx: @block_ctxt, v: ValueRef, t: ty::t) {
1409
1394
// Then free the body.
1410
1395
let ccx = bcx_ccx ( bcx) ;
1411
1396
v = PointerCast ( bcx, v, T_opaque_closure_ptr ( ccx) ) ;
1412
- let body = GEP ( bcx, v, [ C_int ( ccx, 0 ) ,
1413
- C_int ( ccx, abi:: box_rc_field_body) ] ) ;
1397
+ let body = GEPi ( bcx, v, [ 0 , abi:: box_rc_field_body] ) ;
1414
1398
let bindings =
1415
- GEP ( bcx, body, [ C_int ( ccx, 0 ) ,
1416
- C_int ( ccx, abi:: closure_elt_bindings) ] ) ;
1399
+ GEPi ( bcx, body, [ 0 , abi:: closure_elt_bindings] ) ;
1417
1400
let tydescptr =
1418
- GEP ( bcx, body, [ C_int ( ccx, 0 ) ,
1419
- C_int ( ccx, abi:: closure_elt_tydesc) ] ) ;
1401
+ GEPi ( bcx, body, [ 0 , abi:: closure_elt_tydesc] ) ;
1420
1402
let ti = none;
1421
1403
call_tydesc_glue_full ( bcx, bindings, Load ( bcx, tydescptr) ,
1422
1404
abi:: tydesc_field_drop_glue, ti) ;
@@ -1440,16 +1422,14 @@ fn make_drop_glue(bcx: @block_ctxt, v0: ValueRef, t: ty::t) {
1440
1422
}
1441
1423
ty:: ty_obj ( _) {
1442
1424
let box_cell =
1443
- GEP ( bcx, v0, [ C_int ( ccx, 0 ) ,
1444
- C_int ( ccx, abi:: obj_field_box) ] ) ;
1425
+ GEPi ( bcx, v0, [ 0 , abi:: obj_field_box] ) ;
1445
1426
decr_refcnt_maybe_free ( bcx, Load ( bcx, box_cell) , t)
1446
1427
}
1447
1428
ty:: ty_res ( did, inner, tps) {
1448
1429
trans_res_drop ( bcx, v0, did, inner, tps)
1449
1430
}
1450
1431
ty:: ty_fn ( _, _, _, _, _) {
1451
- let box_cell = GEP ( bcx, v0, [ C_int ( ccx, 0 ) ,
1452
- C_int ( ccx, abi:: fn_field_box) ] ) ;
1432
+ let box_cell = GEPi ( bcx, v0, [ 0 , abi:: fn_field_box] ) ;
1453
1433
decr_refcnt_maybe_free ( bcx, Load ( bcx, box_cell) , t)
1454
1434
}
1455
1435
_ {
@@ -1516,8 +1496,7 @@ fn decr_refcnt_maybe_free(cx: @block_ctxt, box_ptr: ValueRef, t: ty::t)
1516
1496
let null_test = IsNull ( cx, box_ptr) ;
1517
1497
CondBr ( cx, null_test, next_cx. llbb , rc_adj_cx. llbb ) ;
1518
1498
let rc_ptr =
1519
- GEP ( rc_adj_cx, box_ptr, [ C_int ( ccx, 0 ) ,
1520
- C_int ( ccx, abi:: box_rc_field_refcnt) ] ) ;
1499
+ GEPi ( rc_adj_cx, box_ptr, [ 0 , abi:: box_rc_field_refcnt] ) ;
1521
1500
let rc = Load ( rc_adj_cx, rc_ptr) ;
1522
1501
rc = Sub ( rc_adj_cx, rc, C_int ( ccx, 1 ) ) ;
1523
1502
Store ( rc_adj_cx, rc, rc_ptr) ;
@@ -1730,8 +1709,8 @@ fn iter_structural_ty(cx: @block_ctxt, av: ValueRef, t: ty::t,
1730
1709
let ccx = bcx_ccx ( cx) ;
1731
1710
let lltagty = T_opaque_tag_ptr ( ccx) ;
1732
1711
let av_tag = PointerCast ( cx, av, lltagty) ;
1733
- let lldiscrim_a_ptr = GEP ( cx, av_tag, [ C_int ( ccx , 0 ) , C_int ( ccx , 0 ) ] ) ;
1734
- let llunion_a_ptr = GEP ( cx, av_tag, [ C_int ( ccx , 0 ) , C_int ( ccx , 1 ) ] ) ;
1712
+ let lldiscrim_a_ptr = GEPi ( cx, av_tag, [ 0 , 0 ] ) ;
1713
+ let llunion_a_ptr = GEPi ( cx, av_tag, [ 0 , 1 ] ) ;
1735
1714
let lldiscrim_a = Load ( cx, lldiscrim_a_ptr) ;
1736
1715
1737
1716
// NB: we must hit the discriminant first so that structural
@@ -1756,15 +1735,11 @@ fn iter_structural_ty(cx: @block_ctxt, av: ValueRef, t: ty::t,
1756
1735
ret next_cx;
1757
1736
}
1758
1737
ty:: ty_fn ( _, _, _, _, _) | ty:: ty_native_fn ( _, _, _) {
1759
- let ccx = bcx_ccx ( cx) ;
1760
- let box_cell_a = GEP ( cx, av, [ C_int ( ccx, 0 ) ,
1761
- C_int ( ccx, abi:: fn_field_box) ] ) ;
1738
+ let box_cell_a = GEPi ( cx, av, [ 0 , abi:: fn_field_box] ) ;
1762
1739
ret iter_boxpp( cx, box_cell_a, f) ;
1763
1740
}
1764
1741
ty:: ty_obj ( _) {
1765
- let ccx = bcx_ccx ( cx) ;
1766
- let box_cell_a = GEP ( cx, av, [ C_int ( ccx, 0 ) ,
1767
- C_int ( ccx, abi:: obj_field_box) ] ) ;
1742
+ let box_cell_a = GEPi ( cx, av, [ 0 , abi:: obj_field_box] ) ;
1768
1743
ret iter_boxpp( cx, box_cell_a, f) ;
1769
1744
}
1770
1745
_ { bcx_ccx( cx) . sess . unimpl ( "type in iter_structural_ty" ) ; }
@@ -1880,18 +1855,15 @@ fn call_tydesc_glue_full(cx: @block_ctxt, v: ValueRef, tydesc: ValueRef,
1880
1855
}
1881
1856
}
1882
1857
1883
- let ccx = bcx_ccx ( cx) ;
1884
1858
let llrawptr = PointerCast ( cx, v, T_ptr ( T_i8 ( ) ) ) ;
1885
1859
let lltydescs =
1886
- GEP ( cx, tydesc, [ C_int ( ccx, 0 ) ,
1887
- C_int ( ccx, abi:: tydesc_field_first_param) ] ) ;
1860
+ GEPi ( cx, tydesc, [ 0 , abi:: tydesc_field_first_param] ) ;
1888
1861
lltydescs = Load ( cx, lltydescs) ;
1889
1862
1890
1863
let llfn;
1891
1864
alt static_glue_fn {
1892
1865
none. {
1893
- let llfnptr = GEP ( cx, tydesc, [ C_int ( ccx, 0 ) ,
1894
- C_int ( ccx, field) ] ) ;
1866
+ let llfnptr = GEPi ( cx, tydesc, [ 0 , field] ) ;
1895
1867
llfn = Load ( cx, llfnptr) ;
1896
1868
}
1897
1869
some ( sgf) { llfn = sgf; }
@@ -1930,18 +1902,15 @@ fn call_cmp_glue(cx: @block_ctxt, lhs: ValueRef, rhs: ValueRef, t: ty::t,
1930
1902
let lltydesc = r. val ;
1931
1903
bcx = r. bcx ;
1932
1904
lazily_emit_tydesc_glue ( bcx, abi:: tydesc_field_cmp_glue, ti) ;
1933
- let ccx = bcx_ccx ( bcx) ;
1934
1905
let lltydescs =
1935
- GEP ( bcx, lltydesc, [ C_int ( ccx, 0 ) ,
1936
- C_int ( ccx, abi:: tydesc_field_first_param) ] ) ;
1906
+ GEPi ( bcx, lltydesc, [ 0 , abi:: tydesc_field_first_param] ) ;
1937
1907
lltydescs = Load ( bcx, lltydescs) ;
1938
1908
1939
1909
let llfn;
1940
1910
alt ti {
1941
1911
none. {
1942
1912
let llfnptr =
1943
- GEP ( bcx, lltydesc, [ C_int ( ccx, 0 ) ,
1944
- C_int ( ccx, abi:: tydesc_field_cmp_glue) ] ) ;
1913
+ GEPi ( bcx, lltydesc, [ 0 , abi:: tydesc_field_cmp_glue] ) ;
1945
1914
llfn = Load ( bcx, llfnptr) ;
1946
1915
}
1947
1916
some ( sti) { llfn = option:: get ( sti. cmp_glue ) ; }
@@ -2411,8 +2380,7 @@ fn autoderef(cx: @block_ctxt, v: ValueRef, t: ty::t) -> result_t {
2411
2380
while true {
2412
2381
alt ty:: struct ( ccx. tcx , t1) {
2413
2382
ty:: ty_box ( mt) {
2414
- let body = GEP ( cx, v1, [ C_int ( ccx, 0 ) ,
2415
- C_int ( ccx, abi:: box_rc_field_body) ] ) ;
2383
+ let body = GEPi ( cx, v1, [ 0 , abi:: box_rc_field_body] ) ;
2416
2384
t1 = mt. ty ;
2417
2385
2418
2386
// Since we're changing levels of box indirection, we may have
@@ -2432,7 +2400,7 @@ fn autoderef(cx: @block_ctxt, v: ValueRef, t: ty::t) -> result_t {
2432
2400
}
2433
2401
ty:: ty_res ( did, inner, tps) {
2434
2402
t1 = ty:: substitute_type_params ( ccx. tcx , tps, inner) ;
2435
- v1 = GEP ( cx, v1, [ C_int ( ccx , 0 ) , C_int ( ccx , 1 ) ] ) ;
2403
+ v1 = GEPi ( cx, v1, [ 0 , 1 ] ) ;
2436
2404
}
2437
2405
ty:: ty_tag ( did, tps) {
2438
2406
let variants = ty:: tag_variants ( ccx. tcx , did) ;
@@ -3031,8 +2999,7 @@ fn trans_var(cx: @block_ctxt, sp: span, def: ast::def, id: ast::node_id)
3031
2999
let lltagty = type_of_tag ( ccx, sp, tid, tag_ty) ;
3032
3000
let bcx = alloc_result. bcx ;
3033
3001
let lltagptr = PointerCast ( bcx, lltagblob, T_ptr ( lltagty) ) ;
3034
- let lldiscrimptr = GEP ( bcx, lltagptr, [ C_int ( ccx, 0 ) ,
3035
- C_int ( ccx, 0 ) ] ) ;
3002
+ let lldiscrimptr = GEPi ( bcx, lltagptr, [ 0 , 0 ] ) ;
3036
3003
let d = if std:: vec:: len ( ty:: tag_variants ( ccx. tcx , tid) ) != 1 u {
3037
3004
let lldiscrim_gv = lookup_discriminant ( bcx. fcx . lcx , vid) ;
3038
3005
let lldiscrim = Load ( bcx, lldiscrim_gv) ;
@@ -3075,13 +3042,11 @@ fn trans_object_field_inner(bcx: @block_ctxt, o: ValueRef,
3075
3042
let mths = alt ty:: struct ( tcx, o_ty) { ty:: ty_obj ( ms) { ms } } ;
3076
3043
3077
3044
let ix = ty:: method_idx ( ccx. sess , bcx. sp , field, mths) ;
3078
- let vtbl = Load ( bcx, GEP ( bcx, o, [ C_int ( ccx, 0 ) ,
3079
- C_int ( ccx, abi:: obj_field_vtbl) ] ) ) ;
3045
+ let vtbl = Load ( bcx, GEPi ( bcx, o, [ 0 , abi:: obj_field_vtbl] ) ) ;
3080
3046
let vtbl_type = T_ptr ( T_array ( T_ptr ( T_nil ( ) ) , ix + 1 u) ) ;
3081
3047
vtbl = PointerCast ( bcx, vtbl, vtbl_type) ;
3082
3048
3083
- let v = GEP ( bcx, vtbl, [ C_int ( ccx, 0 ) ,
3084
- C_int ( ccx, ix as int ) ] ) ;
3049
+ let v = GEPi ( bcx, vtbl, [ 0 , ix as int ] ) ;
3085
3050
let fn_ty: ty:: t = ty:: method_ty_to_fn_ty ( tcx, mths[ ix] ) ;
3086
3051
let ret_ty = ty:: ty_fn_ret ( tcx, fn_ty) ;
3087
3052
let ret_ref = ast_util:: ret_by_ref ( ty:: ty_fn_ret_style ( tcx, fn_ty) ) ;
@@ -3225,13 +3190,10 @@ fn trans_lval(cx: @block_ctxt, e: @ast::expr) -> lval_result {
3225
3190
let val =
3226
3191
alt ty:: struct ( ccx. tcx , t) {
3227
3192
ty:: ty_box ( _) {
3228
- InBoundsGEP ( sub. bcx , sub. val ,
3229
- [ C_int ( ccx, 0 ) ,
3230
- C_int ( ccx, abi:: box_rc_field_body) ] )
3193
+ GEPi ( sub. bcx , sub. val , [ 0 , abi:: box_rc_field_body] )
3231
3194
}
3232
3195
ty:: ty_res ( _, _, _) {
3233
- InBoundsGEP ( sub. bcx , sub. val , [ C_int ( ccx, 0 ) ,
3234
- C_int ( ccx, 1 ) ] )
3196
+ GEPi ( sub. bcx , sub. val , [ 0 , 1 ] )
3235
3197
}
3236
3198
ty:: ty_tag ( _, _) {
3237
3199
let ety = ty:: expr_ty ( ccx. tcx , e) ;
@@ -3453,11 +3415,9 @@ fn trans_bind_thunk(cx: @local_ctxt, sp: span, incoming_fty: ty::t,
3453
3415
[ 0 , abi:: box_rc_field_body,
3454
3416
abi:: closure_elt_bindings, 0 ] ) ;
3455
3417
let lltargetenv =
3456
- Load ( cx, GEP ( cx, pair, [ C_int ( ccx, 0 ) ,
3457
- C_int ( ccx, abi:: fn_field_box) ] ) ) ;
3418
+ Load ( cx, GEPi ( cx, pair, [ 0 , abi:: fn_field_box] ) ) ;
3458
3419
let lltargetfn = Load
3459
- ( cx, GEP ( cx, pair, [ C_int ( ccx, 0 ) ,
3460
- C_int ( ccx, abi:: fn_field_code) ] ) ) ;
3420
+ ( cx, GEPi ( cx, pair, [ 0 , abi:: fn_field_code] ) ) ;
3461
3421
bcx = cx;
3462
3422
( lltargetfn, lltargetenv, 1 )
3463
3423
}
@@ -3803,7 +3763,6 @@ fn trans_call(in_cx: @block_ctxt, f: @ast::expr,
3803
3763
// NB: 'f' isn't necessarily a function; it might be an entire self-call
3804
3764
// expression because of the hack that allows us to process self-calls
3805
3765
// with trans_call.
3806
- let ccx = bcx_ccx ( in_cx) ;
3807
3766
let tcx = bcx_tcx ( in_cx) ;
3808
3767
let fn_expr_ty = ty:: expr_ty ( tcx, f) ;
3809
3768
@@ -3828,11 +3787,9 @@ fn trans_call(in_cx: @block_ctxt, f: @ast::expr,
3828
3787
faddr = load_if_immediate ( bcx, faddr, fn_expr_ty) ;
3829
3788
}
3830
3789
let pair = faddr;
3831
- faddr = GEP ( bcx, pair, [ C_int ( ccx, 0 ) ,
3832
- C_int ( ccx, abi:: fn_field_code) ] ) ;
3790
+ faddr = GEPi ( bcx, pair, [ 0 , abi:: fn_field_code] ) ;
3833
3791
faddr = Load ( bcx, faddr) ;
3834
- let llclosure = GEP ( bcx, pair, [ C_int ( ccx, 0 ) ,
3835
- C_int ( ccx, abi:: fn_field_box) ] ) ;
3792
+ let llclosure = GEPi ( bcx, pair, [ 0 , abi:: fn_field_box] ) ;
3836
3793
llenv = Load ( bcx, llclosure) ;
3837
3794
}
3838
3795
}
@@ -5100,25 +5057,23 @@ fn populate_fn_ctxt_from_llself(fcx: @fn_ctxt, llself: val_self_pair) {
5100
5057
let fields_tup_ty = ty:: mk_tup ( fcx. lcx . ccx . tcx , field_tys) ;
5101
5058
let n_typarams = std:: vec:: len :: < ast:: ty_param > ( bcx. fcx . lcx . obj_typarams ) ;
5102
5059
let llobj_box_ty: TypeRef = T_obj_ptr ( ccx, n_typarams) ;
5103
- let box_cell = GEP ( bcx, llself. v , [ C_int ( ccx, 0 ) ,
5104
- C_int ( ccx, abi:: obj_field_box) ] ) ;
5060
+ let box_cell = GEPi ( bcx, llself. v , [ 0 , abi:: obj_field_box] ) ;
5105
5061
let box_ptr = Load ( bcx, box_cell) ;
5106
5062
box_ptr = PointerCast ( bcx, box_ptr, llobj_box_ty) ;
5107
5063
let obj_typarams =
5108
- GEP ( bcx, box_ptr,
5109
- [ C_int ( ccx, 0 ) , C_int ( ccx, abi:: box_rc_field_body) ,
5110
- C_int ( ccx, abi:: obj_body_elt_typarams) ] ) ;
5064
+ GEPi ( bcx, box_ptr, [ 0 , abi:: box_rc_field_body,
5065
+ abi:: obj_body_elt_typarams] ) ;
5111
5066
5112
5067
// The object fields immediately follow the type parameters, so we skip
5113
5068
// over them to get the pointer.
5114
5069
let obj_fields =
5115
- PointerCast ( bcx, GEP ( bcx, obj_typarams, [ C_int ( ccx , 1 ) ] ) ,
5070
+ PointerCast ( bcx, GEPi ( bcx, obj_typarams, [ 1 ] ) ,
5116
5071
T_ptr ( type_of_or_i8 ( bcx, fields_tup_ty) ) ) ;
5117
5072
5118
5073
let i: int = 0 ;
5119
5074
for p: ast:: ty_param in fcx. lcx . obj_typarams {
5120
5075
let lltyparam: ValueRef =
5121
- GEP ( bcx, obj_typarams, [ C_int ( ccx , 0 ) , C_int ( ccx , i ) ] ) ;
5076
+ GEPi ( bcx, obj_typarams, [ 0 , i ] ) ;
5122
5077
lltyparam = Load ( bcx, lltyparam) ;
5123
5078
fcx. lltydescs += [ lltyparam] ;
5124
5079
i += 1 ;
@@ -5307,10 +5262,9 @@ fn trans_tag_variant(cx: @local_ctxt, tag_id: ast::node_id,
5307
5262
} else {
5308
5263
let lltagptr =
5309
5264
PointerCast ( bcx, fcx. llretptr , T_opaque_tag_ptr ( ccx) ) ;
5310
- let lldiscrimptr = GEP ( bcx, lltagptr, [ C_int ( ccx, 0 ) ,
5311
- C_int ( ccx, 0 ) ] ) ;
5265
+ let lldiscrimptr = GEPi ( bcx, lltagptr, [ 0 , 0 ] ) ;
5312
5266
Store ( bcx, C_int ( ccx, index) , lldiscrimptr) ;
5313
- GEP ( bcx, lltagptr, [ C_int ( ccx , 0 ) , C_int ( ccx , 1 ) ] )
5267
+ GEPi ( bcx, lltagptr, [ 0 , 1 ] )
5314
5268
} ;
5315
5269
i = 0 u;
5316
5270
let t_id = ast_util:: local_def ( tag_id) ;
@@ -5558,11 +5512,9 @@ fn create_real_fn_pair(cx: @block_ctxt, llfnty: TypeRef, llfn: ValueRef,
5558
5512
fn fill_fn_pair ( bcx : @block_ctxt , pair : ValueRef , llfn : ValueRef ,
5559
5513
llenvptr : ValueRef ) {
5560
5514
let ccx = bcx_ccx ( bcx) ;
5561
- let code_cell = GEP ( bcx, pair, [ C_int ( ccx, 0 ) ,
5562
- C_int ( ccx, abi:: fn_field_code) ] ) ;
5515
+ let code_cell = GEPi ( bcx, pair, [ 0 , abi:: fn_field_code] ) ;
5563
5516
Store ( bcx, llfn, code_cell) ;
5564
- let env_cell = GEP ( bcx, pair, [ C_int ( ccx, 0 ) ,
5565
- C_int ( ccx, abi:: fn_field_box) ] ) ;
5517
+ let env_cell = GEPi ( bcx, pair, [ 0 , abi:: fn_field_box] ) ;
5566
5518
let llenvblobptr =
5567
5519
PointerCast ( bcx, llenvptr, T_opaque_closure_ptr ( ccx) ) ;
5568
5520
Store ( bcx, llenvblobptr, env_cell) ;
@@ -5801,7 +5753,7 @@ fn register_native_fn(ccx: @crate_ctxt, sp: span, path: [str], name: str,
5801
5753
r =
5802
5754
trans_native_call ( new_raw_block_ctxt ( bcx. fcx , bcx. llbb ) ,
5803
5755
ccx. externs , ccx. llmod , name, call_args) ;
5804
- rptr = BitCast ( bcx, fcx. llretptr , T_ptr ( T_i32 ( ) ) ) ;
5756
+ rptr = BitCast ( bcx, fcx. llretptr , T_ptr ( ccx . int_type ) ) ;
5805
5757
}
5806
5758
}
5807
5759
// We don't store the return value if it's nil, to avoid stomping on a nil
0 commit comments