Commit fd7bcd6f by Bernd Schmidt Committed by Bernd Schmidt

Fix ARM bootstrap problems introduced by last change

From-SVN: r38399
parent 99c8c61c
2000-12-20 Bernd Schmidt <bernds@redhat.com>
* flow.c (ior_reg_cond, and_reg_cond, elim_reg_cond): Properly
handle all relational operators.
2000-12-20 Alexandre Oliva <aoliva@redhat.com> 2000-12-20 Alexandre Oliva <aoliva@redhat.com>
* final.c (output_addr_const): Use ASM_OUTPUT_SYMBOL_REF. * final.c (output_addr_const): Use ASM_OUTPUT_SYMBOL_REF.
......
...@@ -5010,6 +5010,20 @@ ior_reg_cond (old, x, add) ...@@ -5010,6 +5010,20 @@ ior_reg_cond (old, x, add)
{ {
rtx op0, op1; rtx op0, op1;
if (GET_RTX_CLASS (GET_CODE (old)) == '<')
{
if (GET_RTX_CLASS (GET_CODE (x)) == '<'
&& GET_CODE (x) == reverse_condition (GET_CODE (old))
&& REGNO (XEXP (x, 0)) == REGNO (XEXP (old, 0)))
return const1_rtx;
if (GET_CODE (x) == GET_CODE (old)
&& REGNO (XEXP (x, 0)) == REGNO (XEXP (old, 0)))
return old;
if (! add)
return old;
return gen_rtx_IOR (0, old, x);
}
switch (GET_CODE (old)) switch (GET_CODE (old))
{ {
case IOR: case IOR:
...@@ -5062,19 +5076,6 @@ ior_reg_cond (old, x, add) ...@@ -5062,19 +5076,6 @@ ior_reg_cond (old, x, add)
return old; return old;
return gen_rtx_IOR (0, old, x); return gen_rtx_IOR (0, old, x);
case EQ:
case NE:
if ((GET_CODE (x) == EQ || GET_CODE (x) == NE)
&& GET_CODE (x) != GET_CODE (old)
&& REGNO (XEXP (x, 0)) == REGNO (XEXP (old, 0)))
return const1_rtx;
if (GET_CODE (x) == GET_CODE (old)
&& REGNO (XEXP (x, 0)) == REGNO (XEXP (old, 0)))
return old;
if (! add)
return old;
return gen_rtx_IOR (0, old, x);
default: default:
abort (); abort ();
} }
...@@ -5112,6 +5113,20 @@ and_reg_cond (old, x, add) ...@@ -5112,6 +5113,20 @@ and_reg_cond (old, x, add)
{ {
rtx op0, op1; rtx op0, op1;
if (GET_RTX_CLASS (GET_CODE (old)) == '<')
{
if (GET_RTX_CLASS (GET_CODE (x)) == '<'
&& GET_CODE (x) == reverse_condition (GET_CODE (old))
&& REGNO (XEXP (x, 0)) == REGNO (XEXP (old, 0)))
return const0_rtx;
if (GET_CODE (x) == GET_CODE (old)
&& REGNO (XEXP (x, 0)) == REGNO (XEXP (old, 0)))
return old;
if (! add)
return old;
return gen_rtx_AND (0, old, x);
}
switch (GET_CODE (old)) switch (GET_CODE (old))
{ {
case IOR: case IOR:
...@@ -5164,19 +5179,6 @@ and_reg_cond (old, x, add) ...@@ -5164,19 +5179,6 @@ and_reg_cond (old, x, add)
return old; return old;
return gen_rtx_AND (0, old, x); return gen_rtx_AND (0, old, x);
case EQ:
case NE:
if ((GET_CODE (x) == EQ || GET_CODE (x) == NE)
&& GET_CODE (x) != GET_CODE (old)
&& REGNO (XEXP (x, 0)) == REGNO (XEXP (old, 0)))
return const0_rtx;
if (GET_CODE (x) == GET_CODE (old)
&& REGNO (XEXP (x, 0)) == REGNO (XEXP (old, 0)))
return old;
if (! add)
return old;
return gen_rtx_AND (0, old, x);
default: default:
abort (); abort ();
} }
...@@ -5193,6 +5195,14 @@ elim_reg_cond (x, regno) ...@@ -5193,6 +5195,14 @@ elim_reg_cond (x, regno)
unsigned int regno; unsigned int regno;
{ {
rtx op0, op1; rtx op0, op1;
if (GET_RTX_CLASS (GET_CODE (x)) == '<')
{
if (REGNO (XEXP (x, 0)) == regno)
return const0_rtx;
return x;
}
switch (GET_CODE (x)) switch (GET_CODE (x))
{ {
case AND: case AND:
...@@ -5231,11 +5241,6 @@ elim_reg_cond (x, regno) ...@@ -5231,11 +5241,6 @@ elim_reg_cond (x, regno)
return not_reg_cond (op0); return not_reg_cond (op0);
return x; return x;
case EQ:
case NE:
if (REGNO (XEXP (x, 0)) == regno)
return const0_rtx;
return x;
default: default:
abort (); abort ();
} }
......
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