about summary refs log tree commit diff
path: root/src/test/codegen
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-11-29 00:06:20 +0000
committerbors <bors@rust-lang.org>2018-11-29 00:06:20 +0000
commit5f387a6032ee7c5e575e06c596328ff556a1675d (patch)
treeaf6389b3adbcc170ed00cfdfa3b9262bf185539c /src/test/codegen
parentb68fc18c45350e1cdcd83cecf0f12e294e55af56 (diff)
parentd8190afbcb9b15eb8e04d3860a5bd018568a3980 (diff)
downloadrust-5f387a6032ee7c5e575e06c596328ff556a1675d.tar.gz
rust-5f387a6032ee7c5e575e06c596328ff556a1675d.zip
Auto merge of #56300 - nikic:issue-56267, r=eddyb
Fix alignment of stores to scalar pair

The alignment for the second element of a scalar pair is not the same as for the first element, make sure it is calculated correctly. This fixes #56267.

r? @eddyb
Diffstat (limited to 'src/test/codegen')
-rw-r--r--src/test/codegen/issue-56267.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/test/codegen/issue-56267.rs b/src/test/codegen/issue-56267.rs
new file mode 100644
index 00000000000..2c33f558931
--- /dev/null
+++ b/src/test/codegen/issue-56267.rs
@@ -0,0 +1,18 @@
+// compile-flags: -C no-prepopulate-passes
+
+#![crate_type="rlib"]
+
+#[allow(dead_code)]
+pub struct Foo<T> {
+    foo: u64,
+    bar: T,
+}
+
+// The store writing to bar.1 should have alignment 4. Not checking
+// other stores here, as the alignment will be platform-dependent.
+
+// CHECK: store i32 [[TMP1:%.+]], i32* [[TMP2:%.+]], align 4
+#[no_mangle]
+pub fn test(x: (i32, i32)) -> Foo<(i32, i32)> {
+    Foo { foo: 0, bar: x }
+}