blob: 4cc829be046d790ab160ea036142ec7c5fd66a80 [file] [log] [blame]
Chris Lattner3b427b32007-10-11 00:18:28 +00001// RUN: clang -fsyntax-only -verify %s
Reid Spencer5f016e22007-07-11 17:01:13 +00002
3int foo(int X, int Y);
4
5void bar(volatile int *VP, int *P, int A,
6 _Complex double C, volatile _Complex double VC) {
7
Steve Naroff77878cc2007-08-27 04:08:11 +00008 VP == P; // expected-warning {{expression result unused}}
Chris Lattner6e844ad2007-08-26 17:32:59 +00009 (void)A;
Reid Spencer5f016e22007-07-11 17:01:13 +000010 (void)foo(1,2); // no warning.
11
12 A == foo(1, 2); // expected-warning {{expression result unused}}
13
14 foo(1,2)+foo(4,3); // expected-warning {{expression result unused}}
15
16
17 *P; // expected-warning {{expression result unused}}
18 *VP; // no warning.
19 P[4]; // expected-warning {{expression result unused}}
20 VP[4]; // no warning.
21
Chris Lattner7d84c762009-02-17 00:32:04 +000022 __real__ C; // expected-warning {{expression result unused}}
23 __real__ VC;
Reid Spencer5f016e22007-07-11 17:01:13 +000024}
25
Chris Lattner6e844ad2007-08-26 17:32:59 +000026extern void t1();
27extern void t2();
28void t3(int c) {
29 c ? t1() : t2();
30}
31
Chris Lattner98414c12007-08-31 21:49:55 +000032// This shouldn't warn: the expr at the end of the stmtexpr really is used.
33int stmt_expr(int x, int y) {
34 return ({int _a = x, _b = y; _a > _b ? _a : _b; });
35}
36
Eli Friedman4be1f472008-05-19 21:24:43 +000037void nowarn(unsigned char* a, unsigned char* b)
38{
39 unsigned char c = 1;
40 *a |= c, *b += c;
41}