aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Basic/Targets.cpp7
-rw-r--r--test/Driver/le32-unknown-nacl.cpp17
2 files changed, 17 insertions, 7 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index fb1a08e09f..bff4ac8d5c 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -2877,7 +2877,12 @@ public:
unsigned &NumRecords) const {
}
virtual const char *getVAListDeclaration() const {
- return "typedef void* __builtin_va_list;";
+ return "typedef struct __va_list_tag {"
+ " void* ptr;"
+ " void* padding1;"
+ " void* padding2;"
+ " void* padding3;"
+ "} __builtin_va_list[1];";
}
virtual void getGCCRegNames(const char * const *&Names,
unsigned &NumNames) const;
diff --git a/test/Driver/le32-unknown-nacl.cpp b/test/Driver/le32-unknown-nacl.cpp
index 2ec2bd538f..6f2f79d11c 100644
--- a/test/Driver/le32-unknown-nacl.cpp
+++ b/test/Driver/le32-unknown-nacl.cpp
@@ -1,9 +1,7 @@
-// RUN: %clang -ccc-host-triple le32-unknown-nacl -ccc-echo %s -emit-llvm -c -o /tmp/OUTPUTNAME 2> %t.log
+// RUN: %clang -ccc-host-triple le32-unknown-nacl -ccc-echo %s -emit-llvm -c 2>&1 | FileCheck %s -check-prefix=ECHO
+// RUN: %clang -ccc-host-triple le32-unknown-nacl %s -emit-llvm -S -c -o - | FileCheck %s
-// Make sure we used clang.
-// RUN: grep 'clang\(-[0-9.]\+\)\?\(\.[Ee][Xx][Ee]\)\?" -cc1 .*le32-unknown-nacl.c' %t.log
-
-// RUN: llvm-dis < /tmp/OUTPUTNAME | FileCheck %s
+// ECHO: clang{{.*}} -cc1 {{.*}}le32-unknown-nacl.c
// Check platform defines
#include <stddef.h>
@@ -69,13 +67,17 @@ float check_float() { return 0; }
// CHECK: double @check_double()
double check_double() { return 0; }
+// CHECK: double @check_longdouble()
+long double check_longdouble() { return 0; }
+
}
-// Check that pointers are 32-bit.
+#include <stdarg.h>
template<int> void Switch();
template<> void Switch<4>();
template<> void Switch<8>();
+template<> void Switch<16>();
void check_pointer_size() {
// CHECK: SwitchILi4
@@ -83,4 +85,7 @@ void check_pointer_size() {
// CHECK: SwitchILi8
Switch<sizeof(long long)>();
+
+ // CHECK: SwitchILi16
+ Switch<sizeof(va_list)>();
}