respect repr(align(N)) on functions in miri

This commit is contained in:
Folkert de Vries 2025-04-20 12:52:50 +02:00
parent 49e5e4e3a5
commit 2d21c14015
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
2 changed files with 35 additions and 2 deletions

View file

@ -0,0 +1,21 @@
//@compile-flags: -Zmin-function-alignment=8
#![feature(fn_align)]
// When a function uses `repr(align(N))`, the function address should be a multiple of `N`.
#[repr(align(256))]
fn foo() {}
#[repr(align(16))]
fn bar() {}
#[repr(align(4))]
fn baz() {}
fn main() {
assert!((foo as usize).is_multiple_of(256));
assert!((bar as usize).is_multiple_of(16));
// The maximum of `repr(align(N))` and `-Zmin-function-alignment=N` is used.
assert!((baz as usize).is_multiple_of(8));
}