1 | // RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify |
2 | |
3 | void foo() { |
4 | return foo(); |
5 | } |
6 | |
7 | // PR6451 - C++ Jump checking |
8 | struct X { |
9 | X(); |
10 | }; |
11 | |
12 | void 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 {}; |
21 | void a() { goto out; A x; out: return; } |
22 | } |
23 | |
24 | void test3() { |
25 | __asm__ ("":"+r" (test3)); // expected-error{{invalid lvalue in asm output}} |
26 | } |
27 | |
28 | void test4(); // expected-note{{possible target for call}} |
29 | void 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 | } |
33 | void test5() { |
34 | char buf[1]; |
35 | __asm__ ("":"+r" (buf)); |
36 | } |
37 | |
38 | struct MMX_t {}; |
39 | void test6() { __asm__("" : "=m"(*(MMX_t *)0)); } |
40 | |