1 // RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify 2 foo()3void foo() { 4 return foo(); 5 } 6 7 // PR6451 - C++ Jump checking 8 struct X { 9 X(); 10 }; 11 test2()12void test2() { 13 goto later; // expected-error {{cannot jump}} 14 X x; // expected-note {{jump bypasses variable initialization}} 15 later: 16 ; 17 } 18 19 namespace PR6536 { 20 struct A {}; a()21 void a() { goto out; A x; out: return; } 22 } 23 test3()24void test3() { 25 __asm__ ("":"+r" (test3)); // expected-error{{invalid lvalue in asm output}} 26 } 27 28 void test4(); // expected-note{{possible target for call}} test4(int)29void test4(int) { // expected-note{{possible target for call}} 30 // expected-error@+1{{overloaded function could not be resolved}} 31 __asm__ ("":"+r" (test4)); // expected-error{{invalid lvalue in asm output}} 32 } test5()33void test5() { 34 char buf[1]; 35 __asm__ ("":"+r" (buf)); 36 } 37 38 struct MMX_t {}; test6()39void test6() { __asm__("" : "=m"(*(MMX_t *)0)); } 40 41 template <typename T> test7(T v)42T test7(T v) { 43 return ({ // expected-warning{{use of GNU statement expression extension}} 44 T a = v; 45 a; 46 ; 47 ; 48 }); 49 } 50 test8()51void test8() { 52 int a = test7(1); 53 double b = test7(2.0); 54 } 55