/* { dg-do compile } */ | |
/* { dg-options "-O2 -fdump-tree-esra" } */ | |
typedef __UINT64_TYPE__ uint64_t; | |
typedef __UINT32_TYPE__ uint32_t; | |
struct S { uint32_t i[2]; } __attribute__((aligned(__alignof__(uint64_t)))); | |
typedef uint64_t my_int64 __attribute__((may_alias)); | |
uint64_t load (void *p) | |
{ | |
struct S u, v, w; | |
uint64_t tem; | |
tem = *(my_int64 *)p; | |
*(my_int64 *)&v = tem; | |
u = v; | |
w = u; | |
return *(my_int64 *)&w; | |
} | |
/* { dg-final { scan-tree-dump "Created a replacement for v" "esra" } } */ |