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

--- Comment #6 from z.zhanghaijian at huawei dot com <z.zhanghaijian at huawei 
dot com> ---
(In reply to Segher Boessenkool from comment #5)
> Can you show the  -fdump-rtl-combine-all  dump where that insn is
> created?
> 
> It is fine to generate min or max insns here; but you need to handle the 
> case where vara is NaN: you should return that NaN then.  Other than that
> your function is just the max of vara, varb, varc.

The dump info:

Trying 39 -> 40:
   39: cc:CCFPE=cmp(r94:SF,r93:SF)
   40: r94:SF={(cc:CCFPE<0)?r94:SF:r93:SF}
      REG_DEAD r93:SF
      REG_DEAD cc:CCFPE
Successfully matched this instruction:
(set (reg:SF 94 [ _4 ])
    (smin:SF (reg:SF 94 [ _4 ])
        (reg:SF 93 [ _2 ])))
allowing combination of insns 39 and 40
original costs 4 + 4 = 8
replacement cost 8
deferring deletion of insn with uid = 39.
modifying insn i3    40: r94:SF=smin(r94:SF,r93:SF)
      REG_DEAD r93:SF
deferring rescan insn with uid = 40.

Reply via email to