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.

Reply via email to