diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2018-11-28 00:25:40 +0100 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2018-11-28 00:31:03 +0100 |
| commit | d8190afbcb9b15eb8e04d3860a5bd018568a3980 (patch) | |
| tree | f26626950c6a75fc397c42275a343d5d797e66d4 /src/test/codegen | |
| parent | 6bfb46e4ac9a2704f06de1a2ff7a4612cd70c8cb (diff) | |
| download | rust-d8190afbcb9b15eb8e04d3860a5bd018568a3980.tar.gz rust-d8190afbcb9b15eb8e04d3860a5bd018568a3980.zip | |
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.
Diffstat (limited to 'src/test/codegen')
| -rw-r--r-- | src/test/codegen/issue-56267.rs | 18 |
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 } +} |
