diff options
Diffstat (limited to 'test/Headers')
-rw-r--r-- | test/Headers/Inputs/include/complex.h | 3 | ||||
-rw-r--r-- | test/Headers/Inputs/include/math.h | 1 | ||||
-rw-r--r-- | test/Headers/Inputs/include/stdint.h | 1 | ||||
-rw-r--r-- | test/Headers/altivec-header.c | 6 | ||||
-rw-r--r-- | test/Headers/c11.c | 6 | ||||
-rw-r--r-- | test/Headers/c89.c | 2 | ||||
-rw-r--r-- | test/Headers/cxx11.cpp | 4 | ||||
-rw-r--r-- | test/Headers/limits.cpp | 42 | ||||
-rw-r--r-- | test/Headers/ms-intrin.cpp | 24 | ||||
-rw-r--r-- | test/Headers/ms-null-ms-header-vs-stddef.cpp | 4 | ||||
-rw-r--r-- | test/Headers/ms-wchar.c | 2 | ||||
-rw-r--r-- | test/Headers/tgmath.c | 38 | ||||
-rw-r--r-- | test/Headers/x86-intrinsics-headers.c | 6 | ||||
-rw-r--r-- | test/Headers/x86intrin.c | 91 |
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 |