Commit 0620be18 by Jan Hubicka Committed by Jan Hubicka

re PR target/15433 (ICE, cannot split insn)


	PR target/15433
	* i386.md (SSE SF cmov 0 splitter): The conditional is VOIDmode; fix
	operand numbering in the output template.
	(SSE DF cmov 0 splitter): The conditional is VOIDmode.

From-SVN: r83305
parent 2df6cea5
2004-06-17 Jan Hubicka <jh@suse.cz> 2004-06-17 Jan Hubicka <jh@suse.cz>
PR target/15433
* i386.md (SSE SF cmov 0 splitter): The conditional is VOIDmode; fix
operand numbering in the output template.
(SSE DF cmov 0 splitter): The conditional is VOIDmode.
2004-06-17 Jan Hubicka <jh@suse.cz>
* except.c (can_throw_internal): Recognize RESX expresisons.
2004-06-17 Jan Hubicka <jh@suse.cz>
* cfgbuild.c (make_edges): Do not use label_value_list. * cfgbuild.c (make_edges): Do not use label_value_list.
(find_basic_blocks_1): Do not collect label_value_list. (find_basic_blocks_1): Do not collect label_value_list.
(find_sub_basic_blocks): Update call of make_edges. (find_sub_basic_blocks): Update call of make_edges.
......
...@@ -18191,7 +18191,7 @@ ...@@ -18191,7 +18191,7 @@
(define_split (define_split
[(set (match_operand:SF 0 "register_operand" "") [(set (match_operand:SF 0 "register_operand" "")
(if_then_else (match_operator:SF 1 "comparison_operator" (if_then_else (match_operator 1 "comparison_operator"
[(match_operand:SF 4 "nonimmediate_operand" "") [(match_operand:SF 4 "nonimmediate_operand" "")
(match_operand:SF 5 "nonimmediate_operand" "")]) (match_operand:SF 5 "nonimmediate_operand" "")])
(match_operand:SF 2 "nonmemory_operand" "") (match_operand:SF 2 "nonmemory_operand" "")
...@@ -18217,19 +18217,19 @@ ...@@ -18217,19 +18217,19 @@
if (const0_operand (operands[2], GET_MODE (operands[2]))) if (const0_operand (operands[2], GET_MODE (operands[2])))
{ {
operands[7] = operands[3]; operands[7] = operands[3];
operands[6] = gen_rtx_NOT (V4SFmode, operands[5]); operands[6] = gen_rtx_NOT (V4SFmode, operands[8]);
} }
else else
{ {
operands[7] = operands[2]; operands[7] = operands[2];
operands[6] = operands[0]; operands[6] = operands[8];
} }
operands[7] = simplify_gen_subreg (V4SFmode, operands[7], SFmode, 0); operands[7] = simplify_gen_subreg (V4SFmode, operands[7], SFmode, 0);
}) })
(define_split (define_split
[(set (match_operand:DF 0 "register_operand" "") [(set (match_operand:DF 0 "register_operand" "")
(if_then_else (match_operator:DF 1 "comparison_operator" (if_then_else (match_operator 1 "comparison_operator"
[(match_operand:DF 4 "nonimmediate_operand" "") [(match_operand:DF 4 "nonimmediate_operand" "")
(match_operand:DF 5 "nonimmediate_operand" "")]) (match_operand:DF 5 "nonimmediate_operand" "")])
(match_operand:DF 2 "nonmemory_operand" "") (match_operand:DF 2 "nonmemory_operand" "")
......
...@@ -3114,6 +3114,11 @@ can_throw_internal (rtx insn) ...@@ -3114,6 +3114,11 @@ can_throw_internal (rtx insn)
if (! INSN_P (insn)) if (! INSN_P (insn))
return false; return false;
if (GET_CODE (insn) == JUMP_INSN
&& GET_CODE (PATTERN (insn)) == RESX
&& XINT (PATTERN (insn), 0) > 0)
return can_throw_internal_1 (XINT (PATTERN (insn), 0));
if (GET_CODE (insn) == INSN if (GET_CODE (insn) == INSN
&& GET_CODE (PATTERN (insn)) == SEQUENCE) && GET_CODE (PATTERN (insn)) == SEQUENCE)
insn = XVECEXP (PATTERN (insn), 0, 0); insn = XVECEXP (PATTERN (insn), 0, 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment