2013-10-21 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.dg / tm / memopt-9.c
blob0c34f20b9262c9586abbe738f8a643e977ffc5f5
1 /* { dg-do compile } */
2 /* { dg-options "-fgnu-tm -O -fdump-tree-tmmark" } */
4 extern int something(void) __attribute__((transaction_safe));
5 extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe));
7 struct large { int foo[500]; };
9 int f()
11 int *p;
12 struct large *lp;
14 __transaction_atomic {
15 p = malloc (sizeof (*p) * 100);
16 lp = malloc (sizeof (*lp) * 100);
18 /* No instrumentation necessary; P and LP are transaction local. */
19 p[5] = 123;
20 lp->foo[66] = 123;
22 if (something())
23 __transaction_cancel;
25 return p[5];
28 /* { dg-final { scan-tree-dump-times "ITM_WU" 0 "tmmark" } } */
29 /* { dg-final { cleanup-tree-dump "tmmark" } } */