multilib_options now ends with " msimt" (e.g. "...march=gfx11-generic msimt"),
so the character after a matching architecture name can be a space.  Both
search loops in check_for_missing_lib then hit "continue" without advancing
p, and spin forever in strstr for any -march= that falls back to a generic
library (gfx1102, gfx1103, gfx115x, gfx900, gfx902, ...).  Accept ' ' as a
terminator, and advance p past a non-matching hit.

Assisted-by: Claude Opus 5.5

gcc/ChangeLog:

        * config/gcn/mkoffload.cc (check_for_missing_lib): Accept a space after
        the architecture name in the multilib string; advance P past a
        non-matching occurrence.
---
 gcc/config/gcn/mkoffload.cc | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/gcc/config/gcn/mkoffload.cc b/gcc/config/gcn/mkoffload.cc
index 30e1b44635c..84de87663da 100644
--- a/gcc/config/gcn/mkoffload.cc
+++ b/gcc/config/gcn/mkoffload.cc
@@ -936,8 +936,11 @@ check_for_missing_lib (enum elf_arch_code elf_arch,
          && startswith (&q[-strlen ("march=")], "march="))
        {
          const char r = q[strlen (isa_name)];
-         if (r != '\0' && r != '/')
-           continue;
+         if (r != '\0' && r != '/' && r != ' ')
+           {
+             p = q + 1;
+             continue;
+           }
          break;
        }
       p++;
@@ -958,8 +961,11 @@ check_for_missing_lib (enum elf_arch_code elf_arch,
              && startswith (&q[-strlen ("march=")], "march="))
            {
              const char r = q[strlen (gen_name)];
-             if (r != '\0' && r != '/')
-               continue;
+             if (r != '\0' && r != '/' && r != ' ')
+               {
+                 p = q + 1;
+                 continue;
+               }
              break;
            }
          p++;
-- 
2.55.0

Reply via email to