Commit 910eabe5 by Jeffrey A Law Committed by Jeff Law

genattrtab.c (simplify_cond): Make TESTS an array of rtxs, instead of rtunions.

        * genattrtab.c (simplify_cond): Make TESTS an array of rtxs, instead
        of rtunions.

From-SVN: r29792
parent aedf9aa7
Sun Oct 3 14:14:16 1999 Jeffrey A Law (law@cygnus.com) Sun Oct 3 14:14:16 1999 Jeffrey A Law (law@cygnus.com)
* genattrtab.c (simplify_cond): Make TESTS an array of rtxs, instead
of rtunions.
* mbchar.h: Add missing #endif. * mbchar.h: Add missing #endif.
* t-fr30 (LIB2FUNCS_EXTRA): Remove definition. * t-fr30 (LIB2FUNCS_EXTRA): Remove definition.
......
...@@ -2531,14 +2531,14 @@ simplify_cond (exp, insn_code, insn_index) ...@@ -2531,14 +2531,14 @@ simplify_cond (exp, insn_code, insn_index)
rtx defval = XEXP (exp, 1); rtx defval = XEXP (exp, 1);
rtx new_defval = XEXP (exp, 1); rtx new_defval = XEXP (exp, 1);
int len = XVECLEN (exp, 0); int len = XVECLEN (exp, 0);
rtunion *tests = (rtunion *) alloca (len * sizeof (rtunion)); rtx *tests = (rtx *) alloca (len * sizeof (rtx));
int allsame = 1; int allsame = 1;
char *first_spacer; char *first_spacer;
/* This lets us free all storage allocated below, if appropriate. */ /* This lets us free all storage allocated below, if appropriate. */
first_spacer = (char *) obstack_finish (rtl_obstack); first_spacer = (char *) obstack_finish (rtl_obstack);
bcopy ((char *) XVEC (exp, 0)->elem, (char *) tests, len * sizeof (rtunion)); bcopy ((char *) XVEC (exp, 0)->elem, (char *) tests, len * sizeof (rtx));
/* See if default value needs simplification. */ /* See if default value needs simplification. */
if (GET_CODE (defval) == COND) if (GET_CODE (defval) == COND)
...@@ -2551,10 +2551,10 @@ simplify_cond (exp, insn_code, insn_index) ...@@ -2551,10 +2551,10 @@ simplify_cond (exp, insn_code, insn_index)
rtx newtest, newval; rtx newtest, newval;
/* Simplify this test. */ /* Simplify this test. */
newtest = SIMPLIFY_TEST_EXP (tests[i].rtx, insn_code, insn_index); newtest = SIMPLIFY_TEST_EXP (tests[i], insn_code, insn_index);
tests[i].rtx = newtest; tests[i] = newtest;
newval = tests[i + 1].rtx; newval = tests[i + 1];
/* See if this value may need simplification. */ /* See if this value may need simplification. */
if (GET_CODE (newval) == COND) if (GET_CODE (newval) == COND)
newval = simplify_cond (newval, insn_code, insn_index); newval = simplify_cond (newval, insn_code, insn_index);
...@@ -2565,7 +2565,7 @@ simplify_cond (exp, insn_code, insn_index) ...@@ -2565,7 +2565,7 @@ simplify_cond (exp, insn_code, insn_index)
/* If test is true, make this value the default /* If test is true, make this value the default
and discard this + any following tests. */ and discard this + any following tests. */
len = i; len = i;
defval = tests[i + 1].rtx; defval = tests[i + 1];
new_defval = newval; new_defval = newval;
} }
...@@ -2573,33 +2573,33 @@ simplify_cond (exp, insn_code, insn_index) ...@@ -2573,33 +2573,33 @@ simplify_cond (exp, insn_code, insn_index)
{ {
/* If test is false, discard it and its value. */ /* If test is false, discard it and its value. */
for (j = i; j < len - 2; j++) for (j = i; j < len - 2; j++)
tests[j].rtx = tests[j + 2].rtx; tests[j] = tests[j + 2];
len -= 2; len -= 2;
} }
else if (i > 0 && attr_equal_p (newval, tests[i - 1].rtx)) else if (i > 0 && attr_equal_p (newval, tests[i - 1]))
{ {
/* If this value and the value for the prev test are the same, /* If this value and the value for the prev test are the same,
merge the tests. */ merge the tests. */
tests[i - 2].rtx tests[i - 2]
= insert_right_side (IOR, tests[i - 2].rtx, newtest, = insert_right_side (IOR, tests[i - 2], newtest,
insn_code, insn_index); insn_code, insn_index);
/* Delete this test/value. */ /* Delete this test/value. */
for (j = i; j < len - 2; j++) for (j = i; j < len - 2; j++)
tests[j].rtx = tests[j + 2].rtx; tests[j] = tests[j + 2];
len -= 2; len -= 2;
} }
else else
tests[i + 1].rtx = newval; tests[i + 1] = newval;
} }
/* If the last test in a COND has the same value /* If the last test in a COND has the same value
as the default value, that test isn't needed. */ as the default value, that test isn't needed. */
while (len > 0 && attr_equal_p (tests[len - 1].rtx, new_defval)) while (len > 0 && attr_equal_p (tests[len - 1], new_defval))
len -= 2; len -= 2;
/* See if we changed anything. */ /* See if we changed anything. */
...@@ -2607,7 +2607,7 @@ simplify_cond (exp, insn_code, insn_index) ...@@ -2607,7 +2607,7 @@ simplify_cond (exp, insn_code, insn_index)
allsame = 0; allsame = 0;
else else
for (i = 0; i < len; i++) for (i = 0; i < len; i++)
if (! attr_equal_p (tests[i].rtx, XVECEXP (exp, 0, i))) if (! attr_equal_p (tests[i], XVECEXP (exp, 0, i)))
{ {
allsame = 0; allsame = 0;
break; break;
...@@ -2633,7 +2633,7 @@ simplify_cond (exp, insn_code, insn_index) ...@@ -2633,7 +2633,7 @@ simplify_cond (exp, insn_code, insn_index)
XVEC (newexp, 0) = rtvec_alloc (len); XVEC (newexp, 0) = rtvec_alloc (len);
bcopy ((char *) tests, (char *) XVEC (newexp, 0)->elem, bcopy ((char *) tests, (char *) XVEC (newexp, 0)->elem,
len * sizeof (rtunion)); len * sizeof (rtx));
XEXP (newexp, 1) = new_defval; XEXP (newexp, 1) = new_defval;
return newexp; return newexp;
} }
......
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