The PR23190 fix on gcc-4_0-branch introduced a regression, which leads to not being able to load some Linux kernel modules which abuse compound literals.
Short testcase: extern void abort (void); struct A { int i; int j; }; struct B { struct A *a; struct A *b; }; struct C { struct B *c; struct A *d; }; struct C e = { &(struct B) { &(struct A) { 1, 2 }, &(struct A) { 3, 4 } }, &(struct A) { 5, 6 } }; int main (void) { if (e.c->a->i != 1 || e.c->a->j != 2) abort (); if (e.c->b->i != 3 || e.c->b->j != 4) abort (); if (e.d->i != 5 || e.d->j != 6) abort (); return 0; } At -O0, -O1 or say -Os -fno-unit-at-a-time, this results in undefined __compound_literal.[01] symbols. The problem doesn't reproduce on HEAD, which has the PR23190 fix as well. -- Summary: [4.0 Regression] -fno-unit-at-a-time failure with compound literals Product: gcc Version: 4.0.2 Status: UNCONFIRMED Severity: critical Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org,mark at codesourcery dot com,rth at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24109