Skip to content

Commit 6e740ae

Browse files
always add align attributes
1 parent dcbdc8c commit 6e740ae

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

Diff for: compiler/rustc_codegen_llvm/src/abi.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ impl ArgAttributesExt for ArgAttributes {
5959
llattr.apply_llfn(idx, llfn);
6060
}
6161
}
62+
if let Some(align) = self.pointee_align {
63+
llvm::LLVMRustAddAlignmentAttr(llfn, idx.as_uint(), align.bytes() as u32);
64+
}
6265
match self.arg_ext {
6366
ArgExtension::None => {}
6467
ArgExtension::Zext => llvm::Attribute::ZExt.apply_llfn(idx, llfn),
@@ -77,9 +80,6 @@ impl ArgAttributesExt for ArgAttributes {
7780
}
7881
regular -= ArgAttribute::NonNull;
7982
}
80-
if let Some(align) = self.pointee_align {
81-
llvm::LLVMRustAddAlignmentAttr(llfn, idx.as_uint(), align.bytes() as u32);
82-
}
8383
for (attr, llattr) in OPTIMIZATION_ATTRIBUTES {
8484
if regular.contains(attr) {
8585
llattr.apply_llfn(idx, llfn);
@@ -105,6 +105,13 @@ impl ArgAttributesExt for ArgAttributes {
105105
llattr.apply_callsite(idx, callsite);
106106
}
107107
}
108+
if let Some(align) = self.pointee_align {
109+
llvm::LLVMRustAddAlignmentCallSiteAttr(
110+
callsite,
111+
idx.as_uint(),
112+
align.bytes() as u32,
113+
);
114+
}
108115
match self.arg_ext {
109116
ArgExtension::None => {}
110117
ArgExtension::Zext => llvm::Attribute::ZExt.apply_callsite(idx, callsite),
@@ -127,13 +134,6 @@ impl ArgAttributesExt for ArgAttributes {
127134
}
128135
regular -= ArgAttribute::NonNull;
129136
}
130-
if let Some(align) = self.pointee_align {
131-
llvm::LLVMRustAddAlignmentCallSiteAttr(
132-
callsite,
133-
idx.as_uint(),
134-
align.bytes() as u32,
135-
);
136-
}
137137
for (attr, llattr) in OPTIMIZATION_ATTRIBUTES {
138138
if regular.contains(attr) {
139139
llattr.apply_callsite(idx, callsite);

Diff for: src/test/codegen/function-arguments-noopt.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ pub fn boolean_call(x: bool, f: fn(bool) -> bool) -> bool {
2323
f(x)
2424
}
2525

26-
// CHECK: define i32* @borrow(i32* %x)
26+
// CHECK: define align 4 i32* @borrow(i32* align 4 %x)
2727
#[no_mangle]
2828
pub fn borrow(x: &i32) -> &i32 {
2929
x
@@ -32,7 +32,7 @@ pub fn borrow(x: &i32) -> &i32 {
3232
// CHECK-LABEL: @borrow_call
3333
#[no_mangle]
3434
pub fn borrow_call(x: &i32, f: fn(&i32) -> &i32) -> &i32 {
35-
// CHECK: call i32* %f(i32* %x)
35+
// CHECK: call align 4 i32* %f(i32* align 4 %x)
3636
f(x)
3737
}
3838

0 commit comments

Comments
 (0)