mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-19 19:17:31 +00:00

Update this time-traveler on the changes in compiletest and target specs that they missed over the pass ~3 years by being caught in a time rift. The aarch64-apple rev splits into itself and aarch64-apple-on, because rustc obtained support for non-leaf frame-pointers ever since9b67cba
implemented them and used them in aarch64-apple-darwin's spec. Note that the aarch64-apple-off revision fails, despite modernization. This is because9b67cba
also changed the behavior of rustc to defer to the spec over the command-line interface.
37 lines
1.6 KiB
Rust
37 lines
1.6 KiB
Rust
//@ 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 that the frame pointers can be controlled by the CLI. We find aarch64-apple-darwin useful
|
|
because of its icy-clear policy regarding frame pointers (software SHALL be compiled with them),
|
|
e.g. https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms 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.
|
|
*/
|
|
#![feature(no_core, lang_items)]
|
|
#![no_core]
|
|
|
|
extern crate minicore;
|
|
|
|
// CHECK: define 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"
|
|
// aarch64-apple-off-NOT: {{.*}}"frame-pointer"{{.*}}
|
|
// CHECK-SAME: }
|