diff options
| author | Matt Beaumont-Gay <matthewbg@google.com> | 2012-01-06 22:43:58 +0000 |
|---|---|---|
| committer | Matt Beaumont-Gay <matthewbg@google.com> | 2012-01-06 22:43:58 +0000 |
| commit | 7a57adab8359c623618d375d8dbb8c473f101b1b (patch) | |
| tree | 40a785bb31b5ed12ec3d4f5a93e24f71ad49f758 /clang/test | |
| parent | 7ff610b62d64a3308605dbeda933b541b62a3ddc (diff) | |
| download | bcm5719-llvm-7a57adab8359c623618d375d8dbb8c473f101b1b.tar.gz bcm5719-llvm-7a57adab8359c623618d375d8dbb8c473f101b1b.zip | |
Suppress -Wunused-value within macros from system headers.
Along the way, move a helper function from SemaChecking.cpp to a more
accessible home in SourceManager.
llvm-svn: 147692
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/Sema/Inputs/unused-expr-system-header.h | 23 | ||||
| -rw-r--r-- | clang/test/Sema/unused-expr-system-header.c | 10 |
2 files changed, 33 insertions, 0 deletions
diff --git a/clang/test/Sema/Inputs/unused-expr-system-header.h b/clang/test/Sema/Inputs/unused-expr-system-header.h new file mode 100644 index 00000000000..72b2d95de44 --- /dev/null +++ b/clang/test/Sema/Inputs/unused-expr-system-header.h @@ -0,0 +1,23 @@ +// "System header" for testing that -Wunused-value is properly suppressed in +// certain cases. + +#define POSSIBLY_BAD_MACRO(x) \ + { int i = x; \ + i; } + +#define STATEMENT_EXPR_MACRO(x) \ + (__extension__ \ + ({int i = x; \ + i;})) + +#define COMMA_MACRO_1(x, y) \ + {x, y;} + +#define COMMA_MACRO_2(x, y) \ + if (x) { 1 == 2, y; } + +#define COMMA_MACRO_3(x, y) \ + (x, y) + +#define COMMA_MACRO_4(x, y) \ + ( 1 == 2, y ) diff --git a/clang/test/Sema/unused-expr-system-header.c b/clang/test/Sema/unused-expr-system-header.c new file mode 100644 index 00000000000..dcc8918970c --- /dev/null +++ b/clang/test/Sema/unused-expr-system-header.c @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -isystem %S/Inputs -fsyntax-only -verify %s +#include <unused-expr-system-header.h> +void f(int i1, int i2) { + POSSIBLY_BAD_MACRO(5); + STATEMENT_EXPR_MACRO(5); + COMMA_MACRO_1(i1 == i2, f(i1, i2)); // expected-warning {{expression result unused}} + COMMA_MACRO_2(i1 == i2, f(i1, i2)); + COMMA_MACRO_3(i1 == i2, f(i1, i2)); // expected-warning {{expression result unused}} + COMMA_MACRO_4(i1 == i2, f(i1, i2)); +} |

