blob: 2e0fa54effbff271a09c54fcfdb14e1082483b99 [file] [log] [blame]
John McCall0faede62010-03-12 07:11:26 +00001// 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}