/* { 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; | |
} | |
extern 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" } } */ |