1*67e74705SXin Li // RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify 2*67e74705SXin Li foo()3*67e74705SXin Livoid foo() { 4*67e74705SXin Li return foo(); 5*67e74705SXin Li } 6*67e74705SXin Li 7*67e74705SXin Li // PR6451 - C++ Jump checking 8*67e74705SXin Li struct X { 9*67e74705SXin Li X(); 10*67e74705SXin Li }; 11*67e74705SXin Li test2()12*67e74705SXin Livoid test2() { 13*67e74705SXin Li goto later; // expected-error {{cannot jump}} 14*67e74705SXin Li X x; // expected-note {{jump bypasses variable initialization}} 15*67e74705SXin Li later: 16*67e74705SXin Li ; 17*67e74705SXin Li } 18*67e74705SXin Li 19*67e74705SXin Li namespace PR6536 { 20*67e74705SXin Li struct A {}; a()21*67e74705SXin Li void a() { goto out; A x; out: return; } 22*67e74705SXin Li } 23*67e74705SXin Li test3()24*67e74705SXin Livoid test3() { 25*67e74705SXin Li __asm__ ("":"+r" (test3)); // expected-error{{invalid lvalue in asm output}} 26*67e74705SXin Li } 27*67e74705SXin Li 28*67e74705SXin Li void test4(); // expected-note{{possible target for call}} test4(int)29*67e74705SXin Livoid test4(int) { // expected-note{{possible target for call}} 30*67e74705SXin Li // expected-error@+1{{overloaded function could not be resolved}} 31*67e74705SXin Li __asm__ ("":"+r" (test4)); // expected-error{{invalid lvalue in asm output}} 32*67e74705SXin Li } test5()33*67e74705SXin Livoid test5() { 34*67e74705SXin Li char buf[1]; 35*67e74705SXin Li __asm__ ("":"+r" (buf)); 36*67e74705SXin Li } 37*67e74705SXin Li 38*67e74705SXin Li struct MMX_t {}; test6()39*67e74705SXin Livoid test6() { __asm__("" : "=m"(*(MMX_t *)0)); } 40