*** empty log message ***
From-SVN: r189
This commit is contained in:
parent
e1c8bbf44b
commit
de6a431bee
@ -1,5 +1,5 @@
|
|||||||
/* Generate code from to output assembler insns as recognized from rtl.
|
/* 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.
|
This file is part of GNU CC.
|
||||||
|
|
||||||
@ -424,12 +424,12 @@ scan_operands (part, this_address_p, this_strict_low)
|
|||||||
max_opno = opno;
|
max_opno = opno;
|
||||||
if (max_opno >= MAX_MAX_OPERANDS)
|
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);
|
max_opno + 1, next_index_number);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (seen[opno])
|
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);
|
next_index_number, opno);
|
||||||
seen[opno] = 1;
|
seen[opno] = 1;
|
||||||
modes[opno] = GET_MODE (part);
|
modes[opno] = GET_MODE (part);
|
||||||
@ -450,12 +450,12 @@ scan_operands (part, this_address_p, this_strict_low)
|
|||||||
max_opno = opno;
|
max_opno = opno;
|
||||||
if (max_opno >= MAX_MAX_OPERANDS)
|
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);
|
max_opno + 1, next_index_number);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (seen[opno])
|
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);
|
next_index_number, opno);
|
||||||
seen[opno] = 1;
|
seen[opno] = 1;
|
||||||
modes[opno] = GET_MODE (part);
|
modes[opno] = GET_MODE (part);
|
||||||
@ -477,12 +477,12 @@ scan_operands (part, this_address_p, this_strict_low)
|
|||||||
max_opno = opno;
|
max_opno = opno;
|
||||||
if (max_opno >= MAX_MAX_OPERANDS)
|
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);
|
max_opno + 1, next_index_number);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (seen[opno])
|
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);
|
next_index_number, opno);
|
||||||
seen[opno] = 1;
|
seen[opno] = 1;
|
||||||
modes[opno] = GET_MODE (part);
|
modes[opno] = GET_MODE (part);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Generate code from machine description to recognize rtl as insns.
|
/* 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.
|
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 test_elt_zero_int; /* Nonzero if should test XINT (rtl, 0) */
|
||||||
int elt_zero_int; /* Required value for 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 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 */
|
char *tests; /* If nonzero predicate to call */
|
||||||
int pred; /* `preds' index of predicate or -1 */
|
int pred; /* `preds' index of predicate or -1 */
|
||||||
char *c_test; /* Additional test to perform */
|
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)
|
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)
|
if (old->insn_code_number == -1)
|
||||||
old->insn_code_number = add->insn_code_number;
|
old->insn_code_number = add->insn_code_number;
|
||||||
|
old->success = merge_trees (old->success, add->success);
|
||||||
add = 0;
|
add = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1609,7 +1628,7 @@ fatal (s, a1, a2)
|
|||||||
fprintf (stderr, "genrecog: ");
|
fprintf (stderr, "genrecog: ");
|
||||||
fprintf (stderr, s, a1, a2);
|
fprintf (stderr, s, a1, a2);
|
||||||
fprintf (stderr, "\n");
|
fprintf (stderr, "\n");
|
||||||
fprintf (stderr, "after %d instruction definitions\n", next_index);
|
fprintf (stderr, "after %d definitions\n", next_index);
|
||||||
exit (FATAL_EXIT_CODE);
|
exit (FATAL_EXIT_CODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user