Home | History | Annotate | Download | only in stmt.dcl
      1 // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
      2 
      3 // PR10034
      4 struct X {};
      5 
      6 void exx(X) {}
      7 
      8 int test_ptr10034(int argc, char **argv)
      9 {
     10  if (argc > 3)
     11    goto end;
     12 
     13  X x;
     14  X xs[16];
     15  exx(x);
     16 
     17  end:
     18    if (argc > 1) {
     19    for (int i = 0; i < argc; ++i)
     20    {
     21 
     22    }
     23    }
     24    return 0;
     25 }
     26 
     27 struct Y {
     28   ~Y();
     29 };
     30 
     31 void f();
     32 void test_Y() {
     33   goto end; // expected-error{{goto into protected scope}}
     34   Y y; // expected-note{{jump bypasses variable with a non-trivial destructor}}
     35  end:
     36   f();
     37   goto inner; // expected-error{{goto into protected scope}}
     38   {
     39     Y y2; // expected-note{{jump bypasses variable with a non-trivial destructor}}
     40   inner:
     41     f();
     42   }
     43   return;
     44 }
     45 
     46 struct Z {
     47   Z operator=(const Z&);
     48 };
     49 
     50 void test_Z() {
     51   goto end;
     52   Z z;
     53  end:
     54   return;
     55 }
     56