Fix 2 bugs with parsing the resource dependency tables.

* ia64-gen.c (fetch_insn_class): If xsect, then ignore comment and
	notestr if larger than xsect.
	(in_class): Handle format M5.
	* ia64-asmtab.c: Regnerate.
This commit is contained in:
Jim Wilson 2001-03-20 02:32:27 +00:00
parent 3c37485b16
commit f4bc6bb0c2
3 changed files with 471 additions and 430 deletions

View File

@ -1,3 +1,10 @@
2001-03-19 Jim Wilson <wilson@redhat.com>
* ia64-gen.c (fetch_insn_class): If xsect, then ignore comment and
notestr if larger than xsect.
(in_class): Handle format M5.
* ia64-asmtab.c: Regnerate.
2001-03-19 John David Anglin <dave@hiauly1.hia.nrc.ca>
* vax-dis.c (print_insn_vax): Only fetch two bytes if the info buffer

File diff suppressed because it is too large Load Diff

View File

@ -399,9 +399,21 @@ fetch_insn_class(const char *full_name, int create)
if ((comment = strchr(name, '[')) != NULL)
is_class = 1;
if ((notestr = strchr(name, '+')) != NULL)
is_class = 1;
/* If it is a composite class, then ignore comments and notes that come after
the '\\', since they don't apply to the part we are decoding now. */
if (xsect)
{
if (comment > xsect)
comment = 0;
if (notestr > xsect)
notestr = 0;
}
if (notestr)
{
char *nextnotestr;
is_class = 1;
note = atoi (notestr + 1);
if ((nextnotestr = strchr (notestr + 1, '+')) != NULL)
{
@ -413,8 +425,9 @@ fetch_insn_class(const char *full_name, int create)
}
}
/* if it's a composite class, leave the notes and comments in place so that
we have a unique name for the composite class */
/* If it's a composite class, leave the notes and comments in place so that
we have a unique name for the composite class. Otherwise, we remove
them. */
if (!xsect)
{
if (notestr)
@ -1055,6 +1068,9 @@ in_iclass(struct ia64_opcode *idesc, struct iclass *ic,
resolved = idesc->operands[0] == IA64_OPND_B2;
else if (strcmp (ic->name, "invala") == 0)
resolved = strcmp (idesc->name, ic->name) == 0;
else if (strncmp (idesc->name, "st", 2) == 0
&& strstr (format, "M5") != NULL)
resolved = idesc->flags & IA64_OPCODE_POSTINC;
else
resolved = 0;
}