Skip to content

Commit

Permalink
[clang][test] Refine clang machine-function-split tests.
Browse files Browse the repository at this point in the history
This CL includes two changes:
1. moved clang backend-warnings test cases from Driver/ to CodeGen/.
2. removed multiple `cd "$(dirname "%t")"` and replaced with `-o %t`.

Reviewed By: maskray (Fangrui Song)
Differential Revision: https://reviews.llvm.org/D157565
  • Loading branch information
shenhanc78 committed Aug 19, 2023
1 parent acc8a33 commit b9d079d
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 60 deletions.
25 changes: 25 additions & 0 deletions clang/test/CodeGen/fsplit-machine-functions.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// REQUIRES: x86-registered-target
// REQUIRES: arm-registered-target
// REQUIRES: nvptx-registered-target

// Check -fsplit-machine-functions passed to cuda device causes a warning.
// RUN: %clang_cc1 -triple nvptx-unknown-unknown -target-cpu sm_70 \
// RUN: -fcuda-is-device -x cuda -fsplit-machine-functions -S %s \
// RUN: -o %t 2>&1 | FileCheck %s --check-prefix=MFS1
// MFS1: warning: -fsplit-machine-functions is not valid for nvptx

// Check -fsplit-machine-functions passed to X86 does not cause any warning.
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fsplit-machine-functions \
// RUN: -o %t -S %s && { echo "empty output causes FileCheck to fail" ; } \
// RUN: 2>&1 | FileCheck %s --check-prefix=MFS2
// MFS2-NOT: warning:

// Check -fsplit-machine-functions passed to ARM does cause a warning.
// RUN: %clang_cc1 -triple arm-unknown-linux-gnueabi \
// RUN: -fsplit-machine-functions -S %s -o %t \
// RUN: 2>&1 | FileCheck -check-prefix=MFS3 %s
// MFS3: warning: -fsplit-machine-functions is not valid for arm

int foo() {
return 13;
}
58 changes: 9 additions & 49 deletions clang/test/Driver/fsplit-machine-functions-with-cuda-nvptx.c
Original file line number Diff line number Diff line change
@@ -1,68 +1,28 @@
// REQUIRES: system-linux
// REQUIRES: x86-registered-target
// REQUIRES: nvptx-registered-target
// REQUIRES: shell

// Check that -fsplit-machine-functions is passed to both x86 and cuda
// compilation and does not cause driver error.
// RUN: cd "$(dirname "%t")" ; \
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpulib -nogpuinc \
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpulib -nogpuinc \
// RUN: --cuda-gpu-arch=sm_70 -x cuda -fsplit-machine-functions -S %s \
// RUN: 2>&1 | FileCheck %s --check-prefix=MFS1
// MFS1: "-target-cpu" "x86-64"{{.*}}"-fsplit-machine-functions"
// MFS1: "-target-cpu" "sm_70"{{.*}}"-fsplit-machine-functions"

// Check that -fsplit-machine-functions is passed to cuda and it
// causes a warning.
// RUN: cd "$(dirname "%t")" ; \
// RUN: %clang --target=x86_64-unknown-linux-gnu -nogpulib -nogpuinc \
// RUN: --cuda-gpu-arch=sm_70 -x cuda -fsplit-machine-functions -S %s \
// RUN: 2>&1 | FileCheck %s --check-prefix=MFS2
// MFS2: warning: -fsplit-machine-functions is not valid for nvptx

// Check that -Xarch_host -fsplit-machine-functions is passed only to
// native compilation.
// RUN: cd "$(dirname "%t")" ; \
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpulib -nogpuinc \
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpulib -nogpuinc \
// RUN: --cuda-gpu-arch=sm_70 -x cuda -Xarch_host \
// RUN: -fsplit-machine-functions -S %s \
// RUN: 2>&1 | FileCheck %s --check-prefix=MFS3
// MFS3: "-target-cpu" "x86-64"{{.*}}"-fsplit-machine-functions"
// MFS3-NOT: "-target-cpu" "sm_70"{{.*}}"-fsplit-machine-functions"

// Check that -Xarch_host -fsplit-machine-functions does not cause any warning.
// RUN: cd "$(dirname "%t")" ; \
// RUN: %clang --target=x86_64-unknown-linux-gnu -nogpulib -nogpuinc \
// RUN --cuda-gpu-arch=sm_70 -x cuda -Xarch_host \
// RUN -fsplit-machine-functions -S %s || { echo \
// RUN "warning: -fsplit-machine-functions is not valid for" ; } \
// RUN 2>&1 | FileCheck %s --check-prefix=MFS4
// MFS4-NOT: warning: -fsplit-machine-functions is not valid for

