@@ -787,13 +787,18 @@ static unsigned get_box_tindex(jl_datatype_t *jt, jl_value_t *ut)
787787
788788static Value *emit_nthptr_addr (jl_codectx_t &ctx, Value *v, ssize_t n, bool gctracked = true )
789789{
790- return ctx.builder .CreateInBoundsGEP (emit_bitcast (ctx, maybe_decay_tracked (v), T_pprjlvalue),
791- ConstantInt::get (T_size, n));
790+ return ctx.builder .CreateInBoundsGEP (
791+ T_prjlvalue,
792+ emit_bitcast (ctx, maybe_decay_tracked (v), T_pprjlvalue),
793+ ConstantInt::get (T_size, n));
792794}
793795
794796static Value *emit_nthptr_addr (jl_codectx_t &ctx, Value *v, Value *idx)
795797{
796- return ctx.builder .CreateInBoundsGEP (emit_bitcast (ctx, maybe_decay_tracked (v), T_pprjlvalue), idx);
798+ return ctx.builder .CreateInBoundsGEP (
799+ T_prjlvalue,
800+ emit_bitcast (ctx, maybe_decay_tracked (v), T_pprjlvalue),
801+ idx);
797802}
798803
799804static Value *emit_nthptr (jl_codectx_t &ctx, Value *v, ssize_t n, MDNode *tbaa)
@@ -1485,8 +1490,10 @@ static bool emit_getfield_unknownidx(jl_codectx_t &ctx,
14851490 minimum_align = std::min (minimum_align,
14861491 (size_t )julia_alignment (ft));
14871492 }
1488- Value *fldptr = ctx.builder .CreateInBoundsGEP (maybe_decay_tracked (
1489- emit_bitcast (ctx, data_pointer (ctx, strct), T_pprjlvalue)), idx);
1493+ Value *fldptr = ctx.builder .CreateInBoundsGEP (
1494+ T_prjlvalue,
1495+ maybe_decay_tracked (emit_bitcast (ctx, data_pointer (ctx, strct), T_pprjlvalue)),
1496+ idx);
14901497 Value *fld = tbaa_decorate (strct.tbaa ,
14911498 maybe_mark_load_dereferenceable (
14921499 ctx.builder .CreateLoad (T_prjlvalue, fldptr),
@@ -1568,8 +1575,9 @@ static jl_cgval_t emit_getfield_knownidx(jl_codectx_t &ctx, const jl_cgval_t &st
15681575 // can pessimize mem2reg
15691576 if (byte_offset > 0 ) {
15701577 addr = ctx.builder .CreateInBoundsGEP (
1571- emit_bitcast (ctx, staddr, T_pint8),
1572- ConstantInt::get (T_size, byte_offset));
1578+ T_int8,
1579+ emit_bitcast (ctx, staddr, T_pint8),
1580+ ConstantInt::get (T_size, byte_offset));
15731581 }
15741582 else {
15751583 addr = staddr;
@@ -1924,8 +1932,8 @@ static Value *emit_array_nd_index(
19241932 ctx.builder .SetInsertPoint (failBB);
19251933 // CreateAlloca is OK here since we are on an error branch
19261934 Value *tmp = ctx.builder .CreateAlloca (T_size, ConstantInt::get (T_size, nidxs));
1927- for (size_t k= 0 ; k < nidxs; k++) {
1928- ctx.builder .CreateStore (idxs[k], ctx.builder .CreateInBoundsGEP (tmp, ConstantInt::get (T_size, k)));
1935+ for (size_t k = 0 ; k < nidxs; k++) {
1936+ ctx.builder .CreateStore (idxs[k], ctx.builder .CreateInBoundsGEP (T_size, tmp, ConstantInt::get (T_size, k)));
19291937 }
19301938 ctx.builder .CreateCall (prepare_call (jlboundserrorv_func),
19311939 { mark_callee_rooted (a), tmp, ConstantInt::get (T_size, nidxs) });
@@ -2438,8 +2446,9 @@ static void emit_setfield(jl_codectx_t &ctx,
24382446 Value *addr = data_pointer (ctx, strct);
24392447 if (byte_offset > 0 ) {
24402448 addr = ctx.builder .CreateInBoundsGEP (
2441- emit_bitcast (ctx, maybe_decay_tracked (addr), T_pint8),
2442- ConstantInt::get (T_size, byte_offset)); // TODO: use emit_struct_gep
2449+ T_int8,
2450+ emit_bitcast (ctx, maybe_decay_tracked (addr), T_pint8),
2451+ ConstantInt::get (T_size, byte_offset)); // TODO: use emit_struct_gep
24432452 }
24442453 jl_value_t *jfty = jl_svecref (sty->types , idx0);
24452454 if (jl_field_isptr (sty, idx0)) {
@@ -2561,7 +2570,9 @@ static jl_cgval_t emit_new_struct(jl_codectx_t &ctx, jl_value_t *ty, size_t narg
25612570 if (!jl_field_isptr (sty, i) && jl_is_uniontype (jl_field_type (sty, i))) {
25622571 tbaa_decorate (tbaa_unionselbyte, ctx.builder .CreateStore (
25632572 ConstantInt::get (T_int8, 0 ),
2564- ctx.builder .CreateInBoundsGEP (emit_bitcast (ctx, strct, T_pint8),
2573+ ctx.builder .CreateInBoundsGEP (
2574+ T_int8,
2575+ emit_bitcast (ctx, strct, T_pint8),
25652576 ConstantInt::get (T_size, jl_field_offset (sty, i) + jl_field_size (sty, i) - 1 ))));
25662577 }
25672578 }
@@ -2581,15 +2592,15 @@ static jl_cgval_t emit_new_struct(jl_codectx_t &ctx, jl_value_t *ty, size_t narg
25812592 tbaa_decorate (strctinfo.tbaa , ctx.builder .CreateStore (
25822593 ConstantPointerNull::get (cast<PointerType>(T_prjlvalue)),
25832594 ctx.builder .CreateInBoundsGEP (T_prjlvalue, emit_bitcast (ctx, strct, T_pprjlvalue),
2584- ConstantInt::get (T_size, jl_field_offset (sty, i) / sizeof (void *)))));
2595+ ConstantInt::get (T_size, jl_field_offset (sty, i) / sizeof (void *)))));
25852596 }
25862597 }
25872598 for (size_t i = nargs; i < nf; i++) {
25882599 if (!jl_field_isptr (sty, i) && jl_is_uniontype (jl_field_type (sty, i))) {
25892600 tbaa_decorate (tbaa_unionselbyte, ctx.builder .CreateStore (
25902601 ConstantInt::get (T_int8, 0 ),
25912602 ctx.builder .CreateInBoundsGEP (emit_bitcast (ctx, strct, T_pint8),
2592- ConstantInt::get (T_size, jl_field_offset (sty, i) + jl_field_size (sty, i) - 1 ))));
2603+ ConstantInt::get (T_size, jl_field_offset (sty, i) + jl_field_size (sty, i) - 1 ))));
25932604 }
25942605 }
25952606 bool need_wb = false ;
0 commit comments