https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91111
--- Comment #5 from ktkachov at gcc dot gnu.org --- (In reply to Jakub Jelinek from comment #3) > Bisection shows that on the trunk before r264897 we emit: > casal x30, x1, [x0] > starting with r264897 we ICE and finally starting with r265398 we emit: > casal x30, x0, [x1] > The problem obviously is that combine propagates the hard register into the > memory, so we have > (reg/v:DI 0 x0 [orig:94 x0 ] [94]) > (mem:DI (reg:DI 0 x0 [ v ]) [6 v_2(D)->counter+0 S8 > A64]) > as the outputs and IRA/LRA doesn't know what should be honored in that case > because it can't honor both. > Note, "Q" constraint is requesting a MEM that has a register operand. > r265398 is certainly not backportable to 8.x or earlier, it had some many > follow-ups that it is out of question. That looks like it's orthogonal to inlining decisions so the kernel discussion shouldn't be blocked on this.