/* { dg-do compile } */
/* { dg-options "-fgnu-tm -fdump-tree-ealias-details -O" } */

typedef __UINTPTR_TYPE__ ptrcast;

#if (__SIZEOF_POINTER__ == 4)
#define TM_LOAD  __builtin__ITM_RU4
#define TM_STORE __builtin__ITM_WU4
#elif (__SIZEOF_POINTER__ == 8)
#define TM_LOAD __builtin__ITM_RU8
#define TM_STORE __builtin__ITM_WU8
#else
#error Add target support here
#endif

struct mystruct_type {
  ptrcast *ptr;
} *mystruct;

ptrcast *someptr, **pp;
ptrcast ui;

void f(void)
{
  __transaction_atomic {
    ui = TM_LOAD  (&mystruct);
    mystruct = (struct mystruct_type *) ui;
    ui = TM_LOAD  (&someptr);
    someptr = (ptrcast *) ui;
    ui = (ptrcast) someptr;
    pp = &mystruct->ptr;
    TM_STORE (pp, ui);
  }
}

/* { dg-final { scan-tree-dump-times "mystruct = \{ .*ESCAPED" 1 "ealias" } } */
/* { dg-final { scan-tree-dump-times "someptr = .*same as mystruct" 1 "ealias" } } */
/* { dg-final { scan-tree-dump-times "ui\..* = .*same as mystruct" 1 "ealias" } } */
/* { dg-final { scan-tree-dump-times "pp\..* = .*same as mystruct" 1 "ealias" } } */
