about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOliver Scherer <github35764891676564198441@oli-obk.de>2018-12-17 16:47:26 +0100
committerOliver Scherer <github35764891676564198441@oli-obk.de>2018-12-17 16:47:26 +0100
commit3e7a4ca2f1d576a4a23e8c541cb5c0c420b108de (patch)
tree16690e6affa035bfb0f4c7ec07edcb352950cf98
parent640c7ff4323ca11ceffb18fdd9c6d02f5a0ce3af (diff)
downloadrust-3e7a4ca2f1d576a4a23e8c541cb5c0c420b108de.tar.gz
rust-3e7a4ca2f1d576a4a23e8c541cb5c0c420b108de.zip
Remove a wrong multiplier on relocation offset computation
-rw-r--r--src/librustc_mir/interpret/memory.rs8
-rw-r--r--src/test/ui/consts/promoted_regression.rs9
2 files changed, 13 insertions, 4 deletions
diff --git a/src/librustc_mir/interpret/memory.rs b/src/librustc_mir/interpret/memory.rs
index 420fe264263..65347a02be0 100644
--- a/src/librustc_mir/interpret/memory.rs
+++ b/src/librustc_mir/interpret/memory.rs
@@ -707,10 +707,10 @@ impl<'a, 'mir, 'tcx, M: Machine<'a, 'mir, 'tcx>> Memory<'a, 'mir, 'tcx, M> {
                 new_relocations.extend(
                     relocations
                     .iter()
-                    .map(|&(offset, reloc)| {
-                    (offset + dest.offset - src.offset + (i * size * relocations.len() as u64),
-                     reloc)
-                    })
+                    .map(|&(offset, reloc)| (
+                        offset + dest.offset - src.offset + (i * size),
+                        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];