diff --git a/clang/test/CodeGen/fsplit-machine-functions.c b/clang/test/CodeGen/fsplit-machine-functions.c new file mode 100644 index 0000000000000..dd8e4ff333f20 --- /dev/null +++ b/clang/test/CodeGen/fsplit-machine-functions.c @@ -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; +} diff --git a/clang/test/Driver/fsplit-machine-functions-with-cuda-nvptx.c b/clang/test/Driver/fsplit-machine-functions-with-cuda-nvptx.c index f2b09e13d80b6..aab1179b3e731 100644 --- a/clang/test/Driver/fsplit-machine-functions-with-cuda-nvptx.c +++ b/clang/test/Driver/fsplit-machine-functions-with-cuda-nvptx.c @@ -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" diff --git a/clang/test/Driver/fsplit-machine-functions.c b/clang/test/Driver/fsplit-machine-functions.c index 4ba4e52fb7948..189689f409765 100644 --- a/clang/test/Driver/fsplit-machine-functions.c +++ b/clang/test/Driver/fsplit-machine-functions.c @@ -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" diff --git a/llvm/test/CodeGen/Generic/machine-function-splitter.ll b/llvm/test/CodeGen/Generic/machine-function-splitter.ll index 03934434f3ceb..3003240c373ea 100644 --- a/llvm/test/CodeGen/Generic/machine-function-splitter.ll +++ b/llvm/test/CodeGen/Generic/machine-function-splitter.ll @@ -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.