// Copyright Kani Contributors // SPDX-License-Identifier: Apache-2.0 OR MIT // Check that we get the expected results for the `min_align_of` intrinsic // with common data types #![feature(core_intrinsics)] use std::intrinsics::min_align_of; struct MyStruct {} enum MyEnum {} #[kani::proof] fn main() { #[cfg(target_arch = "x86_64")] { // Scalar types assert!(min_align_of::() == 1); assert!(min_align_of::() == 2); assert!(min_align_of::() == 4); assert!(min_align_of::() == 8); assert!(min_align_of::() == 8); assert!(min_align_of::() == 8); assert!(min_align_of::() == 1); assert!(min_align_of::() == 2); assert!(min_align_of::() == 4); assert!(min_align_of::() == 8); assert!(min_align_of::() == 8); assert!(min_align_of::() == 8); assert!(min_align_of::() == 4); assert!(min_align_of::() == 8); assert!(min_align_of::() == 1); assert!(min_align_of::() == 4); // Compound types (tuple and array) assert!(min_align_of::<(i32, i32)>() == 4); assert!(min_align_of::<[i32; 5]>() == 4); // Custom data types (struct and enum) assert!(min_align_of::() == 1); assert!(min_align_of::() == 1); } #[cfg(target_arch = "aarch64")] { // Scalar types assert!(min_align_of::() == 1); assert!(min_align_of::() == 2); assert!(min_align_of::() == 4); assert!(min_align_of::() == 8); assert!(min_align_of::() == 16); assert!(min_align_of::() == 8); assert!(min_align_of::() == 1); assert!(min_align_of::() == 2); assert!(min_align_of::() == 4); assert!(min_align_of::() == 8); assert!(min_align_of::() == 16); assert!(min_align_of::() == 8); assert!(min_align_of::() == 4); assert!(min_align_of::() == 8); assert!(min_align_of::() == 1); assert!(min_align_of::() == 4); // Compound types (tuple and array) assert!(min_align_of::<(i32, i32)>() == 4); assert!(min_align_of::<[i32; 5]>() == 4); // Custom data types (struct and enum) assert!(min_align_of::() == 1); assert!(min_align_of::() == 1); } }