]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
MIPS: Put the ret to the end of args of reconcat [PR112759]
authorYunQiang Su <syq@gcc.gnu.org>
Mon, 18 Dec 2023 23:36:52 +0000 (07:36 +0800)
committerYunQiang Su <syq@gcc.gnu.org>
Sat, 23 Dec 2023 08:46:23 +0000 (16:46 +0800)
The function `reconcat` cannot append string(s) to NULL,
as the concat process will stop at the first NULL.

Let's always put the `ret` to the end, as it may be NULL.
We keep use reconcat here, due to that reconcat can make it
easier if we add more hardware features detecting, for example
by hwcap.

gcc/

PR target/112759
* config/mips/driver-native.cc (host_detect_local_cpu):
Put the ret to the end of args of reconcat.

gcc/config/mips/driver-native.cc

index afc276f527825f0c63a0065bac6e81fdd85a1ef1..4ef48e149162e4f494b6da8bede87156b3b1a702 100644 (file)
@@ -44,6 +44,8 @@ const char *
 host_detect_local_cpu (int argc, const char **argv)
 {
   const char *cpu = NULL;
+  /* Don't assigne any static string to ret.  If you need to do so,
+     use concat.  */
   char *ret = NULL;
   char buf[128];
   FILE *f;
@@ -90,7 +92,8 @@ host_detect_local_cpu (int argc, const char **argv)
 
 fallback_cpu:
 #if defined (__mips_nan2008)
-  ret = reconcat (ret, " -mnan=2008 ", NULL);
+  /* Put the ret to the end of list, since it may be NULL.  */
+  ret = reconcat (ret, " -mnan=2008 ", ret, NULL);
 #endif
 
 #ifdef HAVE_GETAUXVAL
@@ -104,7 +107,7 @@ fallback_cpu:
 #endif
 
   if (cpu)
-    ret = reconcat (ret, ret, "-m", argv[0], "=", cpu, NULL);
+    ret = reconcat (ret, " -m", argv[0], "=", cpu, ret, NULL);
 
   return ret;
 }