summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-17 19:53:56 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-17 19:53:56 +0000
commitbcb141cd4ea07a59c3f8fb72aaa39dd6417e9e78 (patch)
tree053a8077cb2900083eebe10257e55238335d682e /gcc
parent6ab3afb2eb15f27cdfe0e09d51847f003afa8cae (diff)
downloadppe42-gcc-bcb141cd4ea07a59c3f8fb72aaa39dd6417e9e78.tar.gz
ppe42-gcc-bcb141cd4ea07a59c3f8fb72aaa39dd6417e9e78.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83305 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/i386/i386.md8
-rw-r--r--gcc/except.c5
3 files changed, 20 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bab0cf09cc2..5e6e9258005 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,16 @@
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.
(find_basic_blocks_1): Do not collect label_value_list.
(find_sub_basic_blocks): Update call of make_edges.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index ed2c579330b..bb6aebfb047 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -18191,7 +18191,7 @@
(define_split
[(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 5 "nonimmediate_operand" "")])
(match_operand:SF 2 "nonmemory_operand" "")
@@ -18217,19 +18217,19 @@
if (const0_operand (operands[2], GET_MODE (operands[2])))
{
operands[7] = operands[3];
- operands[6] = gen_rtx_NOT (V4SFmode, operands[5]);
+ operands[6] = gen_rtx_NOT (V4SFmode, operands[8]);
}
else
{
operands[7] = operands[2];
- operands[6] = operands[0];
+ operands[6] = operands[8];
}
operands[7] = simplify_gen_subreg (V4SFmode, operands[7], SFmode, 0);
})
(define_split
[(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 5 "nonimmediate_operand" "")])
(match_operand:DF 2 "nonmemory_operand" "")
diff --git a/gcc/except.c b/gcc/except.c
index 7815fbb6141..3e663dbff8a 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -3114,6 +3114,11 @@ can_throw_internal (rtx insn)
if (! INSN_P (insn))
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
&& GET_CODE (PATTERN (insn)) == SEQUENCE)
insn = XVECEXP (PATTERN (insn), 0, 0);
OpenPOWER on IntegriCloud