1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
6 struct c
{void * a
;} c
;
7 struct d
{short * a
;} d
;
9 int *ip
= (int *)(size_t)2;
17 int* const* cipp
= (int* const*)ipp
;
18 /* as an extension we consider void * universal. Writes to it should alias. */
19 asm ("":"=r"(ptr
):"0"(&a
));
21 *ptr
=(float*)(size_t)1;
28 asm ("":"=r"(uptr
):"0"(&b
));
30 *uptr
=(void*)(size_t)1;
37 /* Check that we disambiguate int * and char *. */
38 asm ("":"=r"(ptr
):"0"(&b
));
40 *ptr
=(float*)(size_t)1;
44 /* Again we should make void * in the structure conflict with any pointer. */
45 asm ("":"=r"(ptr
):"0"(&c
));
47 *ptr
=(float*)(size_t)1;
54 asm ("":"=r"(uptr
):"0"(&d
));
56 *uptr
=(void*)(size_t)1;
63 if ((void *)*cipp
!= (void*)(size_t)2)