Honza, 

One nit.

On 21 November 2018 19:08:43 CET, Jan Hubicka <hubi...@ucw.cz> wrote:
>> 

>Index: ipa-devirt.c
>===================================================================
>--- ipa-devirt.c       (revision 266334)
>+++ ipa-devirt.c       (working copy)

>@@ -2289,27 +2291,43 @@ dump_type_inheritance_graph (FILE *f)
>          "%i duplicates overall\n", num_all_types, num_types,
>num_duplicates);
> }
> 
>-/* Save some WPA->ltrans streaming by freeing enum values.  */
>+/* Save some WPA->ltrans streaming by freeing stuff needed only for
>good
>+   ODR warnings.
>+   We free TYPE_VALUES of enums and also make TYPE_DECLs to not point
>back
>+   to the type (which is needed to keep them in the same SCC and
>preserve
>+   location information to output warnings) and subsequently we make
>all
>+   TYPE_DECLS of same assembler name equivalent.  */
> 
> static void
>-free_enum_values ()
>+free_odr_warning_data ()
> {
>-  static bool enum_values_freed = false;
>-  if (enum_values_freed || !flag_wpa || !odr_types_ptr)
>+  static bool odr_data_freed = false;
>+
>+  if (odr_data_freed || !flag_wpa || !odr_types_ptr)
>     return;
>-  enum_values_freed = true;
>-  unsigned int i;
>-  for (i = 0; i < odr_types.length (); i++)
>+
>+  odr_data_freed = true;

First store to odr_data_freed is here. 

>+
>+  for (unsigned int i = 0; i < odr_types.length (); i++)
>     if (odr_types[i])
>       {
>-      if (TREE_CODE (odr_types[i]->type) == ENUMERAL_TYPE)
>-        TYPE_VALUES (odr_types[i]->type) = NULL;
>+      tree t = odr_types[i]->type;
>+
>+      if (TREE_CODE (t) == ENUMERAL_TYPE)
>+        TYPE_VALUES (t) = NULL;
>+      TREE_TYPE (TYPE_NAME (t)) = void_type_node;
>+
>       if (odr_types[i]->types)
>      for (unsigned int j = 0; j < odr_types[i]->types->length (); j++)
>-          if (TREE_CODE ((*odr_types[i]->types)[j]) == ENUMERAL_TYPE)
>-            TYPE_VALUES ((*odr_types[i]->types)[j]) = NULL;
>+          {
>+            tree td = (*odr_types[i]->types)[j];
>+
>+            if (TREE_CODE (td) == ENUMERAL_TYPE)
>+              TYPE_VALUES (td) = NULL;
>+            TYPE_NAME (td) = TYPE_NAME (t);
>+          }
>       }
>-  enum_values_freed = true;
>+  odr_data_freed = true;

So please remove this second store.
Thanks,
> }
> 

Reply via email to