diff mbox series

Fix ICE in ipa-devirt

Message ID 20181119232830.fgfupxdhghqcqsc3@kam.mff.cuni.cz
State New
Headers show
Series Fix ICE in ipa-devirt | expand

Commit Message

Jan Hubicka Nov. 19, 2018, 11:28 p.m. UTC
Hi,
this patch fixes the second ICE exposed by the new testcase Marxin
added. Again the ODR warning needs work, so I commit it after getting
it right.

Bootstrapped/regtested x86_64-linux, comitted.

	PR lto/87957
	* ipa-devirt.c (free_enum_values): Do not ICE on ODR vilations.
diff mbox series

Patch

Index: ipa-devirt.c
===================================================================
--- ipa-devirt.c	(revision 266235)
+++ ipa-devirt.c	(working copy)
@@ -2268,12 +2268,14 @@  free_enum_values ()
   enum_values_freed = true;
   unsigned int i;
   for (i = 0; i < odr_types.length (); i++)
-    if (odr_types[i] && TREE_CODE (odr_types[i]->type) == ENUMERAL_TYPE)
+    if (odr_types[i])
       {
-	TYPE_VALUES (odr_types[i]->type) = NULL;
+	if (TREE_CODE (odr_types[i]->type) == ENUMERAL_TYPE)
+	  TYPE_VALUES (odr_types[i]->type) = NULL;
 	if (odr_types[i]->types)
           for (unsigned int j = 0; j < odr_types[i]->types->length (); j++)
-	    TYPE_VALUES ((*odr_types[i]->types)[j]) = NULL;
+	    if (TREE_CODE ((*odr_types[i]->types)[j]) == ENUMERAL_TYPE)
+	      TYPE_VALUES ((*odr_types[i]->types)[j]) = NULL;
       }
   enum_values_freed = true;
 }