diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2016-04-10 03:19:47 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2016-04-10 03:19:47 +0000 |
commit | 9b5ba547f15224ee2b6106926fa6f3eab3c7fe41 (patch) | |
tree | 3ba37bd60672ac4005a2ce0b8c23c86b50b41445 /clang/test/Frontend/gnu-mcount.c | |
parent | a3e0d45bfd384e31d0af1c2a06fccf0331276849 (diff) | |
download | bcm5719-llvm-9b5ba547f15224ee2b6106926fa6f3eab3c7fe41.tar.gz bcm5719-llvm-9b5ba547f15224ee2b6106926fa6f3eab3c7fe41.zip |
Add support for __gnu_mcount_nc as the pg interface
This adds support to optionally support using `__gnu_mcount_nc` as the mcount
interface rather than `mcount` for Linux and EABI. The other targets do not
provide an implementation for `__gnu_mcount_nc`. This can be activated via the
`-meabi gnu` flag.
Resolves PR23969.
llvm-svn: 265888
Diffstat (limited to 'clang/test/Frontend/gnu-mcount.c')
-rw-r--r-- | clang/test/Frontend/gnu-mcount.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/clang/test/Frontend/gnu-mcount.c b/clang/test/Frontend/gnu-mcount.c new file mode 100644 index 00000000000..059b8d1be54 --- /dev/null +++ b/clang/test/Frontend/gnu-mcount.c @@ -0,0 +1,44 @@ +// RUN: %clang -target armv7-unknown-none-eabi -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI +// RUN: %clang -target armv7-unknown-none-eabi -pg -meabi gnu -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-MEABI-GNU +// RUN: %clang -target armv7-unknown-linux-gnueabi -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI +// RUN: %clang -target armv7-unknown-linux-gnueabi -meabi gnu -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-MEABI-GNU +// RUN: %clang -target armv7-unknown-linux-gnueabihf -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI +// RUN: %clang -target armv7-unknown-linux-gnueabihf -meabi gnu -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-MEABI-GNU +// RUN: %clang -target armv7-unknown-freebsd-gnueabihf -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-FREEBSD +// RUN: %clang -target armv7-unknown-freebsd-gnueabihf -meabi gnu -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-FREEBSD +// RUN: %clang -target armv7-unknown-openbsd-gnueabihf -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-OPENBSD +// RUN: %clang -target armv7-unknown-openbsd-gnueabihf -meabi gnu -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-OPENBSD +// RUN: %clang -target armv7-unknown-netbsd-gnueabihf -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-NETBSD +// RUN: %clang -target armv7-unknown-netbsd-gnueabihf -meabi gnu -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-NETBSD +// RUN: %clang -target armv7-apple-ios -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-IOS +// RUN: %clang -target armv7-apple-ios -pg -meabi gnu -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-IOS +// RUN: %clang -target armv7-unknown-bitrig-gnueabihf -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-BIGRIG +// RUN: %clang -target armv7-unknown-bitrig-gnueabihf -meabi gnu -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-BIGRIG +// RUN: %clang -target armv7-unknown-rtems-gnueabihf -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-RTEMS +// RUN: %clang -target armv7-unknown-rtems-gnueabihf -meabi gnu -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-RTEMS +// RUN: %clang -target armv7-unknown-cloudabi-gnueabihf -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-CLOUDABI +// RUN: %clang -target armv7-unknown-cloudabi-gnueabihf -meabi gnu -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-CLOUDABI + +int f() { + return 0; +} + +// CHECK-LABEL: f +// CHECK-ARM-IOS-NOT: call void @_mcount() +// CHECK-ARM-IOS-NOT: call void @"\01__gnu_mcount_nc"() +// CHECK-ARM-EABI: call void @"\01mcount"() +// CHECK-ARM-EABI-NOT: call void @"\01__gnu_mcount_nc"() +// CHECK-ARM-EABI-FREEBSD: call void @__mcount() +// CHECK-ARM-EABI-FREEBSD-NOT: call void @"\01__gnu_mcount_nc"() +// CHECK-ARM-EABI-NETBSD: call void @_mcount() +// CHECK-ARM-EABI-NETBSD-NOT: call void @"\01__gnu_mcount_nc"() +// CHECK-ARM-EABI-OPENBSD: call void @__mcount() +// CHECK-ARM-EABI-OPENBSD-NOT: call void @"\01__gnu_mcount_nc"() +// CHECK-ARM-EABI-MEABI-GNU-NOT: call void @mcount() +// CHECK-ARM-EABI-MEABI-GNU: call void @"\01__gnu_mcount_nc"() +// CHECK-ARM-EABI-BITRIG: call void @__mcount() +// CHECK-ARM-EABI-BITRIG-NOT: call void @"\01__gnu_mcount_nc"() +// CHECK-ARM-EABI-RTEMS: call void @mcount() +// CHECK-ARM-EABI-RTEMS-NOT: call void @"\01__gnu_mcount_nc"() +// CHECK-ARM-EABI-CLOUDABI: call void @mcount() +// CHECK-ARM-EABI-CLOUDABI-NOT: call void @"\01__gnu_mcount_nc"() |