79 lines · cpp
1// RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify2 3void foo() { 4 return foo();5}6 7// PR6451 - C++ Jump checking8struct X {9 X();10};11 12void test2() {13 goto later; // expected-error {{cannot jump}}14 X x; // expected-note {{jump bypasses variable initialization}} 15later:16 ;17}18 19namespace PR6536 {20 struct A {};21 void a() { goto out; A x; out: return; }22}23 24void test3() {25 __asm__ ("":"+r" (test3)); // expected-error{{invalid lvalue in asm output}}26}27 28void test4(); // expected-note{{possible target for call}}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}33void test5() {34 char buf[1];35 __asm__ ("":"+r" (buf));36}37 38struct MMX_t {};39void test6() { __asm__("" : "=m"(*(MMX_t *)0)); }40 41template <typename T>42T test7(T v) {43 return ({ // expected-warning{{use of GNU statement expression extension}}44 T a = v;45 a;46 });47}48 49void test8() {50 int a = test7(1);51 double b = test7(2.0);52}53 54template <typename T>55T test9(T v) {56 return ({ // expected-warning {{use of GNU statement expression extension}}57 T a = v;58 a; // expected-warning {{expression result unused}}59 ;60 ;61 });62}63 64void test10() {65 int a = test9(1); // expected-note {{in instantiation of function template specialization 'test9<int>' requested here}}66 // expected-error@-10 {{cannot initialize return object of type 'int' with an rvalue of type 'void'}}67}68 69namespace GH48405 {70void foo() {71 struct S {72 int i;73 int j = ({i;}); // expected-error {{invalid use of non-static data member 'i'}}74 // expected-error@-1 {{cannot initialize a member subobject of type 'int' with an rvalue of type 'void'}}75 // expected-warning@-2 {{use of GNU statement expression extension}}76 };77}78}79