* config/tc-ia64.c (has_suffix_p): New.
authorRichard Henderson <rth@redhat.com>
Tue, 1 Jan 2002 01:18:17 +0000 (01:18 +0000)
committerRichard Henderson <rth@redhat.com>
Tue, 1 Jan 2002 01:18:17 +0000 (01:18 +0000)
        (note_register_values): Use it instead of strstr.

gas/ChangeLog
gas/config/tc-ia64.c

index d3d8e43740e591599fe6a0706b05a8c78c1af157..b9972703f0b01d073b2d8398133b0d7340432aca 100644 (file)
@@ -3,6 +3,9 @@
        * config/tc-ia64.c (errata_nop_necessary_p): Prototype.
        (make_unw_section_name): Constify local variables.
 
+       * config/tc-ia64.c (has_suffix_p): New.
+       (note_register_values): Use it instead of strstr.
+
 Mon Dec 31 16:48:07 2001  Jeffrey A Law  (law@redhat.com)
 
         * config/tc-hppa.c (pa_ip): Handle new 'c' mode completers,
index 4056dc264d6500a1f26aba1f962e16f915b8d1e9..fa51977c2d76b5c36bf79dae41304dfe69ca39c9 100644 (file)
@@ -733,6 +733,7 @@ static void add_qp_imply PARAMS((int p1, int p2));
 static void clear_qp_branch_flag PARAMS((valueT mask));
 static void clear_qp_mutex PARAMS((valueT mask));
 static void clear_qp_implies PARAMS((valueT p1_mask, valueT p2_mask));
+static int has_suffix_p PARAMS((const char *, const char *));
 static void clear_register_values PARAMS ((void));
 static void print_dependency PARAMS ((const char *action, int depind));
 static void instruction_serialization PARAMS ((void));
@@ -8630,6 +8631,19 @@ add_qp_mutex (mask)
   qp_mutexes[qp_mutexeslen++].prmask = mask;
 }
 
+static int
+has_suffix_p (name, suffix)
+      const char *name;
+      const char *suffix;
+{
+  size_t namelen = strlen (name);
+  size_t sufflen = strlen (suffix);
+
+  if (namelen <= sufflen)
+    return 0;
+  return strcmp (name + namelen - sufflen, suffix) == 0;
+}
+
 static void
 clear_register_values ()
 {
@@ -8747,21 +8761,19 @@ note_register_values (idesc)
        }
       /* In general, clear mutexes and implies which include P1 or P2,
         with the following exceptions.  */
-      else if (strstr (idesc->name, ".or.andcm") != NULL)
+      else if (has_suffix_p (idesc->name, ".or.andcm")
+              || has_suffix_p (idesc->name, ".and.orcm"))
        {
          add_qp_mutex (p1mask | p2mask);
          clear_qp_implies (p2mask, p1mask);
        }
-      else if (strstr (idesc->name, ".and.orcm") != NULL)
-       {
-         add_qp_mutex (p1mask | p2mask);
-         clear_qp_implies (p1mask, p2mask);
-       }
-      else if (strstr (idesc->name, ".and") != NULL)
+      else if (has_suffix_p (idesc->name, ".andcm")
+              || has_suffix_p (idesc->name, ".and"))
        {
          clear_qp_implies (0, p1mask | p2mask);
        }
-      else if (strstr (idesc->name, ".or") != NULL)
+      else if (has_suffix_p (idesc->name, ".orcm")
+              || has_suffix_p (idesc->name, ".or"))
        {
          clear_qp_mutex (p1mask | p2mask);
          clear_qp_implies (p1mask | p2mask, 0);
@@ -8769,7 +8781,7 @@ note_register_values (idesc)
       else
        {
          clear_qp_implies (p1mask | p2mask, p1mask | p2mask);
-         if (strstr (idesc->name, ".unc") != NULL)
+         if (has_suffix_p (idesc->name, ".unc"))
            {
              add_qp_mutex (p1mask | p2mask);
              if (CURR_SLOT.qp_regno != 0)