Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.dg/tm/opt-1.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* { dg-do compile } */ /* { dg-options "-fgnu-tm -O" } */ extern void usleep (int) __attribute__((transaction_pure)); extern int rand(void) __attribute__((pure, transaction_pure)); extern int printf (const char *, ...); extern void *malloc (__SIZE_TYPE__) __attribute__((malloc)); extern void xyzzy (void * (*)(void *)); typedef struct { int id; } parm; int gvar; void *hello(void *arg) { parm *p=(parm *)arg; int tmp = p->id; int tmp3; printf ("Thread reads %d.\n", tmp); __transaction_atomic { int tmp2 = gvar; usleep ((int) (10.0*rand()/(10+1.0))/100); gvar = tmp + tmp2; tmp3 = gvar; } printf("tmp3 = %d\n", tmp3); return 0; } int main() { int i, n = rand(); for (i=0; i<n; i++) xyzzy (hello); return 0; }