*** empty log message ***

From-SVN: r189
This commit is contained in:
Richard Kenner 1992-01-15 16:29:48 -05:00
parent e1c8bbf44b
commit de6a431bee
2 changed files with 31 additions and 12 deletions

View File

@ -1,5 +1,5 @@
/* Generate code from to output assembler insns as recognized from rtl.
Copyright (C) 1987-1991 Free Software Foundation, Inc.
Copyright (C) 1987, 1988, 1991 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -424,12 +424,12 @@ scan_operands (part, this_address_p, this_strict_low)
max_opno = opno;
if (max_opno >= MAX_MAX_OPERANDS)
{
error ("Too many operands (%d) in instruction pattern %d.\n",
error ("Too many operands (%d) in definition %d.\n",
max_opno + 1, next_index_number);
return;
}
if (seen[opno])
error ("Insn pattern %d specified operand number %d more than once.\n",
error ("Definition %d specified operand number %d more than once.\n",
next_index_number, opno);
seen[opno] = 1;
modes[opno] = GET_MODE (part);
@ -450,12 +450,12 @@ scan_operands (part, this_address_p, this_strict_low)
max_opno = opno;
if (max_opno >= MAX_MAX_OPERANDS)
{
error ("Too many operands (%d) in instruction pattern %d.\n",
error ("Too many operands (%d) in definition %d.\n",
max_opno + 1, next_index_number);
return;
}
if (seen[opno])
error ("Insn pattern %d specified operand number %d more than once.\n",
error ("Definition %d specified operand number %d more than once.\n",
next_index_number, opno);
seen[opno] = 1;
modes[opno] = GET_MODE (part);
@ -477,12 +477,12 @@ scan_operands (part, this_address_p, this_strict_low)
max_opno = opno;
if (max_opno >= MAX_MAX_OPERANDS)
{
error ("Too many operands (%d) in instruction pattern %d.\n",
error ("Too many operands (%d) in definition %d.\n",
max_opno + 1, next_index_number);
return;
}
if (seen[opno])
error ("Insn pattern %d specified operand number %d more than once.\n",
error ("Definition %d specified operand number %d more than once.\n",
next_index_number, opno);
seen[opno] = 1;
modes[opno] = GET_MODE (part);

View File

@ -1,5 +1,5 @@
/* Generate code from machine description to recognize rtl as insns.
Copyright (C) 1987-1991 Free Software Foundation, Inc.
Copyright (C) 1987, 1988, 1991 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -81,7 +81,7 @@ struct decision
int test_elt_zero_int; /* Nonzero if should test XINT (rtl, 0) */
int elt_zero_int; /* Required value for XINT (rtl, 0) */
int test_elt_one_int; /* Nonzero if should test XINT (rtl, 1) */
int elt_one_int; /* Required value for XINT (rtl, 2) */
int elt_one_int; /* Required value for XINT (rtl, 1) */
char *tests; /* If nonzero predicate to call */
int pred; /* `preds' index of predicate or -1 */
char *c_test; /* Additional test to perform */
@ -824,11 +824,30 @@ merge_trees (oldh, addh)
}
}
old->success = merge_trees (old->success, add->success);
if (old->insn_code_number >= 0 && add->insn_code_number >= 0)
fatal ("Two actions at one point in tree");
{
/* If one node is for a normal insn and the second is
for the base insn with clobbers stripped off, the
second node should be ignored. */
if (old->num_clobbers_to_add == 0
&& add->num_clobbers_to_add > 0)
/* Nothing to do here. */
;
else if (old->num_clobbers_to_add > 0
&& add->num_clobbers_to_add == 0)
{
/* In this case, replace OLD with ADD. */
old->insn_code_number = add->insn_code_number;
old->num_clobbers_to_add = 0;
}
else
fatal ("Two actions at one point in tree");
}
if (old->insn_code_number == -1)
old->insn_code_number = add->insn_code_number;
old->success = merge_trees (old->success, add->success);
add = 0;
break;
}
@ -1609,7 +1628,7 @@ fatal (s, a1, a2)
fprintf (stderr, "genrecog: ");
fprintf (stderr, s, a1, a2);
fprintf (stderr, "\n");
fprintf (stderr, "after %d instruction definitions\n", next_index);
fprintf (stderr, "after %d definitions\n", next_index);
exit (FATAL_EXIT_CODE);
}