From a27f3e3fd1e4d16160f8885b6b06665b5319f56c Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 21 Jul 2025 14:34:12 +0200 Subject: Rename `tests/codegen` into `tests/codegen-llvm` --- tests/codegen/frame-pointer-cli-control.rs | 61 ------------------------------ 1 file changed, 61 deletions(-) delete mode 100644 tests/codegen/frame-pointer-cli-control.rs (limited to 'tests/codegen/frame-pointer-cli-control.rs') diff --git a/tests/codegen/frame-pointer-cli-control.rs b/tests/codegen/frame-pointer-cli-control.rs deleted file mode 100644 index a65dd132763..00000000000 --- a/tests/codegen/frame-pointer-cli-control.rs +++ /dev/null @@ -1,61 +0,0 @@ -//@ add-core-stubs -//@ compile-flags: --crate-type=rlib -Copt-level=0 -//@ revisions: force-on aarch64-apple aarch64-apple-on aarch64-apple-off -//@ [force-on] compile-flags: -Cforce-frame-pointers=on -//@ [aarch64-apple] needs-llvm-components: aarch64 -//@ [aarch64-apple] compile-flags: --target=aarch64-apple-darwin -//@ [aarch64-apple-on] needs-llvm-components: aarch64 -//@ [aarch64-apple-on] compile-flags: --target=aarch64-apple-darwin -Cforce-frame-pointers=on -//@ [aarch64-apple-off] needs-llvm-components: aarch64 -//@ [aarch64-apple-off] compile-flags: --target=aarch64-apple-darwin -Cforce-frame-pointers=off -/*! - -Tests the extent to which frame pointers can be controlled by the CLI. -The behavior of our frame pointer options, at present, is an irreversible ratchet, where -a "weaker" option that allows omitting frame pointers may be overridden by the target demanding -that all code (or all non-leaf code, more often) must be compiled with frame pointers. -This was discussed on 2025-05-22 in the T-compiler meeting and accepted as an intentional change, -ratifying the prior decisions by compiler contributors and reviewers as correct, -though it was also acknowledged that the flag allows somewhat confusing inputs. - -We find aarch64-apple-darwin useful because of its icy-clear policy regarding frame pointers, -e.g. says: - -* The frame pointer register (x29) must always address a valid frame record. Some functions — - such as leaf functions or tail calls — may opt not to create an entry in this list. - As a result, stack traces are always meaningful, even without debug information. - -Many Rust fn, if externally visible, may be expected to follow target ABI by tools or asm code! -This can make it a problem to generate ABI-incorrect code, which may mean "with frame pointers". -For this and other reasons, `-Cforce-frame-pointers=off` cannot override the target definition. -This can cause some confusion because it is "reverse polarity" relative to C compilers, which have -commands like `-fomit-frame-pointer`, `-fomit-leaf-frame-pointer`, or `-fno-omit-frame-pointer`! - -Specific cases where platforms or tools rely on frame pointers for sound or correct unwinding: -- illumos: -- aarch64-windows: -- aarch64-linux: -- dtrace (freebsd and openbsd): -- openbsd: -- i686-msvc -- i686-mingw: -*/ -#![feature(no_core, lang_items)] -#![no_core] - -extern crate minicore; - -// CHECK: i32 @peach{{.*}}[[PEACH_ATTRS:\#[0-9]+]] { -#[no_mangle] -pub fn peach(x: u32) -> u32 { - x -} - -// CHECK: attributes [[PEACH_ATTRS]] = { -// force-on-SAME: {{.*}}"frame-pointer"="all" -// aarch64-apple-SAME: {{.*}}"frame-pointer"="non-leaf" -// aarch64-apple-on-SAME: {{.*}}"frame-pointer"="all" -// -// yes, we are testing this doesn't do anything: -// aarch64-apple-off-SAME: {{.*}}"frame-pointer"="non-leaf" -// CHECK-SAME: } -- cgit 1.4.1-3-g733a5