https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64049
Bernd Edlinger <edlinger at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |edlinger at gcc dot gnu.org --- Comment #12 from Bernd Edlinger <edlinger at gcc dot gnu.org> --- not sure if I even know what I'm doing, but this seems to fix the test case: Index: ipa-polymorphic-call.c =================================================================== --- ipa-polymorphic-call.c (revision 218433) +++ ipa-polymorphic-call.c (working copy) @@ -1047,7 +1047,8 @@ if (TREE_CODE (base_pointer) == SSA_NAME && SSA_NAME_IS_DEFAULT_DEF (base_pointer) - && TREE_CODE (SSA_NAME_VAR (base_pointer)) != PARM_DECL) + && TREE_CODE (SSA_NAME_VAR (base_pointer)) != PARM_DECL + && TREE_CODE (SSA_NAME_VAR (base_pointer)) != RESULT_DECL) { invalid = true; if (instance) This line is hit exactly once, but with a RESULT_DECL instead of a PARM_DECL. setting invalid=true makes the whole thing look so invalid that it gets replaced by __builtin_unreachable() later on.