diff options
Diffstat (limited to 'clang/test/Sema')
-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)); +} |