33 lines
570 B
C
33 lines
570 B
C
/* { dg-do compile } */
|
|
/* { dg-options "-O -fdump-tree-ccp1" } */
|
|
|
|
int foo(void)
|
|
{
|
|
int i = 0;
|
|
char *p = (char *)&i;
|
|
return *(int *)p;
|
|
}
|
|
|
|
struct Foo {
|
|
int i;
|
|
} f;
|
|
|
|
int bar(void)
|
|
{
|
|
char *p = (char *)&f;
|
|
return ((struct Foo *)p)->i;
|
|
}
|
|
|
|
const struct Foo g;
|
|
|
|
int foobar(void)
|
|
{
|
|
struct Foo *p = (struct Foo *)&g;
|
|
return ((const struct Foo *)p)->i;
|
|
}
|
|
|
|
/* { dg-final { scan-tree-dump "= i;" "ccp1" } } */
|
|
/* { dg-final { scan-tree-dump "= f.i;" "ccp1" } } */
|
|
/* { dg-final { scan-tree-dump "= g.i;" "ccp1" } } */
|
|
/* { dg-final { cleanup-tree-dump "ccp1" } } */
|