about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-05-30 17:08:49 -0700
committerPatrick Walton <pcwalton@mimiga.net>2013-05-30 18:17:32 -0700
commit40b455792d441ef431dfb4de6bdfe082d104269b (patch)
treee4720f037b09d6dff5212ecfc7a3dc459e92d6b1
parent3a3bf8bdef513c889117ab6a90b463fc0b2e2642 (diff)
downloadrust-40b455792d441ef431dfb4de6bdfe082d104269b.tar.gz
rust-40b455792d441ef431dfb4de6bdfe082d104269b.zip
librustc: Bump the offset when translating const structs. Closes #6352.
-rw-r--r--src/librustc/middle/trans/adt.rs1
-rw-r--r--src/test/run-pass/const-struct-offsets.rs14
2 files changed, 15 insertions, 0 deletions
diff --git a/src/librustc/middle/trans/adt.rs b/src/librustc/middle/trans/adt.rs
index 4d1c4851e1f..b26f80fc355 100644
--- a/src/librustc/middle/trans/adt.rs
+++ b/src/librustc/middle/trans/adt.rs
@@ -563,6 +563,7 @@ fn build_const_struct(ccx: @CrateContext, st: &Struct, vals: &[ValueRef])
             vals[i]
         };
         cfields.push(val);
+        offset += machine::llsize_of_alloc(ccx, llty) as u64
     }
 
     return cfields;
diff --git a/src/test/run-pass/const-struct-offsets.rs b/src/test/run-pass/const-struct-offsets.rs
new file mode 100644
index 00000000000..0966fa055bf
--- /dev/null
+++ b/src/test/run-pass/const-struct-offsets.rs
@@ -0,0 +1,14 @@
+enum Foo {
+    IntVal(i32),
+    Int64Val(i64)
+}
+
+struct Bar {
+    i: i32,
+    v: Foo
+}
+
+static bar: Bar = Bar { i: 0, v: IntVal(0) };
+
+fn main() {}
+