Mercurial > hg > CbC > CbC_gcc
view libitm/testsuite/libitm.c++/static_ctor.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
/* { dg-do run } */ /* { dg-options "-pthread" } */ /* { dg-skip-if "PR libitm/51822" { *-*-* } } */ /* Tests static constructors inside of transactional code. */ #include <pthread.h> #include <stdlib.h> int f(int x) __attribute__((noinline,transaction_safe)); int f(int x) { static int y = x; return y*x; } static void *thread (void *) { int bar; __transaction_atomic { bar = f(10); } if (bar != 100) abort(); return 0; } int main() { int bar; // First, initialize y in another thread. pthread_t pt; pthread_create(&pt, NULL, thread, NULL); pthread_join(pt, NULL); // Now y should already be initialized. __transaction_atomic { bar = f(20); } if (bar != 200) abort(); return 0; }