This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug debug/51650] [4.7 regression] LTO ICE in dwarf2out_finish, at dwarf2out.c:22501 while building libxul


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51650

--- Comment #19 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-12-23 11:51:41 UTC ---
A workaround for ICEs of this form is

Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c     (revision 182652)
+++ gcc/dwarf2out.c     (working copy)
@@ -22496,15 +22496,23 @@ dwarf2out_finish (const char *filename)
              else if (TYPE_P (node->created_for))
                context = TYPE_CONTEXT (node->created_for);

-             gcc_assert (context
-                         && (TREE_CODE (context) == FUNCTION_DECL
-                             || TREE_CODE (context) == NAMESPACE_DECL));
+             if (!(context
+                   && (TREE_CODE (context) == FUNCTION_DECL
+                       || TREE_CODE (context) == NAMESPACE_DECL)))
+               {
+                 if (!in_lto_p)
+                   gcc_unreachable ();

-             origin = lookup_decl_die (context);
-             if (origin)
-               add_child_die (origin, die);
+                 add_child_die (comp_unit_die (), die);
+               }
              else
-               add_child_die (comp_unit_die (), die);
+               {
+                 origin = lookup_decl_die (context);
+                 if (origin)
+                   add_child_die (origin, die);
+                 else
+                   add_child_die (comp_unit_die (), die);
+               }
            }
        }
     }

just in case you want to look further ;)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]