> (reg:SF 139) can hold the value (const_double:SF 0) but (subreg:SI
> (reg:SF 139)) should be the value (const_int 0).  Perhaps the problem
> is how we handle a REG_EQUAL note when the destination of the set is a
> SUBREG.

(subreg:SI (reg:SF 139), 0) shouldnt be able to hold the value
(float:SF (reg:SI 138) ? Am I right on this ? Because the expander
generates the following while storing the return value
(insn 17 18 19 testcase-min.i:8 (set (subreg:SI (reg:SF 139) 0)
        (mem/c/i:SI (reg/f:SI 129 virtual-stack-vars) [2 S4 A32])) -1
(expr_list:REG_LIBCALL_ID (const_int 1 [0x1])
        (insn_list:REG_RETVAL 14 (expr_list:REG_EQUAL (float:SF (reg:SI 138))
                (nil)))))

The answer to this question will help me decide where to fix the
problem, In the expander itself or while processing REG_EQUAL in the
cse pass.

Thanks,
Pranav

Reply via email to