* ld-insn.c (print_insn_words): For fields, print conditionals.
This commit is contained in:
parent
f72344f7a1
commit
ae9cd41118
@ -1,5 +1,7 @@
|
||||
2011-07-08 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* ld-insn.c (print_insn_words): For fields, print conditionals.
|
||||
|
||||
Correct handling of constant named fields.
|
||||
* gen.c (insn_field_cmp): Tweak comment about neither field
|
||||
being an insn_field_string with a cond_eq-to-value condition.
|
||||
|
@ -1289,6 +1289,8 @@ print_insn_words (lf *file, insn_entry * insn)
|
||||
insn_field_entry *field = word->first;
|
||||
while (1)
|
||||
{
|
||||
insn_field_cond *cond;
|
||||
|
||||
if (options.insn_specifying_widths)
|
||||
lf_printf (file, "%d.", field->width);
|
||||
else
|
||||
@ -1310,6 +1312,34 @@ print_insn_words (lf *file, insn_entry * insn)
|
||||
break;
|
||||
case insn_field_string:
|
||||
lf_printf (file, "%s", field->val_string);
|
||||
|
||||
if (field->conditions == NULL)
|
||||
break;
|
||||
|
||||
if (field->conditions->test == insn_field_cond_eq)
|
||||
{
|
||||
if (field->conditions->type == insn_field_cond_value)
|
||||
lf_printf (file, "=%ld",
|
||||
(long) field->conditions->value);
|
||||
else
|
||||
lf_printf (file, "=%s", field->conditions->string);
|
||||
|
||||
/* There can be only one equality condition. */
|
||||
ASSERT (field->conditions->next == NULL);
|
||||
break;
|
||||
}
|
||||
|
||||
for (cond = field->conditions;
|
||||
cond != NULL;
|
||||
cond = cond->next)
|
||||
{
|
||||
ASSERT (cond->test == insn_field_cond_ne);
|
||||
|
||||
if (cond->type == insn_field_cond_value)
|
||||
lf_printf (file, "!%ld", (long) cond->value);
|
||||
else
|
||||
lf_printf (file, "!%s", cond->string);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (field == word->last)
|
||||
|
Loading…
Reference in New Issue
Block a user