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