[PATCH] Use types_compatible_p in get_binfo_at_offset

Richard Biener richard.guenther@gmail.com
Sat May 11 08:42:00 GMT 2013


Jan Hubicka <hubicka@ucw.cz> wrote:

>> 
>> The existing check should work ok with lto. If not then we should
>figure out why we do not merge the main variants properly.
>Hmm, adding:
>Index: tree.c
>===================================================================
>--- tree.c      (revision 198796)
>+++ tree.c      (working copy)
>@@ -11572,6 +11572,12 @@ get_binfo_at_offset (tree binfo, HOST_WI
> 
>     if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (expected_type))
>          return binfo;
>+      else
>+       if (types_compatible_p (type, expected_type))
>+         {
>+           debug_tree (TYPE_MAIN_VARIANT (type));
>+           debug_tree (TYPE_MAIN_VARIANT (expected_type));
>+         }
>       if (offset < 0)
>        return NULL_TREE;
> 
>@@ -11605,6 +11611,12 @@ get_binfo_at_offset (tree binfo, HOST_WI
>                found_binfo = base_binfo;
>                break;
>              }
>+             else
>+               if (types_compatible_p (TREE_TYPE (base_binfo),
>TREE_TYPE (fld)))
>+                 {
>+                   debug_tree (TREE_TYPE (base_binfo));
>+                   debug_tree (TREE_TYPE (fld));
>+                 }
>          if (!found_binfo)
>            return NULL_TREE;
>          binfo = found_binfo;
>
>seems to bring a lot of positives and by quick inspection most of them
>seem
>like same classes.  I will try to find some time to debug this more.
>But
>glancing over the the dumps, I see many of them just have different
>name
>spaces.  Do we even attempt to merge namespace_decl? How types from
>same
>namespaces in different units are supposed to match?
>
We do not merge namespace decls, which is likely the issue here. My in-progress tree merging should eventually fix this...

Richard.

>Honza
>> 
>> Richard.
>> 
>> >Honza
>> 




More information about the Gcc-patches mailing list