diff options
| author | kennytm <kennytm@gmail.com> | 2018-12-23 00:07:37 +0800 |
|---|---|---|
| committer | kennytm <kennytm@gmail.com> | 2018-12-23 02:11:51 +0800 |
| commit | 54d4e26b217d1e483b66f18713149bff97d9bd71 (patch) | |
| tree | 80873fb401c7c9a90d6243b77d815ea6b1756d34 | |
| parent | beaf07182253e8055b5b9abc5919bab6559d53f7 (diff) | |
| parent | 50eb5f6137719a7e8fdd270e90af0d734d002c5d (diff) | |
| download | rust-54d4e26b217d1e483b66f18713149bff97d9bd71.tar.gz rust-54d4e26b217d1e483b66f18713149bff97d9bd71.zip | |
Rollup merge of #56919 - oli-obk:null_ref_array_tuple, r=RalfJung
Remove a wrong multiplier on relocation offset computation r? @RalfJung fixes #56800
| -rw-r--r-- | src/librustc_mir/interpret/memory.rs | 9 | ||||
| -rw-r--r-- | src/test/ui/consts/promoted_regression.rs | 9 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/librustc_mir/interpret/memory.rs b/src/librustc_mir/interpret/memory.rs index 420fe264263..77a5f5d7b3a 100644 --- a/src/librustc_mir/interpret/memory.rs +++ b/src/librustc_mir/interpret/memory.rs @@ -708,8 +708,13 @@ impl<'a, 'mir, 'tcx, M: Machine<'a, 'mir, 'tcx>> Memory<'a, 'mir, 'tcx, M> { relocations .iter() .map(|&(offset, reloc)| { - (offset + dest.offset - src.offset + (i * size * relocations.len() as u64), - reloc) + // compute offset for current repetition + let dest_offset = dest.offset + (i * size); + ( + // shift offsets from source allocation to destination allocation + offset + dest_offset - src.offset, + reloc, + ) }) ); } diff --git a/src/test/ui/consts/promoted_regression.rs b/src/test/ui/consts/promoted_regression.rs new file mode 100644 index 00000000000..68b9a20ecf9 --- /dev/null +++ b/src/test/ui/consts/promoted_regression.rs @@ -0,0 +1,9 @@ +// compile-pass + +fn main() { + let _ = &[("", ""); 3]; +} + +const FOO: &[(&str, &str)] = &[("", ""); 3]; +const BAR: &[(&str, &str); 5] = &[("", ""); 5]; +const BAA: &[[&str; 12]; 11] = &[[""; 12]; 11]; |
