Commit 1e193337 by Richard Henderson Committed by Richard Henderson

* genrecog.c (write_switch): Check for duplicate CODE cases.

From-SVN: r30276
parent cb2ec151
Sat Oct 30 14:38:22 1999 Richard Henderson <rth@cygnus.com>
* genrecog.c (write_switch): Check for duplicate CODE cases.
Sat Oct 30 14:31:48 1999 Richard Henderson <rth@cygnus.com> Sat Oct 30 14:31:48 1999 Richard Henderson <rth@cygnus.com>
* ggc-common.c: Update pre-function commentary. * ggc-common.c: Update pre-function commentary.
......
...@@ -1695,13 +1695,14 @@ write_switch (start, depth) ...@@ -1695,13 +1695,14 @@ write_switch (start, depth)
{ {
char codemap[NUM_RTX_CODE]; char codemap[NUM_RTX_CODE];
struct decision *ret; struct decision *ret;
RTX_CODE code;
memset (codemap, 0, sizeof(codemap)); memset (codemap, 0, sizeof(codemap));
printf (" switch (GET_CODE (x%d))\n {\n", depth); printf (" switch (GET_CODE (x%d))\n {\n", depth);
code = p->tests->u.code;
do do
{ {
RTX_CODE code = p->tests->u.code;
printf (" case "); printf (" case ");
print_code (code); print_code (code);
printf (":\n goto L%d;\n", p->success.first->number); printf (":\n goto L%d;\n", p->success.first->number);
...@@ -1710,7 +1711,10 @@ write_switch (start, depth) ...@@ -1710,7 +1711,10 @@ write_switch (start, depth)
codemap[code] = 1; codemap[code] = 1;
p = p->next; p = p->next;
} }
while (p && p->tests->type == DT_code && !p->tests->next); while (p
&& ! p->tests->next
&& p->tests->type == DT_code
&& ! codemap[code = p->tests->u.code]);
/* If P is testing a predicate that we know about and we haven't /* If P is testing a predicate that we know about and we haven't
seen any of the codes that are valid for the predicate, we can seen any of the codes that are valid for the predicate, we can
......
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