xref: /aosp_15_r20/external/clang/test/SemaCXX/statements.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify
2*67e74705SXin Li 
foo()3*67e74705SXin Li void 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 Li void 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 Li void 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 Li void 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 Li void 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 Li void test6() { __asm__("" : "=m"(*(MMX_t *)0)); }
40