[Bug target/40934] [4.5 Regression] ICE in get_hard_regnum, at reg-stack.c:741
bonzini at gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Aug 1 22:58:00 GMT 2009
------- Comment #7 from bonzini at gnu dot org 2009-08-01 22:57 -------
Hmm, Pentium is not a cmove target and it doesn't like sahf, so
ix86_fp_comparison_operator matches all comparison operators. I would have
thought then that fp_jcc_3_387 would match:
(define_insn "*fp_jcc_3_387"
[(set (pc)
(if_then_else (match_operator 0 "ix86_fp_comparison_operator"
[(match_operand 1 "register_operand" "f")
(match_operand 2 "nonimmediate_operand" "fm")])
(label_ref (match_operand 3 "" ""))
(pc)))
(clobber (reg:CCFP FPSR_REG))
(clobber (reg:CCFP FLAGS_REG))
(clobber (match_scratch:HI 4 "=a"))]
"TARGET_80387
&& (GET_MODE (operands[1]) == SFmode || GET_MODE (operands[1]) == DFmode)
&& GET_MODE (operands[1]) == GET_MODE (operands[2])
&& SELECT_CC_MODE (GET_CODE (operands[0]),
operands[1], operands[2]) == CCFPmode
&& !TARGET_CMOVE"
"#")
Maybe the instruction was optimized for size:
enum ix86_fpcmp_strategy
ix86_fp_comparison_strategy (enum rtx_code code ATTRIBUTE_UNUSED)
{
/* Do fcomi/sahf based test when profitable. */
...
if (TARGET_SAHF && (TARGET_USE_SAHF || optimize_insn_for_size_p ()))
return IX86_FPCMP_SAHF;
return IX86_FPCMP_ARITH;
}
--
bonzini at gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed|2009-08-01 22:04:31 |2009-08-01 22:57:49
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40934
More information about the Gcc-bugs
mailing list