mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-01 13:18:54 +01:00
20ebbf467d
Combining revisions with only-arch allows specifying that a test only applies to a handful of targets. This allows removing a large amount of repetition in the test suite for tests that do not benefit. The revisions are suboptimal for this for some tests, so they aren't preferred in those cases.
48 lines
755 B
Rust
48 lines
755 B
Rust
// revisions: x32 x64
|
|
//[x32] only-x86
|
|
//[x64] only-x86_64
|
|
// compile-flags: -C no-prepopulate-passes
|
|
|
|
#![crate_type = "lib"]
|
|
#![no_std]
|
|
|
|
use core::arch::global_asm;
|
|
|
|
// CHECK-LABEL: foo
|
|
// CHECK: module asm
|
|
// CHECK: module asm "{{[[:space:]]+}}jmp baz"
|
|
// any other global_asm will be appended to this first block, so:
|
|
// CHECK-LABEL: bar
|
|
// CHECK: module asm "{{[[:space:]]+}}jmp quux"
|
|
global_asm!(
|
|
r#"
|
|
.global foo
|
|
foo:
|
|
jmp baz
|
|
"#
|
|
);
|
|
|
|
extern "C" {
|
|
fn foo();
|
|
}
|
|
|
|
// CHECK-LABEL: @baz
|
|
#[no_mangle]
|
|
pub unsafe extern "C" fn baz() {}
|
|
|
|
// no checks here; this has been appended to the first occurrence
|
|
global_asm!(
|
|
r#"
|
|
.global bar
|
|
bar:
|
|
jmp quux
|
|
"#
|
|
);
|
|
|
|
extern "C" {
|
|
fn bar();
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub unsafe extern "C" fn quux() {}
|