Commit cba998bf by Richard Kenner

*** empty log message ***

From-SVN: r166
parent 033ee812
...@@ -374,7 +374,7 @@ add_to_sequence (pattern, last, position) ...@@ -374,7 +374,7 @@ add_to_sequence (pattern, last, position)
{ {
new->code = preds[i].codes[0]; new->code = preds[i].codes[0];
if (! strcmp ("const_int_operand", new->tests)) if (! strcmp ("const_int_operand", new->tests))
new->tests = 0; new->tests = 0, new->pred = -1;
} }
for (j = 0; j < NUM_RTX_CODE && preds[i].codes[j] != 0; j++) for (j = 0; j < NUM_RTX_CODE && preds[i].codes[j] != 0; j++)
...@@ -1040,6 +1040,8 @@ write_tree_1 (tree, prevpos, afterward, type) ...@@ -1040,6 +1040,8 @@ write_tree_1 (tree, prevpos, afterward, type)
for (p = tree; p; p = p->next) for (p = tree; p; p = p->next)
{ {
enum machine_mode mode = p->enforce_mode ? p->mode : VOIDmode; enum machine_mode mode = p->enforce_mode ? p->mode : VOIDmode;
int need_bracket;
int wrote_bracket = 0;
int inner_indent; int inner_indent;
if (p->success.first == 0 && p->insn_code_number < 0) if (p->success.first == 0 && p->insn_code_number < 0)
...@@ -1296,12 +1298,19 @@ write_tree_1 (tree, prevpos, afterward, type) ...@@ -1296,12 +1298,19 @@ write_tree_1 (tree, prevpos, afterward, type)
else else
uncond = 1; uncond = 1;
need_bracket = ! uncond;
if (p->opno >= 0) if (p->opno >= 0)
{ {
printf ("%s{\n%sro[%d] = x%d;\n", if (need_bracket)
indents[inner_indent], indents[inner_indent + 2], {
p->opno, depth); printf ("%s{\n", indents[inner_indent]);
inner_indent += 2; inner_indent += 2;
wrote_bracket = 1;
need_bracket = 0;
}
printf ("%sro[%d] = x%d;\n", indents[inner_indent], p->opno, depth);
} }
if (p->c_test) if (p->c_test)
...@@ -1309,6 +1318,7 @@ write_tree_1 (tree, prevpos, afterward, type) ...@@ -1309,6 +1318,7 @@ write_tree_1 (tree, prevpos, afterward, type)
printf ("%sif (%s)\n", indents[inner_indent], p->c_test); printf ("%sif (%s)\n", indents[inner_indent], p->c_test);
inner_indent += 2; inner_indent += 2;
uncond = 0; uncond = 0;
need_bracket = 1;
} }
if (p->insn_code_number >= 0) if (p->insn_code_number >= 0)
...@@ -1320,7 +1330,7 @@ write_tree_1 (tree, prevpos, afterward, type) ...@@ -1320,7 +1330,7 @@ write_tree_1 (tree, prevpos, afterward, type)
{ {
if (p->num_clobbers_to_add) if (p->num_clobbers_to_add)
{ {
if (p->opno < 0 || p->c_test) if (need_bracket)
{ {
printf ("%s{\n", indents[inner_indent]); printf ("%s{\n", indents[inner_indent]);
inner_indent += 2; inner_indent += 2;
...@@ -1331,7 +1341,7 @@ write_tree_1 (tree, prevpos, afterward, type) ...@@ -1331,7 +1341,7 @@ write_tree_1 (tree, prevpos, afterward, type)
printf ("%sreturn %d;\n", printf ("%sreturn %d;\n",
indents[inner_indent], p->insn_code_number); indents[inner_indent], p->insn_code_number);
if (p->opno < 0 || p->c_test) if (need_bracket)
{ {
inner_indent -= 2; inner_indent -= 2;
printf ("%s}\n", indents[inner_indent]); printf ("%s}\n", indents[inner_indent]);
...@@ -1346,28 +1356,34 @@ write_tree_1 (tree, prevpos, afterward, type) ...@@ -1346,28 +1356,34 @@ write_tree_1 (tree, prevpos, afterward, type)
printf ("%sgoto L%d;\n", indents[inner_indent], printf ("%sgoto L%d;\n", indents[inner_indent],
p->success.first->number); p->success.first->number);
if (p->opno >= 0) if (wrote_bracket)
printf ("%s}\n", indents[inner_indent - 2]); printf ("%s}\n", indents[inner_indent - 2]);
} }
/* We have now tested all alternatives. End any switches we have open /* We have now tested all alternatives. End any switches we have open
and branch to the alternative node. */ and branch to the alternative node unless we know that we can't fall
through to the branch. */
if (switch_code != UNKNOWN) if (switch_code != UNKNOWN)
{ {
printf ("%s}\n", indents[indent - 2]); printf ("%s}\n", indents[indent - 2]);
indent -= 4; indent -= 4;
uncond = 0;
} }
if (switch_mode != VOIDmode) if (switch_mode != VOIDmode)
{ {
printf ("%s}\n", indents[indent - 2]); printf ("%s}\n", indents[indent - 2]);
indent -= 4; indent -= 4;
uncond = 0;
} }
if (indent != 2) if (indent != 2)
abort (); abort ();
if (uncond)
return;
if (afterward) if (afterward)
{ {
change_state (prevpos, afterward->position, 2); change_state (prevpos, afterward->position, 2);
...@@ -1417,7 +1433,7 @@ same_modes (p, mode) ...@@ -1417,7 +1433,7 @@ same_modes (p, mode)
register enum machine_mode mode; register enum machine_mode mode;
{ {
for (; p; p = p->next) for (; p; p = p->next)
if (p->mode != mode || p->tests) if ((p->enforce_mode ? p->mode : VOIDmode) != mode)
return 0; return 0;
return 1; return 1;
......
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