1 /* { dg-do compile } */
2 /* { dg-options "-fgnu-tm -fdump-tree-ealias -O" } */
4 typedef __UINTPTR_TYPE__ ptrcast
;
6 #if (__SIZEOF_POINTER__ == 4)
7 #define TM_LOAD __builtin__ITM_RU4
8 #define TM_STORE __builtin__ITM_WU4
9 #elif (__SIZEOF_POINTER__ == 8)
10 #define TM_LOAD __builtin__ITM_RU8
11 #define TM_STORE __builtin__ITM_WU8
13 #error Add target support here
16 struct mystruct_type
{
20 ptrcast
*someptr
, **pp
;
25 __transaction_atomic
{
26 ui
= TM_LOAD (&mystruct
);
27 mystruct
= (struct mystruct_type
*) ui
;
28 ui
= TM_LOAD (&someptr
);
29 someptr
= (ptrcast
*) ui
;
30 ui
= (ptrcast
) someptr
;
36 /* { dg-final { scan-tree-dump-times "mystruct = \{ .*ESCAPED" 1 "ealias" } } */
37 /* { dg-final { scan-tree-dump-times "someptr = .*same as mystruct" 1 "ealias" } } */
38 /* { dg-final { scan-tree-dump-times "ui\..* = .*same as mystruct" 1 "ealias" } } */
39 /* { dg-final { scan-tree-dump-times "pp\..* = .*same as mystruct" 1 "ealias" } } */