1 // RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
2
f1()3 void f1()
4 {
5 try {
6 ;
7 } catch(int i) {
8 ;
9 } catch(...) {
10 }
11 }
12
f2()13 void f2()
14 {
15 try; // expected-error {{expected '{'}}
16
17 try {}
18 catch; // expected-error {{expected '('}}
19
20 try {}
21 catch (...); // expected-error {{expected '{'}}
22
23 try {}
24 catch {} // expected-error {{expected '('}}
25 }
26
27 void f3() try {
28 } catch(...) {
29 }
30
31 struct A {
32 int i;
33 A(int);
34 A(char);
35 A() try : i(0) {} catch(...) {}
36 void f() try {} catch(...) {}
37 A(float) : i(0) try {} // expected-error {{expected '{' or ','}}
38 };
39
40 A::A(char) : i(0) try {} // expected-error {{expected '{' or ','}}
41 A::A(int j) try : i(j) {} catch(...) {}
42
43
44
45 // PR5740
46 struct Type { };
47
48 enum { Type } Kind;
49 void f4() {
50 int i = 0;
51 switch (Kind) {
52 case Type: i = 7; break; // no error.
53 }
54 }
55
56 // PR5500
57 void f5() {
58 asm volatile ("":: :"memory");
59 asm volatile ("": ::"memory");
60 }
61