http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46488
--- Comment #35 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2010-11-30 23:25:57 UTC --- > I said in my comment that adding temporaries could correct the issue, > but they do not. I had some different test trees, and reviewing them, > what actually "corrected" in one of the builds was adding a volatile > modifier to APR_RING_HEAD, as in: > > #define APR_RING_HEAD(head, elem) \ > struct head { \ > struct elem * volatile next; \ > struct elem * volatile prev; \ > } > > to better match APR_RING_ENTRY. Probably a reasonable workaround. Having 2 different constructs APR_RING_ENTRY and APR_RING_HEAD for the same object is strange in any case.