1// RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify
2
3void foo() {
4  return foo();
5}
6
7// PR6451 - C++ Jump checking
8struct 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