llvm/clang/test/CodeGenCXX/2003-11-29-DuplicatedCleanupTest.cpp

// RUN: %clang_cc1 -emit-llvm %s -o -


void doesntThrow() throw();
struct F {
  ~F() { doesntThrow(); }
};

void atest() {
  F A;
lab:
  F B;
  goto lab;
}

void test(int val) {
label: {
   F A;
   F B;
   if (val == 0) goto label;
   if (val == 1) goto label;
}
}

void test3(int val) {
label: {
   F A;
   F B;
   if (val == 0) { doesntThrow(); goto label; }
   if (val == 1) { doesntThrow(); goto label; }
}
}

void test4(int val) {
label: {
   F A;
   F B;
   if (val == 0) { F C; goto label; }
   if (val == 1) { F D; goto label; }
}
}