https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67260
--- Comment #5 from Rich Felker <bugdal at aerifal dot cx> --- Oleg, thanks for the tip. I think what Alexander is saying about r0-r3 is: 1. that the "k" constraint that's currently used is not working to automatically assign a scratch register because r4-r7 are all live as argument registers and r0-r3 are spuriously live as the return value, or something like that, 2. that using a fixed register that's not represented at all in the RTL constraints for sibcall_value_pcrel would work instead, and 3. that if a fixed register is used, r1-r3 would be better choices than r0 since r0 is special and some instructions (that could otherwise be scheduled between the load of the target address and the actual call) have r0 hard-coded as one of their operands. I'm still not sufficiently familiar with RTL to know if I got all that right, but hopefully it's at least close.