aboutsummaryrefslogtreecommitdiff
path: root/test/Preprocessor
diff options
context:
space:
mode:
Diffstat (limited to 'test/Preprocessor')
-rw-r--r--test/Preprocessor/comment_save_if.c1
-rw-r--r--test/Preprocessor/cxx_true.cpp2
-rw-r--r--test/Preprocessor/expr_define_expansion.c1
-rw-r--r--test/Preprocessor/expr_multichar.c1
-rw-r--r--test/Preprocessor/has_include.c32
-rw-r--r--test/Preprocessor/import_self.c2
-rw-r--r--test/Preprocessor/init.c293
-rw-r--r--test/Preprocessor/macro_arg_directive.c7
-rw-r--r--test/Preprocessor/macro_fn_comma_swallow2.c64
-rw-r--r--test/Preprocessor/macro_paste_identifier_error.c1
-rw-r--r--test/Preprocessor/microsoft-ext.c24
-rw-r--r--test/Preprocessor/objc-pp.m1
-rw-r--r--test/Preprocessor/optimize.c3
-rw-r--r--test/Preprocessor/pr13851.c11
-rw-r--r--test/Preprocessor/pragma-pushpop-macro.c19
-rw-r--r--test/Preprocessor/pragma_sysheader.c3
-rw-r--r--test/Preprocessor/predefined-arch-macros.c2
-rw-r--r--test/Preprocessor/user_defined_system_framework.c3
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>