re PR target/15948 (THUMB: ICE with non-commutative cbranch)
* PR target/15948 * arm.md (bicsi3_cbranch): Add alternative to handle tying operands one and two. From-SVN: r83549
This commit is contained in:
parent
97358092a4
commit
e1d2bd1e44
|
@ -1,3 +1,9 @@
|
||||||
|
2004-06-23 Richard Earnshaw <rearnsha@arm.com>
|
||||||
|
|
||||||
|
* PR target/15948
|
||||||
|
* arm.md (bicsi3_cbranch): Add alternative to handle tying operands
|
||||||
|
one and two.
|
||||||
|
|
||||||
2004-06-23 Richard Earnshaw <rearnsha@arm.com>
|
2004-06-23 Richard Earnshaw <rearnsha@arm.com>
|
||||||
|
|
||||||
PR target/15927
|
PR target/15927
|
||||||
|
|
|
@ -6167,22 +6167,24 @@
|
||||||
[(set (pc)
|
[(set (pc)
|
||||||
(if_then_else
|
(if_then_else
|
||||||
(match_operator 5 "equality_operator"
|
(match_operator 5 "equality_operator"
|
||||||
[(and:SI (not:SI (match_operand:SI 3 "s_register_operand" "l,l,l,l"))
|
[(and:SI (not:SI (match_operand:SI 3 "s_register_operand" "l,l,l,l,l"))
|
||||||
(match_operand:SI 2 "s_register_operand" "0,1,1,1"))
|
(match_operand:SI 2 "s_register_operand" "0,1,1,1,1"))
|
||||||
(const_int 0)])
|
(const_int 0)])
|
||||||
(label_ref (match_operand 4 "" ""))
|
(label_ref (match_operand 4 "" ""))
|
||||||
(pc)))
|
(pc)))
|
||||||
(set (match_operand:SI 0 "thumb_cbrch_target_operand" "=l,*?h,*?m,*?m")
|
(set (match_operand:SI 0 "thumb_cbrch_target_operand" "=!l,l,*?h,*?m,*?m")
|
||||||
(and:SI (not:SI (match_dup 3)) (match_dup 2)))
|
(and:SI (not:SI (match_dup 3)) (match_dup 2)))
|
||||||
(clobber (match_scratch:SI 1 "=X,l,&l,&l"))]
|
(clobber (match_scratch:SI 1 "=X,l,l,&l,&l"))]
|
||||||
"TARGET_THUMB"
|
"TARGET_THUMB"
|
||||||
"*
|
"*
|
||||||
{
|
{
|
||||||
if (which_alternative == 0)
|
if (which_alternative == 0)
|
||||||
output_asm_insn (\"bic\\t%0, %3\", operands);
|
output_asm_insn (\"bic\\t%0, %3\", operands);
|
||||||
else if (which_alternative == 1)
|
else if (which_alternative <= 2)
|
||||||
{
|
{
|
||||||
output_asm_insn (\"bic\\t%1, %3\", operands);
|
output_asm_insn (\"bic\\t%1, %3\", operands);
|
||||||
|
/* It's ok if OP0 is a lo-reg, even though the mov will set the
|
||||||
|
conditions again, since we're only testing for equality. */
|
||||||
output_asm_insn (\"mov\\t%0, %1\", operands);
|
output_asm_insn (\"mov\\t%0, %1\", operands);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue