http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46488
--- Comment #36 from rguenther at suse dot de <rguenther at suse dot de> 2010-12-01 10:12:21 UTC --- On Tue, 30 Nov 2010, ebotcazou at gcc dot gnu.org wrote: > 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. If you'd re-use the same type the issue would go away as well (I think). Richard.