diff options
Diffstat (limited to 'test/Preprocessor')
-rw-r--r-- | test/Preprocessor/comment_save_if.c | 1 | ||||
-rw-r--r-- | test/Preprocessor/cxx_true.cpp | 2 | ||||
-rw-r--r-- | test/Preprocessor/expr_define_expansion.c | 1 | ||||
-rw-r--r-- | test/Preprocessor/expr_multichar.c | 1 | ||||
-rw-r--r-- | test/Preprocessor/has_include.c | 32 | ||||
-rw-r--r-- | test/Preprocessor/import_self.c | 2 | ||||
-rw-r--r-- | test/Preprocessor/init.c | 293 | ||||
-rw-r--r-- | test/Preprocessor/macro_arg_directive.c | 7 | ||||
-rw-r--r-- | test/Preprocessor/macro_fn_comma_swallow2.c | 64 | ||||
-rw-r--r-- | test/Preprocessor/macro_paste_identifier_error.c | 1 | ||||
-rw-r--r-- | test/Preprocessor/microsoft-ext.c | 24 | ||||
-rw-r--r-- | test/Preprocessor/objc-pp.m | 1 | ||||
-rw-r--r-- | test/Preprocessor/optimize.c | 3 | ||||
-rw-r--r-- | test/Preprocessor/pr13851.c | 11 | ||||
-rw-r--r-- | test/Preprocessor/pragma-pushpop-macro.c | 19 | ||||
-rw-r--r-- | test/Preprocessor/pragma_sysheader.c | 3 | ||||
-rw-r--r-- | test/Preprocessor/predefined-arch-macros.c | 2 | ||||
-rw-r--r-- | test/Preprocessor/user_defined_system_framework.c | 3 |
18 files changed, 421 insertions, 49 deletions
diff --git a/test/Preprocessor/comment_save_if.c b/test/Preprocessor/comment_save_if.c index 4946122a3f0c..b972d914ebdb 100644 --- a/test/Preprocessor/comment_save_if.c +++ b/test/Preprocessor/comment_save_if.c @@ -1,4 +1,5 @@ // RUN: %clang_cc1 %s -E -CC -pedantic -verify +// expected-no-diagnostics #if 1 /*bar */ diff --git a/test/Preprocessor/cxx_true.cpp b/test/Preprocessor/cxx_true.cpp index b123e0cb681a..39cb349b2a81 100644 --- a/test/Preprocessor/cxx_true.cpp +++ b/test/Preprocessor/cxx_true.cpp @@ -1,7 +1,9 @@ /* RUN: %clang_cc1 -E %s -x c++ | grep block_1 RUN: %clang_cc1 -E %s -x c++ | not grep block_2 RUN: %clang_cc1 -E %s -x c | not grep block + RUN: %clang_cc1 -E %s -x c++ -verify -Wundef */ +// expected-no-diagnostics #if true block_1 diff --git a/test/Preprocessor/expr_define_expansion.c b/test/Preprocessor/expr_define_expansion.c index 38c0384092ae..3e5a2c4b0e67 100644 --- a/test/Preprocessor/expr_define_expansion.c +++ b/test/Preprocessor/expr_define_expansion.c @@ -1,4 +1,5 @@ // RUN: %clang_cc1 %s -E -CC -pedantic -verify +// expected-no-diagnostics #define FOO && 1 #if defined FOO FOO diff --git a/test/Preprocessor/expr_multichar.c b/test/Preprocessor/expr_multichar.c index 8ab12d9ab8aa..39155e41501e 100644 --- a/test/Preprocessor/expr_multichar.c +++ b/test/Preprocessor/expr_multichar.c @@ -1,4 +1,5 @@ // RUN: %clang_cc1 < %s -E -verify -triple i686-pc-linux-gnu +// expected-no-diagnostics #if (('1234' >> 24) != '1') #error Bad multichar constant calculation! diff --git a/test/Preprocessor/has_include.c b/test/Preprocessor/has_include.c index 13c8d566223f..10f7795fc34a 100644 --- a/test/Preprocessor/has_include.c +++ b/test/Preprocessor/has_include.c @@ -67,7 +67,7 @@ // Try badly formed expressions. // FIXME: We can recover better in almost all of these cases. (PR13335) -// expected-error@+1 {{missing '(' after '__has_include'}} expected-error@+1 {{expected end of line}} +// expected-error@+1 {{missing '(' after '__has_include'}} #if __has_include "stdint.h") #endif @@ -83,11 +83,11 @@ #if __has_include) #endif -// expected-error@+1 {{missing '(' after '__has_include'}} expected-error@+1 {{token is not a valid binary operator in a preprocessor subexpression}} +// expected-error@+1 {{missing '(' after '__has_include'}} #if __has_include<stdint.h>) #endif -// expected-error@+1 {{expected "FILENAME" or <FILENAME>}} expected-warning@+1 {{missing terminating '"' character}} +// expected-error@+1 {{expected "FILENAME" or <FILENAME>}} expected-warning@+1 {{missing terminating '"' character}} expected-error@+1 {{invalid token at start of a preprocessor expression}} #if __has_include("stdint.h) #endif @@ -99,11 +99,25 @@ #if __has_include(stdint.h>) #endif +// expected-error@+1 {{missing '(' after '__has_include'}} +__has_include + +// expected-error@+1 {{missing ')' after '__has_include'}} // expected-error@+1 {{expected value in expression}} // expected-note@+1 {{to match this '('}} +#if __has_include("stdint.h" +#endif -// FIXME: These test cases cause the compiler to crash. (PR13334) -//#if __has_include("stdint.h" -//#if __has_include( -//#if __has_include -//#if __has_include(<stdint.h> -//#if __has_include(<stdint.h) +// expected-error@+1 {{expected "FILENAME" or <FILENAME>}} // expected-error@+1 {{expected value in expression}} +#if __has_include( +#endif +// expected-error@+1 {{missing '(' after '__has_include'}} // expected-error@+1 {{expected value in expression}} +#if __has_include +#endif + +// expected-error@+1 {{missing ')' after '__has_include'}} // expected-error@+1 {{expected value in expression}} // expected-note@+1 {{to match this '('}} +#if __has_include(<stdint.h> +#endif + +// expected-error@+1 {{expected "FILENAME" or <FILENAME>}} // expected-error@+1 {{expected value in expression}} +#if __has_include(<stdint.h) +#endif diff --git a/test/Preprocessor/import_self.c b/test/Preprocessor/import_self.c index 8ba0b19c94ae..494d95f0f8d6 100644 --- a/test/Preprocessor/import_self.c +++ b/test/Preprocessor/import_self.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -E -I. %s | grep BODY_OF_FILE | wc -l | grep 1 +// RUN: %clang_cc1 -E -I%S %s | grep BODY_OF_FILE | wc -l | grep 1 // This #import should have no effect, as we're importing the current file. #import <import_self.c> diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index e7321e063099..33a21a3ef9d6 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -212,19 +212,19 @@ // ARM:#define __INTPTR_TYPE__ long int // ARM:#define __INTPTR_WIDTH__ 32 // ARM:#define __INT_MAX__ 2147483647 -// ARM:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324 +// ARM:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L // ARM:#define __LDBL_DIG__ 15 -// ARM:#define __LDBL_EPSILON__ 2.2204460492503131e-16 +// ARM:#define __LDBL_EPSILON__ 2.2204460492503131e-16L // ARM:#define __LDBL_HAS_DENORM__ 1 // ARM:#define __LDBL_HAS_INFINITY__ 1 // ARM:#define __LDBL_HAS_QUIET_NAN__ 1 // ARM:#define __LDBL_MANT_DIG__ 53 // ARM:#define __LDBL_MAX_10_EXP__ 308 // ARM:#define __LDBL_MAX_EXP__ 1024 -// ARM:#define __LDBL_MAX__ 1.7976931348623157e+308 +// ARM:#define __LDBL_MAX__ 1.7976931348623157e+308L // ARM:#define __LDBL_MIN_10_EXP__ (-307) // ARM:#define __LDBL_MIN_EXP__ (-1021) -// ARM:#define __LDBL_MIN__ 2.2250738585072014e-308 +// ARM:#define __LDBL_MIN__ 2.2250738585072014e-308L // ARM:#define __LITTLE_ENDIAN__ 1 // ARM:#define __LONG_LONG_MAX__ 9223372036854775807LL // ARM:#define __LONG_MAX__ 2147483647L @@ -260,6 +260,215 @@ // ARM:#define __WINT_WIDTH__ 32 // ARM:#define __arm 1 // ARM:#define __arm__ 1 + +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-none-linux-gnueabi -target-feature +soft-float -target-feature +soft-float-abi < /dev/null | FileCheck -check-prefix ARMEABISOFTFP %s +// +// ARM-NOT:#define _LP64 +// ARMEABISOFTFP:#define __APCS_32__ 1 +// ARMEABISOFTFP:#define __ARMEL__ 1 +// ARMEABISOFTFP:#define __ARM_ARCH 6 +// ARMEABISOFTFP:#define __ARM_ARCH_6J__ 1 +// ARMEABISOFTFP:#define __ARM_EABI__ 1 +// ARMEABISOFTFP:#define __ARM_PCS 1 +// ARMEABISOFTFP-NOT:#define __ARM_PCS_VFP 1 +// ARMEABISOFTFP:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ +// ARMEABISOFTFP:#define __CHAR16_TYPE__ unsigned short +// ARMEABISOFTFP:#define __CHAR32_TYPE__ unsigned int +// ARMEABISOFTFP:#define __CHAR_BIT__ 8 +// ARMEABISOFTFP:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324 +// ARMEABISOFTFP:#define __DBL_DIG__ 15 +// ARMEABISOFTFP:#define __DBL_EPSILON__ 2.2204460492503131e-16 +// ARMEABISOFTFP:#define __DBL_HAS_DENORM__ 1 +// ARMEABISOFTFP:#define __DBL_HAS_INFINITY__ 1 +// ARMEABISOFTFP:#define __DBL_HAS_QUIET_NAN__ 1 +// ARMEABISOFTFP:#define __DBL_MANT_DIG__ 53 +// ARMEABISOFTFP:#define __DBL_MAX_10_EXP__ 308 +// ARMEABISOFTFP:#define __DBL_MAX_EXP__ 1024 +// ARMEABISOFTFP:#define __DBL_MAX__ 1.7976931348623157e+308 +// ARMEABISOFTFP:#define __DBL_MIN_10_EXP__ (-307) +// ARMEABISOFTFP:#define __DBL_MIN_EXP__ (-1021) +// ARMEABISOFTFP:#define __DBL_MIN__ 2.2250738585072014e-308 +// ARMEABISOFTFP:#define __DECIMAL_DIG__ 17 +// ARMEABISOFTFP:#define __FLT_DENORM_MIN__ 1.40129846e-45F +// ARMEABISOFTFP:#define __FLT_DIG__ 6 +// ARMEABISOFTFP:#define __FLT_EPSILON__ 1.19209290e-7F +// ARMEABISOFTFP:#define __FLT_EVAL_METHOD__ 0 +// ARMEABISOFTFP:#define __FLT_HAS_DENORM__ 1 +// ARMEABISOFTFP:#define __FLT_HAS_INFINITY__ 1 +// ARMEABISOFTFP:#define __FLT_HAS_QUIET_NAN__ 1 +// ARMEABISOFTFP:#define __FLT_MANT_DIG__ 24 +// ARMEABISOFTFP:#define __FLT_MAX_10_EXP__ 38 +// ARMEABISOFTFP:#define __FLT_MAX_EXP__ 128 +// ARMEABISOFTFP:#define __FLT_MAX__ 3.40282347e+38F +// ARMEABISOFTFP:#define __FLT_MIN_10_EXP__ (-37) +// ARMEABISOFTFP:#define __FLT_MIN_EXP__ (-125) +// ARMEABISOFTFP:#define __FLT_MIN__ 1.17549435e-38F +// ARMEABISOFTFP:#define __FLT_RADIX__ 2 +// ARMEABISOFTFP:#define __INT16_TYPE__ short +// ARMEABISOFTFP:#define __INT32_TYPE__ int +// ARMEABISOFTFP:#define __INT64_C_SUFFIX__ LL +// ARMEABISOFTFP:#define __INT64_TYPE__ long long int +// ARMEABISOFTFP:#define __INT8_TYPE__ char +// ARMEABISOFTFP:#define __INTMAX_MAX__ 9223372036854775807LL +// ARMEABISOFTFP:#define __INTMAX_TYPE__ long long int +// ARMEABISOFTFP:#define __INTMAX_WIDTH__ 64 +// ARMEABISOFTFP:#define __INTPTR_TYPE__ long int +// ARMEABISOFTFP:#define __INTPTR_WIDTH__ 32 +// ARMEABISOFTFP:#define __INT_MAX__ 2147483647 +// ARMEABISOFTFP:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L +// ARMEABISOFTFP:#define __LDBL_DIG__ 15 +// ARMEABISOFTFP:#define __LDBL_EPSILON__ 2.2204460492503131e-16L +// ARMEABISOFTFP:#define __LDBL_HAS_DENORM__ 1 +// ARMEABISOFTFP:#define __LDBL_HAS_INFINITY__ 1 +// ARMEABISOFTFP:#define __LDBL_HAS_QUIET_NAN__ 1 +// ARMEABISOFTFP:#define __LDBL_MANT_DIG__ 53 +// ARMEABISOFTFP:#define __LDBL_MAX_10_EXP__ 308 +// ARMEABISOFTFP:#define __LDBL_MAX_EXP__ 1024 +// ARMEABISOFTFP:#define __LDBL_MAX__ 1.7976931348623157e+308L +// ARMEABISOFTFP:#define __LDBL_MIN_10_EXP__ (-307) +// ARMEABISOFTFP:#define __LDBL_MIN_EXP__ (-1021) +// ARMEABISOFTFP:#define __LDBL_MIN__ 2.2250738585072014e-308L +// ARMEABISOFTFP:#define __LITTLE_ENDIAN__ 1 +// ARMEABISOFTFP:#define __LONG_LONG_MAX__ 9223372036854775807LL +// ARMEABISOFTFP:#define __LONG_MAX__ 2147483647L +// ARMEABISOFTFP-NOT:#define __LP64__ +// ARMEABISOFTFP:#define __POINTER_WIDTH__ 32 +// ARMEABISOFTFP:#define __PTRDIFF_TYPE__ int +// ARMEABISOFTFP:#define __PTRDIFF_WIDTH__ 32 +// ARMEABISOFTFP:#define __REGISTER_PREFIX__ +// ARMEABISOFTFP:#define __SCHAR_MAX__ 127 +// ARMEABISOFTFP:#define __SHRT_MAX__ 32767 +// ARMEABISOFTFP:#define __SIG_ATOMIC_WIDTH__ 32 +// ARMEABISOFTFP:#define __SIZEOF_DOUBLE__ 8 +// ARMEABISOFTFP:#define __SIZEOF_FLOAT__ 4 +// ARMEABISOFTFP:#define __SIZEOF_INT__ 4 +// ARMEABISOFTFP:#define __SIZEOF_LONG_DOUBLE__ 8 +// ARMEABISOFTFP:#define __SIZEOF_LONG_LONG__ 8 +// ARMEABISOFTFP:#define __SIZEOF_LONG__ 4 +// ARMEABISOFTFP:#define __SIZEOF_POINTER__ 4 +// ARMEABISOFTFP:#define __SIZEOF_PTRDIFF_T__ 4 +// ARMEABISOFTFP:#define __SIZEOF_SHORT__ 2 +// ARMEABISOFTFP:#define __SIZEOF_SIZE_T__ 4 +// ARMEABISOFTFP:#define __SIZEOF_WCHAR_T__ 4 +// ARMEABISOFTFP:#define __SIZEOF_WINT_T__ 4 +// ARMEABISOFTFP:#define __SIZE_TYPE__ unsigned int +// ARMEABISOFTFP:#define __SIZE_WIDTH__ 32 +// ARMEABISOFTFP:#define __SOFTFP__ 1 +// ARMEABISOFTFP:#define __THUMB_INTERWORK__ 1 +// ARMEABISOFTFP:#define __UINTMAX_TYPE__ long long unsigned int +// ARMEABISOFTFP:#define __USER_LABEL_PREFIX__ +// ARMEABISOFTFP:#define __WCHAR_MAX__ 4294967295U +// ARMEABISOFTFP:#define __WCHAR_TYPE__ unsigned int +// ARMEABISOFTFP:#define __WCHAR_WIDTH__ 32 +// ARMEABISOFTFP:#define __WINT_TYPE__ unsigned int +// ARMEABISOFTFP:#define __WINT_WIDTH__ 32 +// ARMEABISOFTFP:#define __arm 1 +// ARMEABISOFTFP:#define __arm__ 1 + +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-none-linux-gnueabi < /dev/null | FileCheck -check-prefix ARMEABIHARDFP %s +// +// ARM-NOT:#define _LP64 +// ARMEABIHARDFP:#define __APCS_32__ 1 +// ARMEABIHARDFP:#define __ARMEL__ 1 +// ARMEABIHARDFP:#define __ARM_ARCH 6 +// ARMEABIHARDFP:#define __ARM_ARCH_6J__ 1 +// ARMEABIHARDFP:#define __ARM_EABI__ 1 +// ARMEABIHARDFP:#define __ARM_PCS 1 +// ARMEABIHARDFP:#define __ARM_PCS_VFP 1 +// ARMEABIHARDFP:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ +// ARMEABIHARDFP:#define __CHAR16_TYPE__ unsigned short +// ARMEABIHARDFP:#define __CHAR32_TYPE__ unsigned int +// ARMEABIHARDFP:#define __CHAR_BIT__ 8 +// ARMEABIHARDFP:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324 +// ARMEABIHARDFP:#define __DBL_DIG__ 15 +// ARMEABIHARDFP:#define __DBL_EPSILON__ 2.2204460492503131e-16 +// ARMEABIHARDFP:#define __DBL_HAS_DENORM__ 1 +// ARMEABIHARDFP:#define __DBL_HAS_INFINITY__ 1 +// ARMEABIHARDFP:#define __DBL_HAS_QUIET_NAN__ 1 +// ARMEABIHARDFP:#define __DBL_MANT_DIG__ 53 +// ARMEABIHARDFP:#define __DBL_MAX_10_EXP__ 308 +// ARMEABIHARDFP:#define __DBL_MAX_EXP__ 1024 +// ARMEABIHARDFP:#define __DBL_MAX__ 1.7976931348623157e+308 +// ARMEABIHARDFP:#define __DBL_MIN_10_EXP__ (-307) +// ARMEABIHARDFP:#define __DBL_MIN_EXP__ (-1021) +// ARMEABIHARDFP:#define __DBL_MIN__ 2.2250738585072014e-308 +// ARMEABIHARDFP:#define __DECIMAL_DIG__ 17 +// ARMEABIHARDFP:#define __FLT_DENORM_MIN__ 1.40129846e-45F +// ARMEABIHARDFP:#define __FLT_DIG__ 6 +// ARMEABIHARDFP:#define __FLT_EPSILON__ 1.19209290e-7F +// ARMEABIHARDFP:#define __FLT_EVAL_METHOD__ 0 +// ARMEABIHARDFP:#define __FLT_HAS_DENORM__ 1 +// ARMEABIHARDFP:#define __FLT_HAS_INFINITY__ 1 +// ARMEABIHARDFP:#define __FLT_HAS_QUIET_NAN__ 1 +// ARMEABIHARDFP:#define __FLT_MANT_DIG__ 24 +// ARMEABIHARDFP:#define __FLT_MAX_10_EXP__ 38 +// ARMEABIHARDFP:#define __FLT_MAX_EXP__ 128 +// ARMEABIHARDFP:#define __FLT_MAX__ 3.40282347e+38F +// ARMEABIHARDFP:#define __FLT_MIN_10_EXP__ (-37) +// ARMEABIHARDFP:#define __FLT_MIN_EXP__ (-125) +// ARMEABIHARDFP:#define __FLT_MIN__ 1.17549435e-38F +// ARMEABIHARDFP:#define __FLT_RADIX__ 2 +// ARMEABIHARDFP:#define __INT16_TYPE__ short +// ARMEABIHARDFP:#define __INT32_TYPE__ int +// ARMEABIHARDFP:#define __INT64_C_SUFFIX__ LL +// ARMEABIHARDFP:#define __INT64_TYPE__ long long int +// ARMEABIHARDFP:#define __INT8_TYPE__ char +// ARMEABIHARDFP:#define __INTMAX_MAX__ 9223372036854775807LL +// ARMEABIHARDFP:#define __INTMAX_TYPE__ long long int +// ARMEABIHARDFP:#define __INTMAX_WIDTH__ 64 +// ARMEABIHARDFP:#define __INTPTR_TYPE__ long int +// ARMEABIHARDFP:#define __INTPTR_WIDTH__ 32 +// ARMEABIHARDFP:#define __INT_MAX__ 2147483647 +// ARMEABIHARDFP:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L +// ARMEABIHARDFP:#define __LDBL_DIG__ 15 +// ARMEABIHARDFP:#define __LDBL_EPSILON__ 2.2204460492503131e-16L +// ARMEABIHARDFP:#define __LDBL_HAS_DENORM__ 1 +// ARMEABIHARDFP:#define __LDBL_HAS_INFINITY__ 1 +// ARMEABIHARDFP:#define __LDBL_HAS_QUIET_NAN__ 1 +// ARMEABIHARDFP:#define __LDBL_MANT_DIG__ 53 +// ARMEABIHARDFP:#define __LDBL_MAX_10_EXP__ 308 +// ARMEABIHARDFP:#define __LDBL_MAX_EXP__ 1024 +// ARMEABIHARDFP:#define __LDBL_MAX__ 1.7976931348623157e+308L +// ARMEABIHARDFP:#define __LDBL_MIN_10_EXP__ (-307) +// ARMEABIHARDFP:#define __LDBL_MIN_EXP__ (-1021) +// ARMEABIHARDFP:#define __LDBL_MIN__ 2.2250738585072014e-308L +// ARMEABIHARDFP:#define __LITTLE_ENDIAN__ 1 +// ARMEABIHARDFP:#define __LONG_LONG_MAX__ 9223372036854775807LL +// ARMEABIHARDFP:#define __LONG_MAX__ 2147483647L +// ARMEABIHARDFP-NOT:#define __LP64__ +// ARMEABIHARDFP:#define __POINTER_WIDTH__ 32 +// ARMEABIHARDFP:#define __PTRDIFF_TYPE__ int +// ARMEABIHARDFP:#define __PTRDIFF_WIDTH__ 32 +// ARMEABIHARDFP:#define __REGISTER_PREFIX__ +// ARMEABIHARDFP:#define __SCHAR_MAX__ 127 +// ARMEABIHARDFP:#define __SHRT_MAX__ 32767 +// ARMEABIHARDFP:#define __SIG_ATOMIC_WIDTH__ 32 +// ARMEABIHARDFP:#define __SIZEOF_DOUBLE__ 8 +// ARMEABIHARDFP:#define __SIZEOF_FLOAT__ 4 +// ARMEABIHARDFP:#define __SIZEOF_INT__ 4 +// ARMEABIHARDFP:#define __SIZEOF_LONG_DOUBLE__ 8 +// ARMEABIHARDFP:#define __SIZEOF_LONG_LONG__ 8 +// ARMEABIHARDFP:#define __SIZEOF_LONG__ 4 +// ARMEABIHARDFP:#define __SIZEOF_POINTER__ 4 +// ARMEABIHARDFP:#define __SIZEOF_PTRDIFF_T__ 4 +// ARMEABIHARDFP:#define __SIZEOF_SHORT__ 2 +// ARMEABIHARDFP:#define __SIZEOF_SIZE_T__ 4 +// ARMEABIHARDFP:#define __SIZEOF_WCHAR_T__ 4 +// ARMEABIHARDFP:#define __SIZEOF_WINT_T__ 4 +// ARMEABIHARDFP:#define __SIZE_TYPE__ unsigned int +// ARMEABIHARDFP:#define __SIZE_WIDTH__ 32 +// ARMEABIHARDFP-NOT:#define __SOFTFP__ 1 +// ARMEABIHARDFP:#define __THUMB_INTERWORK__ 1 +// ARMEABIHARDFP:#define __UINTMAX_TYPE__ long long unsigned int +// ARMEABIHARDFP:#define __USER_LABEL_PREFIX__ +// ARMEABIHARDFP:#define __WCHAR_MAX__ 4294967295U +// ARMEABIHARDFP:#define __WCHAR_TYPE__ unsigned int +// ARMEABIHARDFP:#define __WCHAR_WIDTH__ 32 +// ARMEABIHARDFP:#define __WINT_TYPE__ unsigned int +// ARMEABIHARDFP:#define __WINT_WIDTH__ 32 +// ARMEABIHARDFP:#define __arm 1 +// ARMEABIHARDFP:#define __arm__ 1 + // // RUN: %clang_cc1 -E -dM -ffreestanding -triple=i386-none-none < /dev/null | FileCheck -check-prefix I386 %s // @@ -461,6 +670,8 @@ // MIPS32BE:#define _ABIO32 1 // MIPS32BE-NOT:#define _LP64 // MIPS32BE:#define _MIPSEB 1 +// MIPS32BE:#define _MIPS_ARCH "mips32" +// MIPS32BE:#define _MIPS_ARCH_MIPS32 1 // MIPS32BE:#define _MIPS_SIM _ABIO32 // MIPS32BE:#define _MIPS_SZINT 32 // MIPS32BE:#define _MIPS_SZLONG 32 @@ -510,19 +721,19 @@ // MIPS32BE:#define __INTPTR_TYPE__ long int // MIPS32BE:#define __INTPTR_WIDTH__ 32 // MIPS32BE:#define __INT_MAX__ 2147483647 -// MIPS32BE:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324 +// MIPS32BE:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L // MIPS32BE:#define __LDBL_DIG__ 15 -// MIPS32BE:#define __LDBL_EPSILON__ 2.2204460492503131e-16 +// MIPS32BE:#define __LDBL_EPSILON__ 2.2204460492503131e-16L // MIPS32BE:#define __LDBL_HAS_DENORM__ 1 // MIPS32BE:#define __LDBL_HAS_INFINITY__ 1 // MIPS32BE:#define __LDBL_HAS_QUIET_NAN__ 1 // MIPS32BE:#define __LDBL_MANT_DIG__ 53 // MIPS32BE:#define __LDBL_MAX_10_EXP__ 308 // MIPS32BE:#define __LDBL_MAX_EXP__ 1024 -// MIPS32BE:#define __LDBL_MAX__ 1.7976931348623157e+308 +// MIPS32BE:#define __LDBL_MAX__ 1.7976931348623157e+308L // MIPS32BE:#define __LDBL_MIN_10_EXP__ (-307) // MIPS32BE:#define __LDBL_MIN_EXP__ (-1021) -// MIPS32BE:#define __LDBL_MIN__ 2.2250738585072014e-308 +// MIPS32BE:#define __LDBL_MIN__ 2.2250738585072014e-308L // MIPS32BE:#define __LONG_LONG_MAX__ 9223372036854775807LL // MIPS32BE:#define __LONG_MAX__ 2147483647L // MIPS32BE-NOT:#define __LP64__ @@ -575,6 +786,8 @@ // MIPS32EL:#define _ABIO32 1 // MIPS32EL-NOT:#define _LP64 // MIPS32EL:#define _MIPSEL 1 +// MIPS32EL:#define _MIPS_ARCH "mips32" +// MIPS32EL:#define _MIPS_ARCH_MIPS32 1 // MIPS32EL:#define _MIPS_SIM _ABIO32 // MIPS32EL:#define _MIPS_SZINT 32 // MIPS32EL:#define _MIPS_SZLONG 32 @@ -624,19 +837,19 @@ // MIPS32EL:#define __INTPTR_TYPE__ long int // MIPS32EL:#define __INTPTR_WIDTH__ 32 // MIPS32EL:#define __INT_MAX__ 2147483647 -// MIPS32EL:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324 +// MIPS32EL:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L // MIPS32EL:#define __LDBL_DIG__ 15 -// MIPS32EL:#define __LDBL_EPSILON__ 2.2204460492503131e-16 +// MIPS32EL:#define __LDBL_EPSILON__ 2.2204460492503131e-16L // MIPS32EL:#define __LDBL_HAS_DENORM__ 1 // MIPS32EL:#define __LDBL_HAS_INFINITY__ 1 // MIPS32EL:#define __LDBL_HAS_QUIET_NAN__ 1 // MIPS32EL:#define __LDBL_MANT_DIG__ 53 // MIPS32EL:#define __LDBL_MAX_10_EXP__ 308 // MIPS32EL:#define __LDBL_MAX_EXP__ 1024 -// MIPS32EL:#define __LDBL_MAX__ 1.7976931348623157e+308 +// MIPS32EL:#define __LDBL_MAX__ 1.7976931348623157e+308L // MIPS32EL:#define __LDBL_MIN_10_EXP__ (-307) // MIPS32EL:#define __LDBL_MIN_EXP__ (-1021) -// MIPS32EL:#define __LDBL_MIN__ 2.2250738585072014e-308 +// MIPS32EL:#define __LDBL_MIN__ 2.2250738585072014e-308L // MIPS32EL:#define __LONG_LONG_MAX__ 9223372036854775807LL // MIPS32EL:#define __LONG_MAX__ 2147483647L // MIPS32EL-NOT:#define __LP64__ @@ -686,6 +899,8 @@ // MIPS64BE:#define _ABI64 3 // MIPS64BE:#define _LP64 1 // MIPS64BE:#define _MIPSEB 1 +// MIPS64BE:#define _MIPS_ARCH "mips64" +// MIPS64BE:#define _MIPS_ARCH_MIPS64 1 // MIPS64BE:#define _MIPS_SIM _ABI64 // MIPS64BE:#define _MIPS_SZINT 32 // MIPS64BE:#define _MIPS_SZLONG 64 @@ -785,6 +1000,8 @@ // MIPS64BE:#define __clang__ 1 // MIPS64BE:#define __llvm__ 1 // MIPS64BE:#define __mips 1 +// MIPS64BE:#define __mips64 1 +// MIPS64BE:#define __mips64__ 1 // MIPS64BE:#define __mips__ 1 // MIPS64BE:#define __mips_hard_float 1 // MIPS64BE:#define __mips_n64 1 @@ -797,6 +1014,8 @@ // MIPS64EL:#define _ABI64 3 // MIPS64EL:#define _LP64 1 // MIPS64EL:#define _MIPSEL 1 +// MIPS64EL:#define _MIPS_ARCH "mips64" +// MIPS64EL:#define _MIPS_ARCH_MIPS64 1 // MIPS64EL:#define _MIPS_SIM _ABI64 // MIPS64EL:#define _MIPS_SZINT 32 // MIPS64EL:#define _MIPS_SZLONG 64 @@ -896,6 +1115,8 @@ // MIPS64EL:#define __clang__ 1 // MIPS64EL:#define __llvm__ 1 // MIPS64EL:#define __mips 1 +// MIPS64EL:#define __mips64 1 +// MIPS64EL:#define __mips64__ 1 // MIPS64EL:#define __mips__ 1 // MIPS64EL:#define __mips_hard_float 1 // MIPS64EL:#define __mips_n64 1 @@ -993,19 +1214,19 @@ // MSP430:#define __INTPTR_TYPE__ short // MSP430:#define __INTPTR_WIDTH__ 16 // MSP430:#define __INT_MAX__ 32767 -// MSP430:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324 +// MSP430:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L // MSP430:#define __LDBL_DIG__ 15 -// MSP430:#define __LDBL_EPSILON__ 2.2204460492503131e-16 +// MSP430:#define __LDBL_EPSILON__ 2.2204460492503131e-16L // MSP430:#define __LDBL_HAS_DENORM__ 1 // MSP430:#define __LDBL_HAS_INFINITY__ 1 // MSP430:#define __LDBL_HAS_QUIET_NAN__ 1 // MSP430:#define __LDBL_MANT_DIG__ 53 // MSP430:#define __LDBL_MAX_10_EXP__ 308 // MSP430:#define __LDBL_MAX_EXP__ 1024 -// MSP430:#define __LDBL_MAX__ 1.7976931348623157e+308 +// MSP430:#define __LDBL_MAX__ 1.7976931348623157e+308L // MSP430:#define __LDBL_MIN_10_EXP__ (-307) // MSP430:#define __LDBL_MIN_EXP__ (-1021) -// MSP430:#define __LDBL_MIN__ 2.2250738585072014e-308 +// MSP430:#define __LDBL_MIN__ 2.2250738585072014e-308L // MSP430:#define __LONG_LONG_MAX__ 9223372036854775807LL // MSP430:#define __LONG_MAX__ 2147483647L // MSP430-NOT:#define __LP64__ @@ -1088,19 +1309,19 @@ // NVPTX32:#define __INTPTR_TYPE__ unsigned int // NVPTX32:#define __INTPTR_WIDTH__ 32 // NVPTX32:#define __INT_MAX__ 2147483647 -// NVPTX32:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324 +// NVPTX32:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L // NVPTX32:#define __LDBL_DIG__ 15 -// NVPTX32:#define __LDBL_EPSILON__ 2.2204460492503131e-16 +// NVPTX32:#define __LDBL_EPSILON__ 2.2204460492503131e-16L // NVPTX32:#define __LDBL_HAS_DENORM__ 1 // NVPTX32:#define __LDBL_HAS_INFINITY__ 1 // NVPTX32:#define __LDBL_HAS_QUIET_NAN__ 1 // NVPTX32:#define __LDBL_MANT_DIG__ 53 // NVPTX32:#define __LDBL_MAX_10_EXP__ 308 // NVPTX32:#define __LDBL_MAX_EXP__ 1024 -// NVPTX32:#define __LDBL_MAX__ 1.7976931348623157e+308 +// NVPTX32:#define __LDBL_MAX__ 1.7976931348623157e+308L // NVPTX32:#define __LDBL_MIN_10_EXP__ (-307) // NVPTX32:#define __LDBL_MIN_EXP__ (-1021) -// NVPTX32:#define __LDBL_MIN__ 2.2250738585072014e-308 +// NVPTX32:#define __LDBL_MIN__ 2.2250738585072014e-308L // NVPTX32:#define __LONG_LONG_MAX__ 9223372036854775807LL // NVPTX32:#define __LONG_MAX__ 9223372036854775807L // NVPTX32-NOT:#define __LP64__ @@ -1184,19 +1405,19 @@ // NVPTX64:#define __INTPTR_TYPE__ long long unsigned int // NVPTX64:#define __INTPTR_WIDTH__ 64 // NVPTX64:#define __INT_MAX__ 2147483647 -// NVPTX64:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324 +// NVPTX64:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L // NVPTX64:#define __LDBL_DIG__ 15 -// NVPTX64:#define __LDBL_EPSILON__ 2.2204460492503131e-16 +// NVPTX64:#define __LDBL_EPSILON__ 2.2204460492503131e-16L // NVPTX64:#define __LDBL_HAS_DENORM__ 1 // NVPTX64:#define __LDBL_HAS_INFINITY__ 1 // NVPTX64:#define __LDBL_HAS_QUIET_NAN__ 1 // NVPTX64:#define __LDBL_MANT_DIG__ 53 // NVPTX64:#define __LDBL_MAX_10_EXP__ 308 // NVPTX64:#define __LDBL_MAX_EXP__ 1024 -// NVPTX64:#define __LDBL_MAX__ 1.7976931348623157e+308 +// NVPTX64:#define __LDBL_MAX__ 1.7976931348623157e+308L // NVPTX64:#define __LDBL_MIN_10_EXP__ (-307) // NVPTX64:#define __LDBL_MIN_EXP__ (-1021) -// NVPTX64:#define __LDBL_MIN__ 2.2250738585072014e-308 +// NVPTX64:#define __LDBL_MIN__ 2.2250738585072014e-308L // NVPTX64:#define __LONG_LONG_MAX__ 9223372036854775807LL // NVPTX64:#define __LONG_MAX__ 9223372036854775807L // NVPTX64:#define __LP64__ 1 @@ -1796,19 +2017,19 @@ // SPARC:#define __INTPTR_TYPE__ long int // SPARC:#define __INTPTR_WIDTH__ 32 // SPARC:#define __INT_MAX__ 2147483647 -// SPARC:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324 +// SPARC:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L // SPARC:#define __LDBL_DIG__ 15 -// SPARC:#define __LDBL_EPSILON__ 2.2204460492503131e-16 +// SPARC:#define __LDBL_EPSILON__ 2.2204460492503131e-16L // SPARC:#define __LDBL_HAS_DENORM__ 1 // SPARC:#define __LDBL_HAS_INFINITY__ 1 // SPARC:#define __LDBL_HAS_QUIET_NAN__ 1 // SPARC:#define __LDBL_MANT_DIG__ 53 // SPARC:#define __LDBL_MAX_10_EXP__ 308 // SPARC:#define __LDBL_MAX_EXP__ 1024 -// SPARC:#define __LDBL_MAX__ 1.7976931348623157e+308 +// SPARC:#define __LDBL_MAX__ 1.7976931348623157e+308L // SPARC:#define __LDBL_MIN_10_EXP__ (-307) // SPARC:#define __LDBL_MIN_EXP__ (-1021) -// SPARC:#define __LDBL_MIN__ 2.2250738585072014e-308 +// SPARC:#define __LDBL_MIN__ 2.2250738585072014e-308L // SPARC:#define __LONG_LONG_MAX__ 9223372036854775807LL // SPARC:#define __LONG_MAX__ 2147483647L // SPARC-NOT:#define __LP64__ @@ -1853,19 +2074,19 @@ // TCE:#define __CHAR16_TYPE__ unsigned short // TCE:#define __CHAR32_TYPE__ unsigned int // TCE:#define __CHAR_BIT__ 8 -// TCE:#define __DBL_DENORM_MIN__ 1.40129846e-45F +// TCE:#define __DBL_DENORM_MIN__ 1.40129846e-45 // TCE:#define __DBL_DIG__ 6 -// TCE:#define __DBL_EPSILON__ 1.19209290e-7F +// TCE:#define __DBL_EPSILON__ 1.19209290e-7 // TCE:#define __DBL_HAS_DENORM__ 1 // TCE:#define __DBL_HAS_INFINITY__ 1 // TCE:#define __DBL_HAS_QUIET_NAN__ 1 // TCE:#define __DBL_MANT_DIG__ 24 // TCE:#define __DBL_MAX_10_EXP__ 38 // TCE:#define __DBL_MAX_EXP__ 128 -// TCE:#define __DBL_MAX__ 3.40282347e+38F +// TCE:#define __DBL_MAX__ 3.40282347e+38 // TCE:#define __DBL_MIN_10_EXP__ (-37) // TCE:#define __DBL_MIN_EXP__ (-125) -// TCE:#define __DBL_MIN__ 1.17549435e-38F +// TCE:#define __DBL_MIN__ 1.17549435e-38 // TCE:#define __DECIMAL_DIG__ -1 // TCE:#define __FLT_DENORM_MIN__ 1.40129846e-45F // TCE:#define __FLT_DIG__ 6 @@ -1891,19 +2112,19 @@ // TCE:#define __INTPTR_TYPE__ int // TCE:#define __INTPTR_WIDTH__ 32 // TCE:#define __INT_MAX__ 2147483647 -// TCE:#define __LDBL_DENORM_MIN__ 1.40129846e-45F +// TCE:#define __LDBL_DENORM_MIN__ 1.40129846e-45L // TCE:#define __LDBL_DIG__ 6 -// TCE:#define __LDBL_EPSILON__ 1.19209290e-7F +// TCE:#define __LDBL_EPSILON__ 1.19209290e-7L // TCE:#define __LDBL_HAS_DENORM__ 1 // TCE:#define __LDBL_HAS_INFINITY__ 1 // TCE:#define __LDBL_HAS_QUIET_NAN__ 1 // TCE:#define __LDBL_MANT_DIG__ 24 // TCE:#define __LDBL_MAX_10_EXP__ 38 // TCE:#define __LDBL_MAX_EXP__ 128 -// TCE:#define __LDBL_MAX__ 3.40282347e+38F +// TCE:#define __LDBL_MAX__ 3.40282347e+38L // TCE:#define __LDBL_MIN_10_EXP__ (-37) // TCE:#define __LDBL_MIN_EXP__ (-125) -// TCE:#define __LDBL_MIN__ 1.17549435e-38F +// TCE:#define __LDBL_MIN__ 1.17549435e-38L // TCE:#define __LONG_LONG_MAX__ 2147483647LL // TCE:#define __LONG_MAX__ 2147483647L // TCE-NOT:#define __LP64__ diff --git a/test/Preprocessor/macro_arg_directive.c b/test/Preprocessor/macro_arg_directive.c index 5c9943d60530..5bc2236f0c45 100644 --- a/test/Preprocessor/macro_arg_directive.c +++ b/test/Preprocessor/macro_arg_directive.c @@ -1,5 +1,12 @@ // RUN: %clang_cc1 %s -fsyntax-only -verify +#define a(x) enum { x } +a(n = +#undef a +#define a 5 + a); +_Static_assert(n == 5, ""); + // header1.h void fail(const char *); #define MUNCH(...) \ diff --git a/test/Preprocessor/macro_fn_comma_swallow2.c b/test/Preprocessor/macro_fn_comma_swallow2.c new file mode 100644 index 000000000000..93ab2b83664a --- /dev/null +++ b/test/Preprocessor/macro_fn_comma_swallow2.c @@ -0,0 +1,64 @@ +// Test the __VA_ARGS__ comma swallowing extensions of various compiler dialects. + +// RUN: %clang_cc1 -E %s | FileCheck -check-prefix=GCC -strict-whitespace %s +// RUN: %clang_cc1 -E -std=c99 %s | FileCheck -check-prefix=C99 -strict-whitespace %s +// RUN: %clang_cc1 -E -std=c11 %s | FileCheck -check-prefix=C99 -strict-whitespace %s +// RUN: %clang_cc1 -E -x c++ %s | FileCheck -check-prefix=GCC -strict-whitespace %s +// RUN: %clang_cc1 -E -std=gnu99 %s | FileCheck -check-prefix=GCC -strict-whitespace %s +// RUN: %clang_cc1 -E -fms-compatibility %s | FileCheck -check-prefix=MS -strict-whitespace %s +// RUN: %clang_cc1 -E -DNAMED %s | FileCheck -check-prefix=GCC -strict-whitespace %s +// RUN: %clang_cc1 -E -std=c99 -DNAMED %s | FileCheck -check-prefix=C99 -strict-whitespace %s + + +#ifndef NAMED +# define A(...) [ __VA_ARGS__ ] +# define B(...) [ , __VA_ARGS__ ] +# define C(...) [ , ## __VA_ARGS__ ] +# define D(A,...) [ A , ## __VA_ARGS__ ] +# define E(A,...) [ __VA_ARGS__ ## A ] +#else +// These are the GCC named argument versions of the C99-style variadic macros. +// Note that __VA_ARGS__ *may* be used as the name, this is not prohibited! +# define A(__VA_ARGS__...) [ __VA_ARGS__ ] +# define B(__VA_ARGS__...) [ , __VA_ARGS__ ] +# define C(__VA_ARGS__...) [ , ## __VA_ARGS__ ] +# define D(A,__VA_ARGS__...) [ A , ## __VA_ARGS__ ] +# define E(A,__VA_ARGS__...) [ __VA_ARGS__ ## A ] +#endif + + +1: A() B() C() D() E() +2: A(a) B(a) C(a) D(a) E(a) +3: A(,) B(,) C(,) D(,) E(,) +4: A(a,b,c) B(a,b,c) C(a,b,c) D(a,b,c) E(a,b,c) +5: A(a,b,) B(a,b,) C(a,b,) D(a,b,) + +// The GCC ", ## __VA_ARGS__" extension swallows the comma when followed by +// empty __VA_ARGS__. This extension does not apply in -std=c99 mode, but +// does apply in C++. +// +// GCC: 1: [ ] [ , ] [ ] [ ] [ ] +// GCC: 2: [ a ] [ , a ] [ ,a ] [ a ] [ a ] +// GCC: 3: [ , ] [ , , ] [ ,, ] [ , ] [ ] +// GCC: 4: [ a,b,c ] [ , a,b,c ] [ ,a,b,c ] [ a ,b,c ] [ b,ca ] +// GCC: 5: [ a,b, ] [ , a,b, ] [ ,a,b, ] [ a ,b, ] + +// Under C99 standard mode, the GCC ", ## __VA_ARGS__" extension *does not* +// swallow the comma when followed by empty __VA_ARGS__. +// +// C99: 1: [ ] [ , ] [ , ] [ ] [ ] +// C99: 2: [ a ] [ , a ] [ ,a ] [ a ] [ a ] +// C99: 3: [ , ] [ , , ] [ ,, ] [ , ] [ ] +// C99: 4: [ a,b,c ] [ , a,b,c ] [ ,a,b,c ] [ a ,b,c ] [ b,ca ] +// C99: 5: [ a,b, ] [ , a,b, ] [ ,a,b, ] [ a ,b, ] + +// Microsoft's extension is on ", __VA_ARGS__" (without explicit ##) where +// the comma is swallowed when followed by empty __VA_ARGS__. +// +// MS: 1: [ ] [ ] [ ] [ ] [ ] +// MS: 2: [ a ] [ , a ] [ ,a ] [ a ] [ a ] +// MS: 3: [ , ] [ , , ] [ ,, ] [ , ] [ ] +// MS: 4: [ a,b,c ] [ , a,b,c ] [ ,a,b,c ] [ a ,b,c ] [ b,ca ] +// MS: 5: [ a,b, ] [ , a,b, ] [ ,a,b, ] [ a ,b, ] + +// FIXME: Item 3(d) in MS output should be [ ] not [ , ] diff --git a/test/Preprocessor/macro_paste_identifier_error.c b/test/Preprocessor/macro_paste_identifier_error.c index 457e6f7fc1aa..bba317239ac6 100644 --- a/test/Preprocessor/macro_paste_identifier_error.c +++ b/test/Preprocessor/macro_paste_identifier_error.c @@ -1,6 +1,7 @@ // RUN: %clang_cc1 -fms-extensions -Wno-invalid-token-paste %s -verify // RUN: %clang_cc1 -E -fms-extensions -Wno-invalid-token-paste %s | FileCheck %s // RUN: %clang_cc1 -E -fms-extensions -Wno-invalid-token-paste -x assembler-with-cpp %s | FileCheck %s +// expected-no-diagnostics #define foo a ## b ## = 0 int foo; diff --git a/test/Preprocessor/microsoft-ext.c b/test/Preprocessor/microsoft-ext.c new file mode 100644 index 000000000000..ec10374a1d6a --- /dev/null +++ b/test/Preprocessor/microsoft-ext.c @@ -0,0 +1,24 @@ +// RUN: %clang_cc1 -E -fms-compatibility %s -o %t +// RUN: FileCheck %s < %t + +# define M2(x, y) x + y +# define P(x, y) {x, y} +# define M(x, y) M2(x, P(x, y)) +M(a, b) // CHECK: a + {a, b} + +// Regression test for PR13924 +#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar) +#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar + +#define GMOCK_INTERNAL_COUNT_AND_2_VALUE_PARAMS(p0, p1) P2 + +#define GMOCK_ACTION_CLASS_(name, value_params)\ + GTEST_CONCAT_TOKEN_(name##Action, GMOCK_INTERNAL_COUNT_##value_params) + +#define ACTION_TEMPLATE(name, template_params, value_params)\ +class GMOCK_ACTION_CLASS_(name, value_params) {\ +} + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_2_VALUE_PARAMS(p0, p1)); diff --git a/test/Preprocessor/objc-pp.m b/test/Preprocessor/objc-pp.m index 0ec288c830a0..3522f739344f 100644 --- a/test/Preprocessor/objc-pp.m +++ b/test/Preprocessor/objc-pp.m @@ -1,4 +1,5 @@ // RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic -ffreestanding +// expected-no-diagnostics #import <stdint.h> // no warning on #import in objc mode. diff --git a/test/Preprocessor/optimize.c b/test/Preprocessor/optimize.c index 97f841a6fbb9..0167e70e0122 100644 --- a/test/Preprocessor/optimize.c +++ b/test/Preprocessor/optimize.c @@ -1,5 +1,6 @@ // RUN: %clang_cc1 -Eonly %s -DOPT_O2 -O2 -verify #ifdef OPT_O2 + // expected-no-diagnostics #ifndef __OPTIMIZE__ #error "__OPTIMIZE__ not defined" #endif @@ -10,6 +11,7 @@ // RUN: %clang_cc1 -Eonly %s -DOPT_O0 -O0 -verify #ifdef OPT_O0 + // expected-no-diagnostics #ifdef __OPTIMIZE__ #error "__OPTIMIZE__ defined" #endif @@ -20,6 +22,7 @@ // RUN: %clang_cc1 -Eonly %s -DOPT_OS -Os -verify #ifdef OPT_OS + // expected-no-diagnostics #ifndef __OPTIMIZE__ #error "__OPTIMIZE__ not defined" #endif diff --git a/test/Preprocessor/pr13851.c b/test/Preprocessor/pr13851.c new file mode 100644 index 000000000000..537594d28ffb --- /dev/null +++ b/test/Preprocessor/pr13851.c @@ -0,0 +1,11 @@ +// Check that -E -M -MF does not cause an "argument unused" error, by adding +// -Werror to the clang invocation. Also check the dependency output, if any. +// RUN: %clang -Werror -E -M -MF %t-M.d %s +// RUN: FileCheck --input-file=%t-M.d %s +// CHECK: pr13851.o: +// CHECK: pr13851.c + +// Check that -E -MM -MF does not cause an "argument unused" error, by adding +// -Werror to the clang invocation. Also check the dependency output, if any. +// RUN: %clang -Werror -E -MM -MF %t-MM.d %s +// RUN: FileCheck --input-file=%t-MM.d %s diff --git a/test/Preprocessor/pragma-pushpop-macro.c b/test/Preprocessor/pragma-pushpop-macro.c index 08a65704e4cb..0aee074c55c7 100644 --- a/test/Preprocessor/pragma-pushpop-macro.c +++ b/test/Preprocessor/pragma-pushpop-macro.c @@ -31,6 +31,22 @@ int pmy1 = Y; #define Y 4 int pmy2 = Y; +// The sequence push, define/undef, pop caused problems if macro was not +// previously defined. +#pragma push_macro("PREVIOUSLY_UNDEFINED1") +#undef PREVIOUSLY_UNDEFINED1 +#pragma pop_macro("PREVIOUSLY_UNDEFINED1") +#ifndef PREVIOUSLY_UNDEFINED1 +int Q; +#endif + +#pragma push_macro("PREVIOUSLY_UNDEFINED2") +#define PREVIOUSLY_UNDEFINED2 +#pragma pop_macro("PREVIOUSLY_UNDEFINED2") +#ifndef PREVIOUSLY_UNDEFINED2 +int P; +#endif + // CHECK: int pmx0 = 1 // CHECK: int pmy0 = 2 // CHECK: int pmx1 = 1 @@ -38,4 +54,5 @@ int pmy2 = Y; // CHECK: int pmx3 = 1 // CHECK: int pmy1 = 3 // CHECK: int pmy2 = 4 - +// CHECK: int Q; +// CHECK: int P; diff --git a/test/Preprocessor/pragma_sysheader.c b/test/Preprocessor/pragma_sysheader.c index 17080fec53db..075c9803a507 100644 --- a/test/Preprocessor/pragma_sysheader.c +++ b/test/Preprocessor/pragma_sysheader.c @@ -1,5 +1,6 @@ // RUN: %clang_cc1 -verify -pedantic %s -fsyntax-only // RUN: %clang_cc1 -E %s | FileCheck %s +// expected-no-diagnostics // rdar://6899937 #include "pragma_sysheader.h" @@ -9,4 +10,4 @@ // CHECK-NEXT: # 1 "{{.*}}pragma_sysheader.h" 3 // CHECK-NEXT: typedef int x; // CHECK-NEXT: typedef int x; -// CHECK-NEXT: # 5 "{{.*}}pragma_sysheader.c" 2 +// CHECK-NEXT: # 6 "{{.*}}pragma_sysheader.c" 2 diff --git a/test/Preprocessor/predefined-arch-macros.c b/test/Preprocessor/predefined-arch-macros.c index 2361abe20cd0..719f945fd6b2 100644 --- a/test/Preprocessor/predefined-arch-macros.c +++ b/test/Preprocessor/predefined-arch-macros.c @@ -516,6 +516,7 @@ // CHECK_CORE_AVX2_M32: #define __PCLMUL__ 1 // CHECK_CORE_AVX2_M32: #define __POPCNT__ 1 // CHECK_CORE_AVX2_M32: #define __RDRND__ 1 +// CHECK_CORE_AVX2_M32: #define __RTM__ 1 // CHECK_CORE_AVX2_M32: #define __SSE2__ 1 // CHECK_CORE_AVX2_M32: #define __SSE3__ 1 // CHECK_CORE_AVX2_M32: #define __SSE4_1__ 1 @@ -541,6 +542,7 @@ // CHECK_CORE_AVX2_M64: #define __PCLMUL__ 1 // CHECK_CORE_AVX2_M64: #define __POPCNT__ 1 // CHECK_CORE_AVX2_M64: #define __RDRND__ 1 +// CHECK_CORE_AVX2_M64: #define __RTM__ 1 // CHECK_CORE_AVX2_M64: #define __SSE2_MATH__ 1 // CHECK_CORE_AVX2_M64: #define __SSE2__ 1 // CHECK_CORE_AVX2_M64: #define __SSE3__ 1 diff --git a/test/Preprocessor/user_defined_system_framework.c b/test/Preprocessor/user_defined_system_framework.c index 8e3db5619795..2ab2a297ecbc 100644 --- a/test/Preprocessor/user_defined_system_framework.c +++ b/test/Preprocessor/user_defined_system_framework.c @@ -1,4 +1,5 @@ -// RUN: %clang -cc1 -fsyntax-only -F %S/Inputs -Wsign-conversion -verify %s +// RUN: %clang_cc1 -fsyntax-only -F %S/Inputs -Wsign-conversion -verify %s +// expected-no-diagnostics // Check that TestFramework is treated as a system header. #include <TestFramework/TestFramework.h> |