// Check that -Xarch_device -fsplit-machine-functions does cause the warning.
// RUN: cd "$(dirname "%t")" ; \
// RUN: %clang --target=x86_64-unknown-linux-gnu -nogpulib -nogpuinc \
// RUN: --cuda-gpu-arch=sm_70 -x cuda -Xarch_device \
// RUN: -fsplit-machine-functions -S %s 2>&1 | \
// RUN: FileCheck %s --check-prefix=MFS5
// MFS5: warning: -fsplit-machine-functions is not valid for
// RUN: 2>&1 | FileCheck %s --check-prefix=MFS2
// MFS2: "-target-cpu" "x86-64"{{.*}}"-fsplit-machine-functions"
// MFS2-NOT: "-target-cpu" "sm_70"{{.*}}"-fsplit-machine-functions"

// Check that -fsplit-machine-functions -Xarch_device
// -fno-split-machine-functions only passes MFS to x86
// RUN: cd "$(dirname "%t")" ; \
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpulib -nogpuinc \
// RUN: --cuda-gpu-arch=sm_70 -x cuda -fsplit-machine-functions \
// RUN: -Xarch_device -fno-split-machine-functions -S %s \
// RUN: 2>&1 | FileCheck %s --check-prefix=MFS6
// MFS6: "-target-cpu" "x86-64"{{.*}}"-fsplit-machine-functions"
// MFS6-NOT: "-target-cpu" "sm_70"{{.*}}"-fsplit-machine-functions"

// Check that -fsplit-machine-functions -Xarch_device
// -fno-split-machine-functions has no warnings
// RUN: cd "$(dirname "%t")" ; \
// RUN: %clang --target=x86_64-unknown-linux-gnu -nogpulib -nogpuinc \
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -nogpulib -nogpuinc \
// RUN: --cuda-gpu-arch=sm_70 -x cuda -fsplit-machine-functions \
// RUN: -Xarch_device -fno-split-machine-functions -S %s \
// RUN: || { echo "warning: -fsplit-machine-functions is not valid for"; } \
// RUN: 2>&1 | FileCheck %s --check-prefix=MFS7
// MFS7-NOT: warning: -fsplit-machine-functions is not valid for
// RUN: 2>&1 | FileCheck %s --check-prefix=MFS3
// MFS3: "-target-cpu" "x86-64"{{.*}}"-fsplit-machine-functions"
// MFS3-NOT: "-target-cpu" "sm_70"{{.*}}"-fsplit-machine-functions"
13 changes: 4 additions & 9 deletions clang/test/Driver/fsplit-machine-functions.c
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
// REQUIRES: arm-registered-target
// RUN: %clang -### --target=x86_64 -fsplit-machine-functions %s -c 2>&1 | FileCheck -check-prefix=CHECK_OPT %s
// RUN: %clang -### --target=x86_64 -fprofile-use=default.profdata -fsplit-machine-functions -fno-split-machine-functions %s -c 2>&1 | FileCheck -check-prefix=CHECK_NOOPT %s

// RUN: %clang -### -target x86_64 -fprofile-use=default.profdata -fsplit-machine-functions %s -c -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-OPT %s
// RUN: %clang -### -target x86_64 -fsplit-machine-functions %s -c -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-OPT %s
// RUN: %clang -### -target x86_64 -fprofile-use=default.profdata -fsplit-machine-functions -fno-split-machine-functions %s -c -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOOPT %s
// RUN: %clang -c -target arm-unknown-linux-gnueabi -fsplit-machine-functions %s -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-TRIPLE %s

// CHECK-OPT: "-fsplit-machine-functions"
// CHECK-NOOPT-NOT: "-fsplit-machine-functions"
// CHECK-TRIPLE: warning: -fsplit-machine-functions is not valid for arm
// CHECK_OPT: "-fsplit-machine-functions"
// CHECK_NOOPT-NOT: "-fsplit-machine-functions"
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/Generic/machine-function-splitter.ll
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@

;; Check that MFS is on for X86 targets.
; MFS_ON: Machine Function Splitter Transformation
; MFS_ON_NO: warning: -fsplit-machine-functions is not valid for
; MFS_ON-NOT: warning:
;; Check that MFS is not on for non-X86 targets.
; MFS_OFF: warning: -fsplit-machine-functions is not valid for
; MFS_OFF_NO: Machine Function Splitter Transformation
; MFS_OFF-NOT: Machine Function Splitter Transformation

define void @foo1(i1 zeroext %0) nounwind !prof !14 !section_prefix !15 {
;; Check that cold block is moved to .text.split.
Expand Down

0 comments on commit b9d079d

Please sign in to comment.