1abea951c34876a5374d0e3678c7989b225c5c895Anders Carlsson// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
2a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl
36fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattnervoid f1()
4a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl{
5a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl  try {
6a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl    ;
7a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl  } catch(int i) {
8a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl    ;
9a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl  } catch(...) {
10a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl  }
11a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl}
12a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl
136fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattnervoid f2()
14a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl{
15a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl  try; // expected-error {{expected '{'}}
16a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl
17a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl  try {}
18a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl  catch; // expected-error {{expected '('}}
19a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl
20a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl  try {}
21a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl  catch (...); // expected-error {{expected '{'}}
22a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl
23a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl  try {}
24a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl  catch {} // expected-error {{expected '('}}
25a0fd8652f3302d0f39ed9849b521ee5b76597b0aSebastian Redl}
26d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redl
276fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattnervoid f3() try {
28d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redl} catch(...) {
29d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redl}
30d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redl
31d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redlstruct A {
32d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redl  int i;
33d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redl  A(int);
34d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redl  A(char);
35d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redl  A() try : i(0) {} catch(...) {}
36d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redl  void f() try {} catch(...) {}
37de1b60a9868f80f0872ed05d78df3b40a10ba5caSebastian Redl  A(float) : i(0) try {} // expected-error {{expected '{' or ','}}
38d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redl};
39d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian Redl
40d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian RedlA::A(char) : i(0) try {} // expected-error {{expected '{' or ','}}
41d3a413d3b8eb39bcee5944bc545d9997c1abe492Sebastian RedlA::A(int j) try : i(j) {} catch(...) {}
426fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattner
436fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattner
446fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattner
456fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattner// PR5740
466fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattnerstruct Type { };
476fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattner
486fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattnerenum { Type } Kind;
496fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattnervoid f4() {
506fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattner  int i = 0;
516fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattner  switch (Kind) {
526fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattner    case Type: i = 7; break;  // no error.
536fb09c8acc1336a9508cd6223d9fcf87cf31e476Chris Lattner  }
54a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar}
556405646cb649e4b4c6768b92d1fc83c175722f62Chris Lattner
566405646cb649e4b4c6768b92d1fc83c175722f62Chris Lattner// PR5500
576405646cb649e4b4c6768b92d1fc83c175722f62Chris Lattnervoid f5() {
586405646cb649e4b4c6768b92d1fc83c175722f62Chris Lattner  asm volatile ("":: :"memory");
596405646cb649e4b4c6768b92d1fc83c175722f62Chris Lattner  asm volatile ("": ::"memory");
606405646cb649e4b4c6768b92d1fc83c175722f62Chris Lattner}
61