about summary refs log tree commit diff
diff options
context:
space:
mode:
authorZachary S <zasample18+github@gmail.com>2025-07-30 15:35:19 -0500
committerZachary S <zasample18+github@gmail.com>2025-07-31 12:50:40 -0500
commitf554c79ef819cbc0f9983d0d5306cd7a9bfea6d8 (patch)
treec3b8c646fb17083c7b8149dbeec9f3b002289520
parent3fb1b53a9dbfcdf37a4b67d35cde373316829930 (diff)
downloadrust-f554c79ef819cbc0f9983d0d5306cd7a9bfea6d8.tar.gz
rust-f554c79ef819cbc0f9983d0d5306cd7a9bfea6d8.zip
Do not give function allocations alignment in consteval or miri.
-rw-r--r--compiler/rustc_const_eval/src/interpret/memory.rs8
-rw-r--r--src/tools/miri/tests/pass/fn_align.rs25
2 files changed, 6 insertions, 27 deletions
diff --git a/compiler/rustc_const_eval/src/interpret/memory.rs b/compiler/rustc_const_eval/src/interpret/memory.rs
index 47bebf5371a..bbde7c66acc 100644
--- a/compiler/rustc_const_eval/src/interpret/memory.rs
+++ b/compiler/rustc_const_eval/src/interpret/memory.rs
@@ -937,8 +937,12 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
         // (both global from `alloc_map` and local from `extra_fn_ptr_map`)
         if let Some(fn_val) = self.get_fn_alloc(id) {
             let align = match fn_val {
-                FnVal::Instance(instance) => {
-                    self.tcx.codegen_instance_attrs(instance.def).alignment.unwrap_or(Align::ONE)
+                FnVal::Instance(_instance) => {
+                    // FIXME: Until we have a clear design for the effects of align(N) functions
+                    // on the address of function pointers, we don't consider the align(N)
+                    // attribute on functions in the interpreter.
+                    //self.tcx.codegen_instance_attrs(instance.def).alignment.unwrap_or(Align::ONE)
+                    Align::ONE
                 }
                 // Machine-specific extra functions currently do not support alignment restrictions.
                 FnVal::Other(_) => Align::ONE,
diff --git a/src/tools/miri/tests/pass/fn_align.rs b/src/tools/miri/tests/pass/fn_align.rs
deleted file mode 100644
index 9752d033458..00000000000
--- a/src/tools/miri/tests/pass/fn_align.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-//@compile-flags: -Zmin-function-alignment=8
-
-// FIXME(rust-lang/rust#82232, rust-lang/rust#143834): temporarily renamed to mitigate `#[align]`
-// nameres ambiguity
-#![feature(rustc_attrs)]
-#![feature(fn_align)]
-
-// When a function uses `align(N)`, the function address should be a multiple of `N`.
-
-#[rustc_align(256)]
-fn foo() {}
-
-#[rustc_align(16)]
-fn bar() {}
-
-#[rustc_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 `align(N)` and `-Zmin-function-alignment=N` is used.
-    assert!((baz as usize).is_multiple_of(8));
-}