https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104153

--- Comment #1 from rdapp at linux dot ibm.com ---
I was able to reproduce the ICE on a cross compiler. Curiously, we do not even
succeed with if-conversion here but nevertheless emit an insn

(jump_insn 78 9 79 6 (set (pc)
        (if_then_else (ne:BI (reg:BI 34 ?sr_f)
                (reg:SI 160))
            (label_ref:SI 218)
            (pc)))
"../../../../../../..//newlib-cygwin/newlib/libm/math/s_floor.c":90:14 77
{*cbranch}
     (expr_list:REG_DEAD (reg:BI 34 ?sr_f)
        (int_list:REG_BR_PROB 536870916 (nil)))
 -> 218)

while reg:SI 160 is nowhere to be found.

Most likely the way I emit the sequences has side effects that I failed to
properly revert.  Everything should be inside

begin_sequence ()
end_sequence ()

blocks but that is not sufficient.  I guess if the optabs interfaces are
exposed and used like in the patch we also need delete_insns_since () or
similar?  The problem is most likely latent on other targets as well.

Reply via email to