[Bug lto/87089] [9 regression] tree check: expected class 'type', have 'declaration' (namespace_decl) in type_with_linkage_p, at ipa-utils.h
hubicka at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Feb 9 18:05:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87089
--- Comment #10 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Jason,
I can avoid the ICE by simply not simplifying contexts for all C++ destructors.
Index: tree.c
===================================================================
--- tree.c (revision 268728)
+++ tree.c (working copy)
@@ -5772,7 +5772,7 @@ free_lang_data_in_decl (tree decl, struc
these are needed by devirtualization. */
if (TREE_CODE (decl) != FIELD_DECL
&& ((TREE_CODE (decl) != VAR_DECL && TREE_CODE (decl) != FUNCTION_DECL)
- || !DECL_VIRTUAL_P (decl)))
+ || (!DECL_VIRTUAL_P (decl) && !DECL_CXX_DESTRUCTOR_P (decl))))
DECL_CONTEXT (decl) = fld_decl_context (DECL_CONTEXT (decl));
}
but it seems to me this is more a workaround - if the destructor is virtual, it
should have VIRTUAL flag set. Or is there any reason we want to handle it
differently then any other normal virutal function in the middle-end?
More information about the Gcc-bugs
mailing list