http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53780
--- Comment #9 from vincenzo Innocente <vincenzo.innocente at cern dot ch> 2012-06-29 15:31:12 UTC --- in any case the "regression" disappear if I declare inline the template methods in question template<typename T> + inline bool WorkerT<T>::implDoBegin(EventPrincipal& ep, EventSetup const& c, CurrentProcessingContext const* cpc) { etc so I would suggest not to touch anything until is not understood If it a real compiler bug or a "user" code mistake⦠v. On 29 Jun, 2012, at 5:03 PM, vincenzo.innocente at cern dot ch wrote: > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53780 > > --- Comment #8 from vincenzo Innocente <vincenzo.innocente at cern dot ch> > 2012-06-29 15:03:17 UTC --- > NOT when applied on the top of > gcc version 4.8.0 20120629 (experimental) [trunk revision 189073] (GCC) > svn diff > Index: gcc/tree.c > =================================================================== > --- gcc/tree.c (revision 189073) > +++ gcc/tree.c (working copy) > @@ -4910,7 +4910,15 @@ > fld_worklist_push (TYPE_MAIN_VARIANT (t), fld); > /* Do not walk TYPE_NEXT_VARIANT. We do not stream it and thus > do not and want not to reach unused variants this way. */ > - fld_worklist_push (TYPE_CONTEXT (t), fld); > + if (TYPE_CONTEXT (t)) > + { > + tree ctx = TYPE_CONTEXT (t); > + /* We adjust BLOCK TYPE_CONTEXTs to the innermost non-BLOCK one. > + So push that instead. */ > + while (ctx && TREE_CODE (ctx) == BLOCK) > + ctx = BLOCK_SUPERCONTEXT (ctx); > + fld_worklist_push (ctx, fld); > + } > /* Do not walk TYPE_CANONICAL. We do not stream it and thus do not > and want not to reach unused types this way. */ > > I'll try also with 4.7 > > did not manage yet to reproduce with simple examples using sigcpp... >