Testcase: int f(float *); int g(float x) { return f(&(float){x}) + f(&x); } ---- When we gimplify this we get: g (x) { int D.1613; float D.1612; int D.1614; int D.1615;
D.1612 = x; D.1614 = f (&D.1612); D.1615 = f (&x); Which is obvious invalid gimple as both D.1612 and x are non gimple registers (and not aggergates). -- Summary: Compound literal can cause invalid gimple Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org OtherBugsDependingO 30142 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30265