Jan Hubicka <hubi...@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 >>