https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86547
--- Comment #3 from Ilya Leoshkevich <iii at linux dot ibm.com> --- I think I found an issue in spill_hard_reg_in_range(). The idea behind the rclass loop in spill_hard_reg_in_range() seems to be: find a hard_regno, which in general conflicts with reload regno, but does not do so between `from` and `to`, and then do the live range splitting based on this information. To check the absence of conflicts, we make use of insn_bitmap, which does not contain insns which clobber the hard_regno. My current solution is: when selecting the hard_regno, make sure no insn between `from` and `to` clobbers it. This makes the compile fail with ‘asm’ operand has impossible constraints instead of an ICE, which is an improvement, but is still not perfect.