diff options
| author | Simonas Kazlauskas <git@kazlauskas.me> | 2015-12-19 20:28:12 +0200 |
|---|---|---|
| committer | Simonas Kazlauskas <git@kazlauskas.me> | 2015-12-19 20:30:13 +0200 |
| commit | 2b2f983523e6ca12889cd319cf32f558d79cdfd6 (patch) | |
| tree | e41afa613cf7a007e0d25afacaa8ca9f7661e134 /src | |
| parent | 67a2d1f34f917b6e583440b0a86767b2ff8e4d4f (diff) | |
| download | rust-2b2f983523e6ca12889cd319cf32f558d79cdfd6.tar.gz rust-2b2f983523e6ca12889cd319cf32f558d79cdfd6.zip | |
Fix GEPs for MIR indexing translation
Fixes #30474
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_trans/trans/mir/lvalue.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/librustc_trans/trans/mir/lvalue.rs b/src/librustc_trans/trans/mir/lvalue.rs index f3c2c345979..b167633909a 100644 --- a/src/librustc_trans/trans/mir/lvalue.rs +++ b/src/librustc_trans/trans/mir/lvalue.rs @@ -132,7 +132,8 @@ impl<'bcx, 'tcx> MirContext<'bcx, 'tcx> { mir::ProjectionElem::Index(ref index) => { let index = self.trans_operand(bcx, index); let llindex = self.prepare_index(bcx, index.immediate()); - (build::InBoundsGEP(bcx, tr_base.llval, &[llindex]), + let zero = common::C_uint(bcx.ccx(), 0u64); + (build::InBoundsGEP(bcx, tr_base.llval, &[zero, llindex]), ptr::null_mut()) } mir::ProjectionElem::ConstantIndex { offset, @@ -140,7 +141,8 @@ impl<'bcx, 'tcx> MirContext<'bcx, 'tcx> { min_length: _ } => { let lloffset = common::C_u32(bcx.ccx(), offset); let llindex = self.prepare_index(bcx, lloffset); - (build::InBoundsGEP(bcx, tr_base.llval, &[llindex]), + let zero = common::C_uint(bcx.ccx(), 0u64); + (build::InBoundsGEP(bcx, tr_base.llval, &[zero, llindex]), ptr::null_mut()) } mir::ProjectionElem::ConstantIndex { offset, @@ -150,7 +152,8 @@ impl<'bcx, 'tcx> MirContext<'bcx, 'tcx> { let lllen = self.lvalue_len(bcx, tr_base); let llindex = build::Sub(bcx, lllen, lloffset, DebugLoc::None); let llindex = self.prepare_index(bcx, llindex); - (build::InBoundsGEP(bcx, tr_base.llval, &[llindex]), + let zero = common::C_uint(bcx.ccx(), 0u64); + (build::InBoundsGEP(bcx, tr_base.llval, &[zero, llindex]), ptr::null_mut()) } mir::ProjectionElem::Downcast(..) => { |
