summaryrefslogtreecommitdiffstats
path: root/clang/test/Lexer/builtin_redef.c
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2013-03-06 00:46:00 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2013-03-06 00:46:00 +0000
commit7b24254e91a0984b57278ddc5e84cf8ed194074e (patch)
tree1bcf9f518b574faf00ab162d3d072bef7359568e /clang/test/Lexer/builtin_redef.c
parent47ef466b0fcd5d8add0d2fd2f2430dee16a03ce5 (diff)
downloadbcm5719-llvm-7b24254e91a0984b57278ddc5e84cf8ed194074e.tar.gz
bcm5719-llvm-7b24254e91a0984b57278ddc5e84cf8ed194074e.zip
After issuing a diagnostic for undefining or redefining a builtin macro,
continue parsing the directive rather than silently discarding it. Allowing undef or redef of __TIME__ and __DATE__ is important to folks who want stable, reproducible builds. llvm-svn: 176540
Diffstat (limited to 'clang/test/Lexer/builtin_redef.c')
-rw-r--r--clang/test/Lexer/builtin_redef.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/clang/test/Lexer/builtin_redef.c b/clang/test/Lexer/builtin_redef.c
new file mode 100644
index 00000000000..c9351dc4a69
--- /dev/null
+++ b/clang/test/Lexer/builtin_redef.c
@@ -0,0 +1,19 @@
+// RUN: %clang_cc1 %s -D__TIME__=1234 -U__DATE__ -E 2>&1 | FileCheck %s --check-prefix=CHECK-OUT
+// RUN: %clang_cc1 %s -D__TIME__=1234 -U__DATE__ -E 2>&1 | FileCheck %s --check-prefix=CHECK-WARN
+// RUN: %clang_cc1 %s -D__TIME__=1234 -U__DATE__ -E 2>&1 -pedantic-errors | FileCheck %s --check-prefix=CHECK-ERR
+
+// CHECK-WARN: <command line>:{{.*}} warning: redefining builtin macro
+// CHECK-WARN: <command line>:{{.*}} warning: undefining builtin macro
+
+// CHECK-ERR: <command line>:{{.*}} error: redefining builtin macro
+// CHECK-ERR: <command line>:{{.*}} error: undefining builtin macro
+
+int n = __TIME__;
+__DATE__
+
+#define __FILE__ "my file"
+// CHECK-WARN: :[[@LINE-1]]:9: warning: redefining builtin macro
+// CHECK-ERR: :[[@LINE-2]]:9: error: redefining builtin macro
+
+// CHECK-OUT: int n = 1234;
+// CHECK-OUT: __DATE__
OpenPOWER on IntegriCloud