Mercurial > hg > CbC > CbC_gcc
view libitm/testsuite/libitm.c/cancel.c @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
#include <stdlib.h> #include <libitm.h> unsigned char pp[100]; void __attribute((transaction_may_cancel_outer,noinline)) cancel1() { __transaction_cancel [[outer]]; } int a, b; int main() { a = b = 0; __transaction_atomic { a = 1; __transaction_atomic { b = 1; __transaction_cancel; } } if (a != 1 || b != 0) abort(); if (_ITM_inTransaction() != outsideTransaction) abort(); __transaction_atomic [[outer]] { a = 2; __transaction_atomic { b = 2; __transaction_cancel [[outer]]; } } if (a != 1 || b != 0) abort(); if (_ITM_inTransaction() != outsideTransaction) abort(); __transaction_atomic [[outer]] { a = 2; __transaction_atomic { b = 2; __transaction_cancel [[outer]]; cancel1(); } } if (a != 1 || b != 0) abort(); if (_ITM_inTransaction() != outsideTransaction) abort(); return 0; }