// { dg-do run } extern "C" void abort (); int dothrow; int g; static void f1() { g++; if (dothrow) throw 1; } static void f2() { __transaction_atomic { f1(); } } int main() { dothrow = 0; f2(); dothrow = 1; try { f2(); } catch (...) { } if (g != 2) abort (); return 0; }