struct S { float f; }; int __attribute__((noinline)) foo (int *r, struct S *p) { int *q = (int *)&p->f; int i = *q; *r = 0; return i + *q; } extern void abort (void); int main() { int i = 1; if (foo (&i, (struct S *)&i) != 1) abort (); }
-- Summary: [4.4 Regression] Wrong code due to VIEW_CONVERT_EXPR Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rguenth at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38747