https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67260
--- Comment #12 from Alexander Monakov <amonakov at gcc dot gnu.org> --- > Do you have anything in particular in mind? I mostly wonder why does sh.md change RTL representation of a sibcall that way, instead of simply generating the required relative address load upfront, during RTL expand. This way, RTL better matches final instruction stream, register allocation should be more natural, and the load of the relative address is subject to all RTL optimizations (so if you call a function in a loop, you can load the relative address once, out of the loop).