warn-unused-value.c revision 0faede6f31b07bcec7b776f2b420c3ea9bb3e58c
1// RUN: %clang_cc1 -fsyntax-only -verify -Wunused-value %s
2
3int i = 0;
4int j = 0;
5
6void foo();
7
8// PR4806
9void pr4806() {
10  1,foo();          // expected-warning {{expression result unused}}
11
12  // other
13  foo();
14  i;                // expected-warning {{expression result unused}}
15
16  i,foo();          // expected-warning {{expression result unused}}
17  foo(),i;          // expected-warning {{expression result unused}}
18
19  i,j,foo();        // expected-warning {{expression result unused}}
20  i,foo(),j;        // expected-warning {{expression result unused}}
21  foo(),i,j;        // expected-warning {{expression result unused}}
22
23  i++;
24
25  i++,foo();
26  foo(),i++;
27
28  i++,j,foo();      // expected-warning {{expression result unused}}
29  i++,foo(),j;      // expected-warning {{expression result unused}}
30  foo(),i++,j;      // expected-warning {{expression result unused}}
31
32  i,j++,foo();      // expected-warning {{expression result unused}}
33  i,foo(),j++;      // expected-warning {{expression result unused}}
34  foo(),i,j++;      // expected-warning {{expression result unused}}
35
36  i++,j++,foo();
37  i++,foo(),j++;
38  foo(),i++,j++;
39
40  {};
41  ({});
42  ({}),foo();
43  foo(),({});
44
45  (int)1U;          // expected-warning {{expression result unused}}
46  (void)1U;
47
48  // pointer to volatile has side effect (thus no warning)
49  int* pi = &i;
50  volatile int* pj = &j;
51  *pi;              // expected-warning {{expression result unused}}
52  *pj;
53}
54