diff options
Diffstat (limited to 'tests/codegen/align-fn.rs')
| -rw-r--r-- | tests/codegen/align-fn.rs | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/tests/codegen/align-fn.rs b/tests/codegen/align-fn.rs deleted file mode 100644 index cbc24e2ae2e..00000000000 --- a/tests/codegen/align-fn.rs +++ /dev/null @@ -1,143 +0,0 @@ -//@ compile-flags: -C no-prepopulate-passes -Z mir-opt-level=0 -Clink-dead-code -//@ edition: 2024 -//@ ignore-wasm32 aligning functions is not currently supported on wasm (#143368) - -#![crate_type = "lib"] -// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity -#![feature(rustc_attrs)] -#![feature(fn_align)] - -// CHECK: align 16 -#[unsafe(no_mangle)] -#[rustc_align(16)] -pub fn fn_align() {} - -pub struct A; - -impl A { - // CHECK: align 16 - #[unsafe(no_mangle)] - #[rustc_align(16)] - pub fn method_align(self) {} - - // CHECK: align 16 - #[unsafe(no_mangle)] - #[rustc_align(16)] - pub fn associated_fn() {} -} - -trait T: Sized { - fn trait_fn() {} - - fn trait_method(self) {} - - #[rustc_align(8)] - fn trait_method_inherit_low(self); - - #[rustc_align(32)] - fn trait_method_inherit_high(self); - - #[rustc_align(32)] - fn trait_method_inherit_default(self) {} - - #[rustc_align(4)] - #[rustc_align(128)] - #[rustc_align(8)] - fn inherit_highest(self) {} -} - -impl T for A { - // CHECK-LABEL: trait_fn - // CHECK-SAME: align 16 - #[unsafe(no_mangle)] - #[rustc_align(16)] - fn trait_fn() {} - - // CHECK-LABEL: trait_method - // CHECK-SAME: align 16 - #[unsafe(no_mangle)] - #[rustc_align(16)] - fn trait_method(self) {} - - // The prototype's align is ignored because the align here is higher. - // CHECK-LABEL: trait_method_inherit_low - // CHECK-SAME: align 16 - #[unsafe(no_mangle)] - #[rustc_align(16)] - fn trait_method_inherit_low(self) {} - - // The prototype's align is used because it is higher. - // CHECK-LABEL: trait_method_inherit_high - // CHECK-SAME: align 32 - #[unsafe(no_mangle)] - #[rustc_align(16)] - fn trait_method_inherit_high(self) {} - - // The prototype's align inherited. - // CHECK-LABEL: trait_method_inherit_default - // CHECK-SAME: align 32 - #[unsafe(no_mangle)] - fn trait_method_inherit_default(self) {} - - // The prototype's highest align inherited. - // CHECK-LABEL: inherit_highest - // CHECK-SAME: align 128 - #[unsafe(no_mangle)] - #[rustc_align(32)] - #[rustc_align(64)] - fn inherit_highest(self) {} -} - -trait HasDefaultImpl: Sized { - // CHECK-LABEL: inherit_from_default_method - // CHECK-LABEL: inherit_from_default_method - // CHECK-SAME: align 32 - #[rustc_align(32)] - fn inherit_from_default_method(self) {} -} - -pub struct InstantiateDefaultMethods; - -impl HasDefaultImpl for InstantiateDefaultMethods {} - -// CHECK-LABEL: align_specified_twice_1 -// CHECK-SAME: align 64 -#[unsafe(no_mangle)] -#[rustc_align(32)] -#[rustc_align(64)] -pub fn align_specified_twice_1() {} - -// CHECK-LABEL: align_specified_twice_2 -// CHECK-SAME: align 128 -#[unsafe(no_mangle)] -#[rustc_align(128)] -#[rustc_align(32)] -pub fn align_specified_twice_2() {} - -// CHECK-LABEL: align_specified_twice_3 -// CHECK-SAME: align 256 -#[unsafe(no_mangle)] -#[rustc_align(32)] -#[rustc_align(256)] -pub fn align_specified_twice_3() {} - -const _: () = { - // CHECK-LABEL: align_unmangled - // CHECK-SAME: align 256 - #[unsafe(no_mangle)] - #[rustc_align(32)] - #[rustc_align(256)] - extern "C" fn align_unmangled() {} -}; - -unsafe extern "C" { - #[rustc_align(256)] - fn align_unmangled(); -} - -// FIXME also check `gen` et al -// CHECK-LABEL: async_align -// CHECK-SAME: align 64 -#[unsafe(no_mangle)] -#[rustc_align(64)] -pub async fn async_align() {} |
