diff options
author | Logan Chien <tzuhsiang.chien@gmail.com> | 2012-10-10 06:56:20 +0000 |
---|---|---|
committer | Logan Chien <tzuhsiang.chien@gmail.com> | 2012-10-10 06:56:20 +0000 |
commit | 57086ce24895f9a53a3d0eafa32117a6edc4194e (patch) | |
tree | f89375526e6f599152b608120c60e9b93789337d /clang/test/CodeGenCXX/mangle-valist.cpp | |
parent | 05fee08dfa9821279b2d3f805a6303dcb8d86c03 (diff) | |
download | bcm5719-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.cpp | 44 |
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 |