riscv64-multilib-empty
authorLLVM Packaging Team <pkg-llvm-team@lists.alioth.debian.org>
Wed, 2 Sep 2020 11:55:46 +0000 (12:55 +0100)
committerSylvestre Ledru <sylvestre@debian.org>
Wed, 2 Sep 2020 11:55:46 +0000 (12:55 +0100)
===================================================================

Gbp-Pq: Topic risc
Gbp-Pq: Name riscv64-multilib-empty.patch

clang/lib/Driver/ToolChains/Gnu.cpp

index e8ef881e89ac7a02ba29f5f678bc5d5b9cbc94c9..d2a7ce9bfd55f50c4d8fefc42f0d699a11413b26 100644 (file)
@@ -1572,13 +1572,16 @@ static void findRISCVBareMetalMultilibs(const Driver &D,
     Result.Multilibs = RISCVMultilibs;
 }
 
-static void findRISCVMultilibs(const Driver &D,
+static bool findRISCVMultilibs(const Driver &D,
                                const llvm::Triple &TargetTriple, StringRef Path,
                                const ArgList &Args, DetectedMultilibs &Result) {
-  if (TargetTriple.getOS() == llvm::Triple::UnknownOS)
-    return findRISCVBareMetalMultilibs(D, TargetTriple, Path, Args, Result);
+  if (TargetTriple.getOS() == llvm::Triple::UnknownOS) {
+    findRISCVBareMetalMultilibs(D, TargetTriple, Path, Args, Result);
+    return true;
+  }
 
   FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
+  Multilib Default;
   Multilib Ilp32 = makeMultilib("lib32/ilp32").flag("+m32").flag("+mabi=ilp32");
   Multilib Ilp32f =
       makeMultilib("lib32/ilp32f").flag("+m32").flag("+mabi=ilp32f");
@@ -1589,7 +1592,7 @@ static void findRISCVMultilibs(const Driver &D,
   Multilib Lp64d = makeMultilib("lib64/lp64d").flag("+m64").flag("+mabi=lp64d");
   MultilibSet RISCVMultilibs =
       MultilibSet()
-          .Either({Ilp32, Ilp32f, Ilp32d, Lp64, Lp64f, Lp64d})
+          .Either({Default, Ilp32, Ilp32f, Ilp32d, Lp64, Lp64f, Lp64d})
           .FilterOut(NonExistent);
 
   Multilib::flags_list Flags;
@@ -1605,8 +1608,11 @@ static void findRISCVMultilibs(const Driver &D,
   addMultilibFlag(ABIName == "lp64f", "mabi=lp64f", Flags);
   addMultilibFlag(ABIName == "lp64d", "mabi=lp64d", Flags);
 
-  if (RISCVMultilibs.select(Flags, Result.SelectedMultilib))
-    Result.Multilibs = RISCVMultilibs;
+  if (!RISCVMultilibs.select(Flags, Result.SelectedMultilib))
+    return false;
+
+  Result.Multilibs = RISCVMultilibs;
+  return true;
 }
 
 static bool findBiarchMultilibs(const Driver &D,
@@ -2384,7 +2390,8 @@ bool Generic_GCC::GCCInstallationDetector::ScanGCCForMultilibs(
     if (!findMIPSMultilibs(D, TargetTriple, Path, Args, Detected))
       return false;
   } else if (TargetTriple.isRISCV()) {
-    findRISCVMultilibs(D, TargetTriple, Path, Args, Detected);
+    if (!findRISCVMultilibs(D, TargetTriple, Path, Args, Detected))
+      return false;
   } else if (isMSP430(TargetArch)) {
     findMSP430Multilibs(D, TargetTriple, Path, Args, Detected);
   } else if (TargetArch == llvm::Triple::avr) {