+2002-03-23 Andrew Cagney <ac131313@redhat.com>
+
+ * gen.c (format_name_cmp): New function.
+ (insn_list_insert): Use the instruction field name as an
+ additional key. Different field names indicate different
+ semantics.
+
2002-03-07 Chris Demetriou <cgd@broadcom.com>
* igen.c (print_itrace_format): Add support for a new "%#lx" format.
}
}
-
+/* Same as strcmp(). */
+static int
+format_name_cmp (const char *l, const char *r)
+{
+ if (l == NULL && r == NULL)
+ return 0;
+ if (l != NULL && r == NULL)
+ return -1;
+ if (l == NULL && r != NULL)
+ return +1;
+ return strcmp (l, r);
+}
typedef enum {
else if (cmp > 0)
continue;
+ /* key#4 sort according to the format-name. If two apparently
+ identical instructions have unique format-names, then the
+ instructions are different. This is because the
+ format-name's use is overloaded, it not only indicates the
+ format name but also provides a unique semantic name for the
+ function. */
+ cmp = format_name_cmp (insn->format_name, (*cur_insn_ptr)->insn->format_name);
+ if (cmp < 0)
+ break;
+ else if (cmp > 0)
+ continue;
+
/* duplicate keys, report problem */
switch (duplicate_action)
{