@@ -779,13 +779,18 @@ static unsigned get_box_tindex(jl_datatype_t *jt, jl_value_t *ut)
779
779
780
780
static Value *emit_nthptr_addr (jl_codectx_t &ctx, Value *v, ssize_t n, bool gctracked = true )
781
781
{
782
- return ctx.builder .CreateInBoundsGEP (emit_bitcast (ctx, maybe_decay_tracked (v), T_pprjlvalue),
783
- ConstantInt::get (T_size, n));
782
+ return ctx.builder .CreateInBoundsGEP (
783
+ T_prjlvalue,
784
+ emit_bitcast (ctx, maybe_decay_tracked (v), T_pprjlvalue),
785
+ ConstantInt::get (T_size, n));
784
786
}
785
787
786
788
static Value *emit_nthptr_addr (jl_codectx_t &ctx, Value *v, Value *idx)
787
789
{
788
- return ctx.builder .CreateInBoundsGEP (emit_bitcast (ctx, maybe_decay_tracked (v), T_pprjlvalue), idx);
790
+ return ctx.builder .CreateInBoundsGEP (
791
+ T_prjlvalue,
792
+ emit_bitcast (ctx, maybe_decay_tracked (v), T_pprjlvalue),
793
+ idx);
789
794
}
790
795
791
796
static Value *emit_nthptr (jl_codectx_t &ctx, Value *v, ssize_t n, MDNode *tbaa)
@@ -1457,8 +1462,10 @@ static bool emit_getfield_unknownidx(jl_codectx_t &ctx,
1457
1462
minimum_align = std::min (minimum_align,
1458
1463
(size_t )julia_alignment (ft));
1459
1464
}
1460
- Value *fldptr = ctx.builder .CreateInBoundsGEP (maybe_decay_tracked (
1461
- emit_bitcast (ctx, data_pointer (ctx, strct), T_pprjlvalue)), idx);
1465
+ Value *fldptr = ctx.builder .CreateInBoundsGEP (
1466
+ T_prjlvalue,
1467
+ maybe_decay_tracked (emit_bitcast (ctx, data_pointer (ctx, strct), T_pprjlvalue)),
1468
+ idx);
1462
1469
Value *fld = tbaa_decorate (strct.tbaa ,
1463
1470
maybe_mark_load_dereferenceable (
1464
1471
ctx.builder .CreateLoad (T_prjlvalue, fldptr),
@@ -1539,8 +1546,9 @@ static jl_cgval_t emit_getfield_knownidx(jl_codectx_t &ctx, const jl_cgval_t &st
1539
1546
// can pessimize mem2reg
1540
1547
if (byte_offset > 0 ) {
1541
1548
addr = ctx.builder .CreateInBoundsGEP (
1542
- emit_bitcast (ctx, staddr, T_pint8),
1543
- ConstantInt::get (T_size, byte_offset));
1549
+ T_int8,
1550
+ emit_bitcast (ctx, staddr, T_pint8),
1551
+ ConstantInt::get (T_size, byte_offset));
1544
1552
}
1545
1553
else {
1546
1554
addr = staddr;
@@ -1896,8 +1904,8 @@ static Value *emit_array_nd_index(
1896
1904
ctx.builder .SetInsertPoint (failBB);
1897
1905
// CreateAlloca is OK here since we are on an error branch
1898
1906
Value *tmp = ctx.builder .CreateAlloca (T_size, ConstantInt::get (T_size, nidxs));
1899
- for (size_t k= 0 ; k < nidxs; k++) {
1900
- ctx.builder .CreateStore (idxs[k], ctx.builder .CreateInBoundsGEP (tmp, ConstantInt::get (T_size, k)));
1907
+ for (size_t k = 0 ; k < nidxs; k++) {
1908
+ ctx.builder .CreateStore (idxs[k], ctx.builder .CreateInBoundsGEP (T_size, tmp, ConstantInt::get (T_size, k)));
1901
1909
}
1902
1910
ctx.builder .CreateCall (prepare_call (jlboundserrorv_func),
1903
1911
{ mark_callee_rooted (a), tmp, ConstantInt::get (T_size, nidxs) });
@@ -2410,8 +2418,9 @@ static void emit_setfield(jl_codectx_t &ctx,
2410
2418
Value *addr = data_pointer (ctx, strct);
2411
2419
if (byte_offset > 0 ) {
2412
2420
addr = ctx.builder .CreateInBoundsGEP (
2413
- emit_bitcast (ctx, maybe_decay_tracked (addr), T_pint8),
2414
- ConstantInt::get (T_size, byte_offset)); // TODO: use emit_struct_gep
2421
+ T_int8,
2422
+ emit_bitcast (ctx, maybe_decay_tracked (addr), T_pint8),
2423
+ ConstantInt::get (T_size, byte_offset)); // TODO: use emit_struct_gep
2415
2424
}
2416
2425
jl_value_t *jfty = jl_svecref (sty->types , idx0);
2417
2426
if (jl_field_isptr (sty, idx0)) {
@@ -2531,7 +2540,9 @@ static jl_cgval_t emit_new_struct(jl_codectx_t &ctx, jl_value_t *ty, size_t narg
2531
2540
if (!jl_field_isptr (sty, i) && jl_is_uniontype (jl_field_type (sty, i))) {
2532
2541
tbaa_decorate (tbaa_unionselbyte, ctx.builder .CreateStore (
2533
2542
ConstantInt::get (T_int8, 0 ),
2534
- ctx.builder .CreateInBoundsGEP (emit_bitcast (ctx, strct, T_pint8),
2543
+ ctx.builder .CreateInBoundsGEP (
2544
+ T_int8,
2545
+ emit_bitcast (ctx, strct, T_pint8),
2535
2546
ConstantInt::get (T_size, jl_field_offset (sty, i) + jl_field_size (sty, i) - 1 ))));
2536
2547
}
2537
2548
}
@@ -2551,15 +2562,15 @@ static jl_cgval_t emit_new_struct(jl_codectx_t &ctx, jl_value_t *ty, size_t narg
2551
2562
tbaa_decorate (strctinfo.tbaa , ctx.builder .CreateStore (
2552
2563
ConstantPointerNull::get (cast<PointerType>(T_prjlvalue)),
2553
2564
ctx.builder .CreateInBoundsGEP (T_prjlvalue, emit_bitcast (ctx, strct, T_pprjlvalue),
2554
- ConstantInt::get (T_size, jl_field_offset (sty, i) / sizeof (void *)))));
2565
+ ConstantInt::get (T_size, jl_field_offset (sty, i) / sizeof (void *)))));
2555
2566
}
2556
2567
}
2557
2568
for (size_t i = nargs; i < nf; i++) {
2558
2569
if (!jl_field_isptr (sty, i) && jl_is_uniontype (jl_field_type (sty, i))) {
2559
2570
tbaa_decorate (tbaa_unionselbyte, ctx.builder .CreateStore (
2560
2571
ConstantInt::get (T_int8, 0 ),
2561
2572
ctx.builder .CreateInBoundsGEP (emit_bitcast (ctx, strct, T_pint8),
2562
- ConstantInt::get (T_size, jl_field_offset (sty, i) + jl_field_size (sty, i) - 1 ))));
2573
+ ConstantInt::get (T_size, jl_field_offset (sty, i) + jl_field_size (sty, i) - 1 ))));
2563
2574
}
2564
2575
}
2565
2576
bool need_wb = false ;
0 commit comments