From d8190afbcb9b15eb8e04d3860a5bd018568a3980 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 28 Nov 2018 00:25:40 +0100 Subject: 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 computed correctly based on the element size. --- src/test/codegen/issue-56267.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/test/codegen/issue-56267.rs (limited to 'src/test/codegen') 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 { + 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 } +} -- cgit 1.4.1-3-g733a5