summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/mangle-valist.cpp
diff options
context:
space:
mode:
authorLogan Chien <tzuhsiang.chien@gmail.com>2012-10-10 06:56:20 +0000
committerLogan Chien <tzuhsiang.chien@gmail.com>2012-10-10 06:56:20 +0000
commit57086ce24895f9a53a3d0eafa32117a6edc4194e (patch)
treef89375526e6f599152b608120c60e9b93789337d /clang/test/CodeGenCXX/mangle-valist.cpp
parent05fee08dfa9821279b2d3f805a6303dcb8d86c03 (diff)
downloadbcm5719-llvm-57086ce24895f9a53a3d0eafa32117a6edc4194e.tar.gz
bcm5719-llvm-57086ce24895f9a53a3d0eafa32117a6edc4194e.zip
Fix PR 11709: Change the definition of va_list to meet AAPCS requirement
AAPCS ABI Section 7.1.4 [1] specifies that va_list should be defined as struct __va_list { void *__ap;}; And in C++, it is defined in namespace std. [1] http://infocenter.arm.com/help/topic /com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf Patch by Weiming Zhao. llvm-svn: 165609
Diffstat (limited to 'clang/test/CodeGenCXX/mangle-valist.cpp')
-rw-r--r--clang/test/CodeGenCXX/mangle-valist.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/mangle-valist.cpp b/clang/test/CodeGenCXX/mangle-valist.cpp
new file mode 100644
index 00000000000..73fd58e75e8
--- /dev/null
+++ b/clang/test/CodeGenCXX/mangle-valist.cpp
@@ -0,0 +1,44 @@
+#include "stdarg.h"
+
+namespace test1 {
+ void test1(const char *fmt, va_list ap) {
+ }
+}
+
+class Test2 {
+public:
+ void test2(const char *fmt, va_list ap);
+};
+
+void Test2::test2(const char *fmt, va_list ap) {
+}
+
+// RUN: %clang_cc1 %s -emit-llvm -o - \
+// RUN: -triple armv7-unknown-linux \
+// RUN: | FileCheck -check-prefix=MANGLE-ARM-AAPCS %s
+// CHECK-MANGLE-ARM-AAPCS: @_ZN5test15test1EPKcSt9__va_list
+// CHECK-MANGLE-ARM-AAPCS: @_ZN5Test25test2EPKcSt9__va_list
+
+// RUN: %clang_cc1 %s -emit-llvm -o - \
+// RUN: -triple armv7-unknown-linux -target-abi apcs-gnu \
+// RUN: | FileCheck -check-prefix=MANGLE-ARM-APCS %s
+// CHECK-MANGLE-ARM-APCS: @_ZN5test15test1EPKcPv
+// CHECK-MANGLE-ARM-APCS: @_ZN5Test25test2EPKcPv
+
+// RUN: %clang_cc1 %s -emit-llvm -o - \
+// RUN: -triple mipsel-unknown-linux \
+// RUN: | FileCheck -check-prefix=MANGLE-MIPSEL %s
+// CHECK-MANGLE-MIPSEL: @_ZN5test15test1EPKcPv
+// CHECK-MANGLE-MIPSEL: @_ZN5Test25test2EPKcPv
+
+// RUN: %clang_cc1 %s -emit-llvm -o - \
+// RUN: -triple i686-unknown-linux \
+// RUN: | FileCheck -check-prefix=MANGLE-X86 %s
+// CHECK-MANGLE-X86: @_ZN5test15test1EPKcPc
+// CHECK-MANGLE-X86: @_ZN5Test25test2EPKcPc
+
+// RUN: %clang_cc1 %s -emit-llvm -o - \
+// RUN: -triple x86_64-unknown-linux \
+// RUN: | FileCheck -check-prefix=MANGLE-X86-64 %s
+// CHECK-MANGLE-X86-64: @_ZN5test15test1EPKcP13__va_list_tag
+// CHECK-MANGLE-X86-64: @_ZN5Test25test2EPKcP13__va_list_tag
OpenPOWER on IntegriCloud