// { 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; | |
} |