summaryrefslogtreecommitdiffstats
path: root/test/Headers
diff options
context:
space:
mode:
Diffstat (limited to 'test/Headers')
-rw-r--r--test/Headers/Inputs/include/complex.h3
-rw-r--r--test/Headers/Inputs/include/math.h1
-rw-r--r--test/Headers/Inputs/include/stdint.h1
-rw-r--r--test/Headers/altivec-header.c6
-rw-r--r--test/Headers/c11.c6
-rw-r--r--test/Headers/c89.c2
-rw-r--r--test/Headers/cxx11.cpp4
-rw-r--r--test/Headers/limits.cpp42
-rw-r--r--test/Headers/ms-intrin.cpp24
-rw-r--r--test/Headers/ms-null-ms-header-vs-stddef.cpp4
-rw-r--r--test/Headers/ms-wchar.c2
-rw-r--r--test/Headers/tgmath.c38
-rw-r--r--test/Headers/x86-intrinsics-headers.c6
-rw-r--r--test/Headers/x86intrin.c91
14 files changed, 215 insertions, 15 deletions
diff --git a/test/Headers/Inputs/include/complex.h b/test/Headers/Inputs/include/complex.h
new file mode 100644
index 0000000..1ed5f53
--- /dev/null
+++ b/test/Headers/Inputs/include/complex.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#define complex _Complex
diff --git a/test/Headers/Inputs/include/math.h b/test/Headers/Inputs/include/math.h
new file mode 100644
index 0000000..6f70f09
--- /dev/null
+++ b/test/Headers/Inputs/include/math.h
@@ -0,0 +1 @@
+#pragma once
diff --git a/test/Headers/Inputs/include/stdint.h b/test/Headers/Inputs/include/stdint.h
index 7a1fdde..5bf26a7 100644
--- a/test/Headers/Inputs/include/stdint.h
+++ b/test/Headers/Inputs/include/stdint.h
@@ -10,6 +10,7 @@ typedef unsigned __INT64_TYPE__ uint64_t;
#endif
#ifdef __INTPTR_TYPE__
+typedef __INTPTR_TYPE__ intptr_t;
typedef unsigned __INTPTR_TYPE__ uintptr_t;
#else
#error Every target should have __INTPTR_TYPE__
diff --git a/test/Headers/altivec-header.c b/test/Headers/altivec-header.c
index 085e799..b01cc97 100644
--- a/test/Headers/altivec-header.c
+++ b/test/Headers/altivec-header.c
@@ -1,7 +1,7 @@
// REQUIRES: ppc64-registered-target
-// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -maltivec -ffreestanding -S -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -maltivec -ffreestanding -fno-lax-vector-conversions -S -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -maltivec -ffreestanding -x c++ -S -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -faltivec -ffreestanding -S -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -faltivec -ffreestanding -fno-lax-vector-conversions -S -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -faltivec -ffreestanding -x c++ -S -o - %s | FileCheck %s
#include <altivec.h>
diff --git a/test/Headers/c11.c b/test/Headers/c11.c
index 21f2e4f..11bec19 100644
--- a/test/Headers/c11.c
+++ b/test/Headers/c11.c
@@ -1,6 +1,6 @@
-// RUN: %clang -fsyntax-only -Xclang -verify -std=c11 %s
-// RUN: %clang -fsyntax-only -Xclang -verify -std=c11 -fmodules %s
-// RUN: %clang -fsyntax-only -Xclang -verify -std=c11 -ffreestanding %s
+// RUN: %clang_cc1 -fsyntax-only -verify -std=c11 %s
+// RUN: %clang_cc1 -fsyntax-only -verify -std=c11 -fmodules %s
+// RUN: %clang_cc1 -fsyntax-only -verify -std=c11 -ffreestanding %s
noreturn int f(); // expected-error 1+{{}}
diff --git a/test/Headers/c89.c b/test/Headers/c89.c
index acf01b4..6188df5 100644
--- a/test/Headers/c89.c
+++ b/test/Headers/c89.c
@@ -1,4 +1,4 @@
-// RUN: %clang -target i386-apple-darwin10 -fsyntax-only -Xclang -verify -std=c89 %s
+// RUN: %clang_cc1 -triple i386-apple-darwin10 -target-cpu yonah -fsyntax-only -verify -std=c89 %s
// expected-no-diagnostics
// FIXME: Disable inclusion of mm_malloc.h, our current implementation is broken
diff --git a/test/Headers/cxx11.cpp b/test/Headers/cxx11.cpp
index 54fe350..1a4b640 100644
--- a/test/Headers/cxx11.cpp
+++ b/test/Headers/cxx11.cpp
@@ -1,5 +1,5 @@
-// RUN: %clang -fsyntax-only -std=c++11 %s
-// RUN: %clang -fsyntax-only -std=c++11 -fmodules %s
+// RUN: %clang_cc1 -ffreestanding -fsyntax-only -std=c++11 %s
+// RUN: %clang_cc1 -ffreestanding -fsyntax-only -std=c++11 -fmodules %s
#include <stdalign.h>
diff --git a/test/Headers/limits.cpp b/test/Headers/limits.cpp
new file mode 100644
index 0000000..a78f7fc
--- /dev/null
+++ b/test/Headers/limits.cpp
@@ -0,0 +1,42 @@
+// RUN: %clang_cc1 -ffreestanding -fsyntax-only -verify %s
+// RUN: %clang_cc1 -fno-signed-char -ffreestanding -fsyntax-only -verify %s
+// RUN: %clang_cc1 -std=c++11 -ffreestanding -fsyntax-only -verify %s
+// expected-no-diagnostics
+
+#include <limits.h>
+
+_Static_assert(SCHAR_MAX == -(SCHAR_MIN+1), "");
+_Static_assert(SHRT_MAX == -(SHRT_MIN+1), "");
+_Static_assert(INT_MAX == -(INT_MIN+1), "");
+_Static_assert(LONG_MAX == -(LONG_MIN+1L), "");
+
+_Static_assert(SCHAR_MAX == UCHAR_MAX/2, "");
+_Static_assert(SHRT_MAX == USHRT_MAX/2, "");
+_Static_assert(INT_MAX == UINT_MAX/2, "");
+_Static_assert(LONG_MAX == ULONG_MAX/2, "");
+
+_Static_assert(SCHAR_MIN == -SCHAR_MAX-1, "");
+_Static_assert(SHRT_MIN == -SHRT_MAX-1, "");
+_Static_assert(INT_MIN == -INT_MAX-1, "");
+_Static_assert(LONG_MIN == -LONG_MAX-1L, "");
+
+_Static_assert(UCHAR_MAX == (unsigned char)~0ULL, "");
+_Static_assert(USHRT_MAX == (unsigned short)~0ULL, "");
+_Static_assert(UINT_MAX == (unsigned int)~0ULL, "");
+_Static_assert(ULONG_MAX == (unsigned long)~0ULL, "");
+
+_Static_assert(MB_LEN_MAX >= 1, "");
+
+_Static_assert(CHAR_BIT >= 8, "");
+
+const bool char_is_signed = (char)-1 < (char)0;
+_Static_assert(CHAR_MIN == (char_is_signed ? -CHAR_MAX-1 : 0), "");
+_Static_assert(CHAR_MAX == (char_is_signed ? -(CHAR_MIN+1) : (char)~0ULL), "");
+
+#if __STDC_VERSION__ >= 199901 || __cplusplus >= 201103L
+_Static_assert(LLONG_MAX == -(LLONG_MIN+1LL), "");
+_Static_assert(LLONG_MIN == -LLONG_MAX-1LL, "");
+_Static_assert(ULLONG_MAX == (unsigned long long)~0ULL, "");
+#else
+int LLONG_MIN, LLONG_MAX, ULLONG_MAX; // Not defined.
+#endif
diff --git a/test/Headers/ms-intrin.cpp b/test/Headers/ms-intrin.cpp
new file mode 100644
index 0000000..1bf134e
--- /dev/null
+++ b/test/Headers/ms-intrin.cpp
@@ -0,0 +1,24 @@
+// RUN: %clang_cc1 -triple i386-pc-win32 -target-cpu pentium4 \
+// RUN: -fms-extensions -fms-compatibility -fmsc-version=1700 \
+// RUN: -ffreestanding -verify %s
+
+// Intrin.h needs size_t, but -ffreestanding prevents us from getting it from
+// stddef.h. Work around it with this typedef.
+typedef __SIZE_TYPE__ size_t;
+
+#include <Intrin.h>
+
+// Use some C++ to make sure we closed the extern "C" brackets.
+template <typename T>
+void foo(T V) {}
+
+void bar() {
+ _ReadWriteBarrier(); // expected-warning {{is deprecated: use other intrinsics or C++11 atomics instead}}
+ _ReadBarrier(); // expected-warning {{is deprecated: use other intrinsics or C++11 atomics instead}}
+ _WriteBarrier(); // expected-warning {{is deprecated: use other intrinsics or C++11 atomics instead}}
+ // FIXME: It'd be handy if we didn't have to hardcode the line number in
+ // intrin.h.
+ // expected-note@Intrin.h:754 {{declared here}}
+ // expected-note@Intrin.h:759 {{declared here}}
+ // expected-note@Intrin.h:764 {{declared here}}
+}
diff --git a/test/Headers/ms-null-ms-header-vs-stddef.cpp b/test/Headers/ms-null-ms-header-vs-stddef.cpp
index 7efa871..237ed51 100644
--- a/test/Headers/ms-null-ms-header-vs-stddef.cpp
+++ b/test/Headers/ms-null-ms-header-vs-stddef.cpp
@@ -1,5 +1,5 @@
-// RUN: %clang -fsyntax-only -target i686-pc-win32 %s
-// RUN: %clang -fsyntax-only -target i386-mingw32 %s
+// RUN: %clang_cc1 -fsyntax-only -triple i686-pc-win32 -fms-compatibility -fmsc-version=1700 %s
+// RUN: %clang_cc1 -fsyntax-only -triple i386-mingw32 %s
// Something in MSVC's headers (pulled in e.g. by <crtdefs.h>) defines __null
// to something, mimick that.
diff --git a/test/Headers/ms-wchar.c b/test/Headers/ms-wchar.c
index f015fc7..fee7e72 100644
--- a/test/Headers/ms-wchar.c
+++ b/test/Headers/ms-wchar.c
@@ -1,4 +1,4 @@
-// RUN: %clang -fsyntax-only -target i386-pc-win32 %s
+// RUN: %clang_cc1 -fsyntax-only -triple i386-pc-win32 -fms-compatibility %s
#if defined(_WCHAR_T_DEFINED)
#error "_WCHAR_T_DEFINED should not be defined in C99"
diff --git a/test/Headers/tgmath.c b/test/Headers/tgmath.c
new file mode 100644
index 0000000..4235ae2
--- /dev/null
+++ b/test/Headers/tgmath.c
@@ -0,0 +1,38 @@
+// RUN: %clang_cc1 -fsyntax-only -isystem %S/Inputs/include -verify %s
+// expected-no-diagnostics
+
+#include <tgmath.h>
+
+float f;
+double d;
+long double l;
+
+float complex fc;
+double complex dc;
+long double complex lc;
+
+// creal
+
+_Static_assert(sizeof(creal(f)) == sizeof(f), "");
+_Static_assert(sizeof(creal(d)) == sizeof(d), "");
+_Static_assert(sizeof(creal(l)) == sizeof(l), "");
+
+_Static_assert(sizeof(creal(fc)) == sizeof(f), "");
+_Static_assert(sizeof(creal(dc)) == sizeof(d), "");
+_Static_assert(sizeof(creal(lc)) == sizeof(l), "");
+
+// fabs
+
+_Static_assert(sizeof(fabs(f)) == sizeof(f), "");
+_Static_assert(sizeof(fabs(d)) == sizeof(d), "");
+_Static_assert(sizeof(fabs(l)) == sizeof(l), "");
+
+_Static_assert(sizeof(fabs(fc)) == sizeof(f), "");
+_Static_assert(sizeof(fabs(dc)) == sizeof(d), "");
+_Static_assert(sizeof(fabs(lc)) == sizeof(l), "");
+
+// logb
+
+_Static_assert(sizeof(logb(f)) == sizeof(f), "");
+_Static_assert(sizeof(logb(d)) == sizeof(d), "");
+_Static_assert(sizeof(logb(l)) == sizeof(l), "");
diff --git a/test/Headers/x86-intrinsics-headers.c b/test/Headers/x86-intrinsics-headers.c
index bdffdde..91c4ffa 100644
--- a/test/Headers/x86-intrinsics-headers.c
+++ b/test/Headers/x86-intrinsics-headers.c
@@ -1,6 +1,6 @@
-// RUN: %clang -fsyntax-only -ffreestanding %s
-// RUN: %clang -fsyntax-only -ffreestanding -fno-lax-vector-conversions %s
-// RUN: %clangxx -fsyntax-only -ffreestanding -x c++ %s
+// RUN: %clang_cc1 -fsyntax-only -ffreestanding %s
+// RUN: %clang_cc1 -fsyntax-only -ffreestanding -fno-lax-vector-conversions %s
+// RUN: %clang_cc1 -fsyntax-only -ffreestanding -x c++ %s
#if defined(i386) || defined(__x86_64__)
diff --git a/test/Headers/x86intrin.c b/test/Headers/x86intrin.c
new file mode 100644
index 0000000..d095c00
--- /dev/null
+++ b/test/Headers/x86intrin.c
@@ -0,0 +1,91 @@
+// RUN: %clang_cc1 -fsyntax-only -ffreestanding %s -verify
+// RUN: %clang_cc1 -fsyntax-only -ffreestanding -fno-lax-vector-conversions %s -verify
+// RUN: %clang_cc1 -fsyntax-only -ffreestanding -x c++ %s -verify
+// expected-no-diagnostics
+
+#if defined(i386) || defined(__x86_64__)
+
+// Pretend to enable all features.
+#ifndef __3dNOW__
+#define __3dNOW__
+#endif
+#ifndef __BMI__
+#define __BMI__
+#endif
+#ifndef __BMI2__
+#define __BMI2__
+#endif
+#ifndef __LZCNT__
+#define __LZCNT__
+#endif
+#ifndef __POPCNT__
+#define __POPCNT__
+#endif
+#ifndef __RDSEED__
+#define __RDSEED__
+#endif
+#ifndef __PRFCHW__
+#define __PRFCHW__
+#endif
+#ifndef __SSE4A__
+#define __SSE4A__
+#endif
+#ifndef __FMA4__
+#define __FMA4__
+#endif
+#ifndef __XOP__
+#define __XOP__
+#endif
+#ifndef __F16C__
+#define __F16C__
+#endif
+#ifndef __MMX__
+#define __MMX__
+#endif
+#ifndef __SSE__
+#define __SSE__
+#endif
+#ifndef __SSE2__
+#define __SSE2__
+#endif
+#ifndef __SSE3__
+#define __SSE3__
+#endif
+#ifndef __SSSE3__
+#define __SSSE3__
+#endif
+#ifndef __SSE4_1__
+#define __SSE4_1__
+#endif
+#ifndef __SSE4_2__
+#define __SSE4_2__
+#endif
+#ifndef __AES__
+#define __AES__
+#endif
+#ifndef __AVX__
+#define __AVX__
+#endif
+#ifndef __AVX2__
+#define __AVX2__
+#endif
+#ifndef __BMI__
+#define __BMI__
+#endif
+#ifndef __BMI2__
+#define __BMI2__
+#endif
+#ifndef __LZCNT__
+#define __LZCNT__
+#endif
+#ifndef __FMA__
+#define __FMA__
+#endif
+#ifndef __RDRND__
+#define __RDRND__
+#endif
+
+// Now include the metaheader that includes all x86 intrinsic headers.
+#include <x86intrin.h>
+
+#endif
OpenPOWER on IntegriCloud