http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48585
--- Comment #10 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-04-21 11:07:03 UTC --- Hmm, I am not sure I follow here. So the bug seems to be that 1) ipa-cp produces a clone 2) somehow after WPA we inline the original function, not the clone right? How this can lead to more direct calls? Is the call represented as call to clone in the callgraph? If not, I guess ipa-cp produced clone but kept original copy around and we are inlining real cal to original copy. This can happen. If callgraph has call to clone properly represented, but somehow we end up inlining original, I would expect the original to have monotonously fewer direct calls, so we should have the call destination we discovered during inlining around... Only case i can think this might legally happen is inlining producing direct call via devirtualization from folding. In this case cgraph don't see the posibility and we need to add the cgraph node (we already checked that the destination is not static function in other unit) Honza