| // Test that throwing out of an atomic_commit block commits the transaction. | |
| // { dg-do run } | |
| // { dg-options "-fgnu-tm" } | |
| int main() | |
| { | |
| static int i; | |
| bool caught = false; | |
| try { | |
| atomic_commit { | |
| i = 12; | |
| throw 42; | |
| i = 24; | |
| } | |
| } catch (int x) { | |
| caught = (x == 42); | |
| } | |
| if (!caught || i != 12) | |
| __builtin_abort(); | |
| } |