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