summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/warn-sysheader-macro.cpp
diff options
context:
space:
mode:
authorAlp Toker <alp@nuanti.com>2013-12-12 12:47:48 +0000
committerAlp Toker <alp@nuanti.com>2013-12-12 12:47:48 +0000
commit15ab37321cbdb8c38e30cf8bd59bad52f4497580 (patch)
tree897707cf5b3afb4f68abeb222e30c3ef17892931 /clang/test/SemaCXX/warn-sysheader-macro.cpp
parentcb5beb347a0c059b5b659799c904c9d6f6ad14f3 (diff)
downloadbcm5719-llvm-15ab37321cbdb8c38e30cf8bd59bad52f4497580.tar.gz
bcm5719-llvm-15ab37321cbdb8c38e30cf8bd59bad52f4497580.zip
Suppress -Wshadow / -Wold-style-cast expanded from system header macros
Thanks to Jonathan Sauer for providing initial test cases. Fixes PR16093 and PR18147. llvm-svn: 197150
Diffstat (limited to 'clang/test/SemaCXX/warn-sysheader-macro.cpp')
-rw-r--r--clang/test/SemaCXX/warn-sysheader-macro.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/warn-sysheader-macro.cpp b/clang/test/SemaCXX/warn-sysheader-macro.cpp
new file mode 100644
index 00000000000..c88461720ad
--- /dev/null
+++ b/clang/test/SemaCXX/warn-sysheader-macro.cpp
@@ -0,0 +1,35 @@
+// RUN: %clang_cc1 -verify -fsyntax-only -Wshadow -Wold-style-cast %s
+
+// Test that macro expansions from system headers don't trigger 'syntactic'
+// warnings that are not actionable.
+
+#ifdef IS_SYSHEADER
+#pragma clang system_header
+
+#define SANITY(a) (a / 0)
+
+#define SHADOW(a) __extension__({ int v = a; v; })
+
+#define OLD_STYLE_CAST(a) ((int) (a))
+
+#else
+
+#define IS_SYSHEADER
+#include __FILE__
+
+void testSanity() {
+ // Validate that the test is set up correctly
+ int i = SANITY(0); // expected-warning {{division by zero is undefined}}
+}
+
+void PR16093() {
+ // no -Wshadow in system macro expansion
+ int i = SHADOW(SHADOW(1));
+}
+
+void PR18147() {
+ // no -Wold_style_cast in system macro expansion
+ int i = OLD_STYLE_CAST(0);
+}
+
+#endif
OpenPOWER on IntegriCloud