/* { 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

void candy ();

struct mystruct_type {
  ptrcast *ptr;
} *mystruct, *mystruct2;

ptrcast *someptr, **pp;
ptrcast ui;

void tootsie_roll () __attribute__((transaction_wrap (candy)));
void tootsie_roll ()
{
  ui = TM_LOAD  (&mystruct);
  mystruct2 = (struct mystruct_type *) ui;

  pp = &mystruct2->ptr;
}

void foo()
{
  candy();
}

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