https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63970
--- Comment #4 from wmi at google dot com --- (In reply to Jan Hubicka from comment #3) > Created attachment 34047 [details] > Patch > > Something like this (untested) may work Thanks! I tested your patch after minor change. It passed bootstrap and regression. It also solved the performance regression we saw in internal benchmarks. + if (origin_node && !origin_node->used_as_abstract_origin) + { + origin_node->used_as_abstract_origin = true; + enqueue_node (origin_node, &first, &reachable); // enqueue_node moved here + gcc_assert (!origin_node->prev_sibling_clone); + gcc_assert (!origin_node->next_sibling_clone); + for (origin_node = origin_node->clones; origin_node; + origin_node = origin_node->next_sibling_clone) + if (origin_node->decl == DECL_ABSTRACT_ORIGIN (node->decl)) + origin_node->used_as_abstract_origin = true; + } Wei.