https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96252
--- Comment #6 from Jan Hubicka <hubicka at ucw dot cz> --- Thinking of it, perhaps also inliner could take a hint that it is inlining a tail call and do not produce unnecesary copy of the functio parameter passed by value. More generally, mod/ref has good chance to determine that parameter in its original location is not modified by the call and we could avoid the copy even for non-tailcalls? Still would be interesting to know why copy propagation gives up.