Skip to content

Commit

Permalink
[testsuite][cleanup] Remove all usages of dont_merge hack to avoid …
Browse files Browse the repository at this point in the history
…function merging

Resolves #129438

The `-Zmerge-functions=disabled` compile flag exists for this purpose.
  • Loading branch information
Rajveer100 committed Aug 23, 2024
1 parent c8b14ba commit 7453128
Show file tree
Hide file tree
Showing 12 changed files with 23 additions and 126 deletions.
7 changes: 1 addition & 6 deletions tests/assembly/asm/aarch64-modifiers.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//@ assembly-output: emit-asm
//@ compile-flags: -O -C panic=abort
//@ compile-flags: --target aarch64-unknown-linux-gnu
//@ compile-flags: -Zmerge-functions=disabled
//@ needs-llvm-components: aarch64

#![feature(no_core, lang_items, rustc_attrs)]
Expand Down Expand Up @@ -29,12 +30,6 @@ macro_rules! check {
// -O and extern "C" guarantee that the selected register is always r0/s0/d0/q0
#[no_mangle]
pub unsafe extern "C" fn $func() -> i32 {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

let y;
asm!($code, out($reg) y);
y
Expand Down
14 changes: 2 additions & 12 deletions tests/assembly/asm/aarch64-types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
//@ assembly-output: emit-asm
//@ [aarch64] compile-flags: --target aarch64-unknown-linux-gnu
//@ [aarch64] needs-llvm-components: aarch64
//@ [aarch64] compile-flags: -Zmerge-functions=disabled
//@ [arm64ec] compile-flags: --target arm64ec-pc-windows-msvc
//@ [arm64ec] compile-flags: -Zmerge-functions=disabled
//@ [arm64ec] needs-llvm-components: aarch64

#![feature(no_core, lang_items, rustc_attrs, repr_simd, asm_experimental_arch)]
Expand Down Expand Up @@ -113,12 +115,6 @@ macro_rules! check {
($func:ident $ty:ident $class:ident $mov:literal $modifier:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

let y;
asm!(
concat!($mov, " {:", $modifier, "}, {:", $modifier, "}"),
Expand All @@ -134,12 +130,6 @@ macro_rules! check_reg {
($func:ident $ty:ident $reg:tt $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

let y;
asm!(concat!($mov, " ", $reg, ", ", $reg), lateout($reg) y, in($reg) x);
y
Expand Down
7 changes: 1 addition & 6 deletions tests/assembly/asm/arm-modifiers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
//@ compile-flags: -O -C panic=abort
//@ compile-flags: --target armv7-unknown-linux-gnueabihf
//@ compile-flags: -C target-feature=+neon
//@ compile-flags: -Zmerge-functions=disabled
//@ needs-llvm-components: arm

#![feature(no_core, lang_items, rustc_attrs, repr_simd)]
Expand Down Expand Up @@ -40,12 +41,6 @@ macro_rules! check {
// -O and extern "C" guarantee that the selected register is always r0/s0/d0/q0
#[no_mangle]
pub unsafe extern "C" fn $func() -> $ty {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

let y;
asm!(concat!($mov, " {0:", $modifier, "}, {0:", $modifier, "}"), out($reg) y);
y
Expand Down
13 changes: 1 addition & 12 deletions tests/assembly/asm/arm-types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
//@ assembly-output: emit-asm
//@ compile-flags: --target armv7-unknown-linux-gnueabihf
//@ compile-flags: -C opt-level=0
//@ compile-flags: -Zmerge-functions=disabled
//@[d32] compile-flags: -C target-feature=+d32
//@[neon] compile-flags: -C target-feature=+neon --cfg d32
//@[neon] filecheck-flags: --check-prefix d32
Expand Down Expand Up @@ -114,12 +115,6 @@ macro_rules! check {
($func:ident $ty:ident $class:ident $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

let y;
asm!(concat!($mov, " {}, {}"), out($class) y, in($class) x);
y
Expand All @@ -131,12 +126,6 @@ macro_rules! check_reg {
($func:ident $ty:ident $reg:tt $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

let y;
asm!(concat!($mov, " ", $reg, ", ", $reg), lateout($reg) y, in($reg) x);
y
Expand Down
25 changes: 1 addition & 24 deletions tests/assembly/asm/hexagon-types.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//@ assembly-output: emit-asm
//@ compile-flags: --target hexagon-unknown-linux-musl
//@ compile-flags: -Zmerge-functions=disabled
//@ needs-llvm-components: hexagon

#![feature(no_core, lang_items, rustc_attrs, repr_simd, asm_experimental_arch)]
Expand Down Expand Up @@ -41,12 +42,6 @@ macro_rules! check {
($func:ident $ty:ident $class:ident) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

let y;
asm!("{} = {}", out($class) y, in($class) x);
y
Expand All @@ -58,12 +53,6 @@ macro_rules! check_reg {
($func:ident $ty:ident $reg:tt) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

let y;
asm!(concat!($reg, " = ", $reg), lateout($reg) y, in($reg) x);
y
Expand All @@ -77,12 +66,6 @@ macro_rules! check_reg {
// CHECK: InlineAsm End
#[no_mangle]
pub unsafe fn sym_static() {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

asm!("r0 = #{}", sym extern_static);
}

Expand All @@ -92,12 +75,6 @@ pub unsafe fn sym_static() {
// CHECK: InlineAsm End
#[no_mangle]
pub unsafe fn sym_fn() {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

asm!("r0 = #{}", sym extern_func);
}

Expand Down
10 changes: 1 addition & 9 deletions tests/assembly/asm/loongarch-type.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//@ assembly-output: emit-asm
//@ compile-flags: --target loongarch64-unknown-linux-gnu
//@ compile-flags: -Zmerge-functions=disabled
//@ needs-llvm-components: loongarch

#![feature(no_core, lang_items, rustc_attrs, asm_experimental_arch)]
Expand Down Expand Up @@ -39,11 +40,6 @@ extern "C" {
static extern_static: u8;
}

// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}

// CHECK-LABEL: sym_fn:
// CHECK: #APP
// CHECK: pcalau12i $t0, %got_pc_hi20(extern_func)
Expand All @@ -67,8 +63,6 @@ pub unsafe fn sym_static() {
macro_rules! check { ($func:ident, $ty:ty, $class:ident, $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
dont_merge(stringify!($func));

let y;
asm!(concat!($mov," {}, {}"), out($class) y, in($class) x);
y
Expand All @@ -78,8 +72,6 @@ macro_rules! check { ($func:ident, $ty:ty, $class:ident, $mov:literal) => {
macro_rules! check_reg { ($func:ident, $ty:ty, $reg:tt, $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
dont_merge(stringify!($func));

let y;
asm!(concat!($mov, " ", $reg, ", ", $reg), lateout($reg) y, in($reg) x);
y
Expand Down
11 changes: 2 additions & 9 deletions tests/assembly/asm/mips-types.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
//@ revisions: mips32 mips64
//@ assembly-output: emit-asm
//@[mips32] compile-flags: --target mips-unknown-linux-gnu
//@[mips32] compile-flags: -Zmerge-functions=disabled
//@[mips32] needs-llvm-components: mips
//@[mips64] compile-flags: --target mips64-unknown-linux-gnuabi64
//@[mips64] compile-flags: -Zmerge-functions=disabled
//@[mips64] needs-llvm-components: mips

#![feature(no_core, lang_items, rustc_attrs, repr_simd, asm_experimental_arch)]
Expand Down Expand Up @@ -43,16 +45,9 @@ extern "C" {
static extern_static: u8;
}

// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}

macro_rules! check { ($func:ident, $ty:ty, $class:ident, $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
dont_merge(stringify!($func));

let y;
asm!(concat!($mov," {}, {}"), out($class) y, in($class) x);
y
Expand All @@ -62,8 +57,6 @@ macro_rules! check { ($func:ident, $ty:ty, $class:ident, $mov:literal) => {
macro_rules! check_reg { ($func:ident, $ty:ty, $reg:tt, $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
dont_merge(stringify!($func));

let y;
asm!(concat!($mov, " ", $reg, ", ", $reg), lateout($reg) y, in($reg) x);
y
Expand Down
11 changes: 2 additions & 9 deletions tests/assembly/asm/powerpc-types.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
//@ revisions: powerpc powerpc64
//@ assembly-output: emit-asm
//@[powerpc] compile-flags: --target powerpc-unknown-linux-gnu
//@[powerpc] compile-flags: -Zmerge-functions=disabled
//@[powerpc] needs-llvm-components: powerpc
//@[powerpc64] compile-flags: --target powerpc64-unknown-linux-gnu
//@[powerpc64] compile-flags: -Zmerge-functions=disabled
//@[powerpc64] needs-llvm-components: powerpc

#![feature(no_core, lang_items, rustc_attrs, repr_simd, asm_experimental_arch)]
Expand Down Expand Up @@ -43,16 +45,9 @@ extern "C" {
static extern_static: u8;
}

// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}

macro_rules! check { ($func:ident, $ty:ty, $class:ident, $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
dont_merge(stringify!($func));

let y;
asm!(concat!($mov," {}, {}"), out($class) y, in($class) x);
y
Expand All @@ -62,8 +57,6 @@ macro_rules! check { ($func:ident, $ty:ty, $class:ident, $mov:literal) => {
macro_rules! check_reg { ($func:ident, $ty:ty, $rego:tt, $regc:tt, $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
dont_merge(stringify!($func));

let y;
asm!(concat!($mov, " ", $rego, ", ", $rego), lateout($regc) y, in($regc) x);
y
Expand Down
18 changes: 6 additions & 12 deletions tests/assembly/asm/riscv-types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,32 @@
//@ assembly-output: emit-asm

//@[riscv64] compile-flags: --target riscv64imac-unknown-none-elf
//@[riscv64] compile-flags: -Zmerge-functions=disabled
//@[riscv64] needs-llvm-components: riscv

//@[riscv32] compile-flags: --target riscv32imac-unknown-none-elf
//@[riscv32] compile-flags: -Zmerge-functions=disabled
//@[riscv32] needs-llvm-components: riscv

//@[riscv64-zfhmin] compile-flags: --target riscv64imac-unknown-none-elf --cfg riscv64
//@[riscv64-zfhmin] compile-flags: -Zmerge-functions=disabled
//@[riscv64-zfhmin] needs-llvm-components: riscv
//@[riscv64-zfhmin] compile-flags: -C target-feature=+zfhmin
//@[riscv64-zfhmin] filecheck-flags: --check-prefix riscv64

//@[riscv32-zfhmin] compile-flags: --target riscv32imac-unknown-none-elf
//@[riscv32-zfhmin] compile-flags: -Zmerge-functions=disabled
//@[riscv32-zfhmin] needs-llvm-components: riscv
//@[riscv32-zfhmin] compile-flags: -C target-feature=+zfhmin

//@[riscv64-zfh] compile-flags: --target riscv64imac-unknown-none-elf --cfg riscv64
//@[riscv64-zfh] compile-flags: -Zmerge-functions=disabled
//@[riscv64-zfh] needs-llvm-components: riscv
//@[riscv64-zfh] compile-flags: -C target-feature=+zfh
//@[riscv64-zfh] filecheck-flags: --check-prefix riscv64 --check-prefix zfhmin

//@[riscv32-zfh] compile-flags: --target riscv32imac-unknown-none-elf
//@[riscv32-zfh] compile-flags: -Zmerge-functions=disabled
//@[riscv32-zfh] needs-llvm-components: riscv
//@[riscv32-zfh] compile-flags: -C target-feature=+zfh
//@[riscv32-zfh] filecheck-flags: --check-prefix zfhmin
Expand Down Expand Up @@ -90,12 +96,6 @@ macro_rules! check {
($func:ident $ty:ident $class:ident $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

let y;
asm!(concat!($mov, " {}, {}"), out($class) y, in($class) x);
y
Expand All @@ -107,12 +107,6 @@ macro_rules! check_reg {
($func:ident $ty:ident $reg:tt $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}
dont_merge(stringify!($func));

let y;
asm!(concat!($mov, " ", $reg, ", ", $reg), lateout($reg) y, in($reg) x);
y
Expand Down
10 changes: 1 addition & 9 deletions tests/assembly/asm/s390x-types.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//@ revisions: s390x
//@ assembly-output: emit-asm
//@[s390x] compile-flags: --target s390x-unknown-linux-gnu
//@[s390x] compile-flags: -Zmerge-functions=disabled
//@[s390x] needs-llvm-components: systemz

#![feature(no_core, lang_items, rustc_attrs, repr_simd, asm_experimental_arch)]
Expand Down Expand Up @@ -42,16 +43,9 @@ extern "C" {
static extern_static: u8;
}

// Hack to avoid function merging
extern "Rust" {
fn dont_merge(s: &str);
}

macro_rules! check { ($func:ident, $ty:ty, $class:ident, $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
dont_merge(stringify!($func));

let y;
asm!(concat!($mov," {}, {}"), out($class) y, in($class) x);
y
Expand All @@ -61,8 +55,6 @@ macro_rules! check { ($func:ident, $ty:ty, $class:ident, $mov:literal) => {
macro_rules! check_reg { ($func:ident, $ty:ty, $reg:tt, $mov:literal) => {
#[no_mangle]
pub unsafe fn $func(x: $ty) -> $ty {
dont_merge(stringify!($func));

let y;
asm!(concat!($mov, " %", $reg, ", %", $reg), lateout($reg) y, in($reg) x);
y
Expand Down
Loading

0 comments on commit 7453128

Please sign in to comment.