https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78255
--- Comment #11 from Jeffrey A. Law <law at redhat dot com> --- IIRC the (proprietary) linker didn't generate argument shuffling stubs for indirect calls. So we ran into problems if any pass changed a direct into an indirect call. The only pass that did this back in the early 90s was CSE :-) If an indirect call were changed to a direct call, we could have an argument location mis-match, but the linker would step in and generate a little stub to shuffle them into the expected locations. Thus we never bothered trying to fix combine.