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...

Reply via email to