aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Driver.cpp
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2024-09-20 02:53:03 +0200
committerGitHub <noreply@github.com>2024-09-20 08:53:03 +0800
commit72a218056d68b7aa65ab3eda56837117bb59f11a (patch)
tree654fc66510f25991b3c03523fbfe642e952945d7 /clang/lib/Driver/Driver.cpp
parentb3533a156da92262eb19429d8c12f53e87f5ccec (diff)
downloadllvm-72a218056d68b7aa65ab3eda56837117bb59f11a.zip
llvm-72a218056d68b7aa65ab3eda56837117bb59f11a.tar.gz
llvm-72a218056d68b7aa65ab3eda56837117bb59f11a.tar.bz2
[llvm][Triple] Add `Environment` members and parsing for glibc/musl parity. (#107664)
This adds support for: * `muslabin32` (MIPS N32) * `muslabi64` (MIPS N64) * `muslf32` (LoongArch ILP32F/LP64F) * `muslsf` (LoongArch ILP32S/LP64S) As we start adding glibc/musl cross-compilation support for these targets in Zig, it would make our life easier if LLVM recognized these triples. I'm hoping this'll be uncontroversial since the same has already been done for `musleabi`, `musleabihf`, and `muslx32`. I intentionally left out a musl equivalent of `gnuf64` (LoongArch ILP32D/LP64D); my understanding is that Loongson ultimately settled on simply `gnu` for this much more common case, so there doesn't *seem* to be a particularly compelling reason to add a `muslf64` that's basically deprecated on arrival. Note: I don't have commit access.
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r--clang/lib/Driver/Driver.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index efe398d..1c64cea 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -667,11 +667,17 @@ static llvm::Triple computeTargetTriple(const Driver &D,
if (Target.getEnvironment() == llvm::Triple::GNU ||
Target.getEnvironment() == llvm::Triple::GNUABI64)
Target.setEnvironment(llvm::Triple::GNUABIN32);
+ else if (Target.getEnvironment() == llvm::Triple::Musl ||
+ Target.getEnvironment() == llvm::Triple::MuslABI64)
+ Target.setEnvironment(llvm::Triple::MuslABIN32);
} else if (ABIName == "64") {
Target = Target.get64BitArchVariant();
if (Target.getEnvironment() == llvm::Triple::GNU ||
Target.getEnvironment() == llvm::Triple::GNUABIN32)
Target.setEnvironment(llvm::Triple::GNUABI64);
+ else if (Target.getEnvironment() == llvm::Triple::Musl ||
+ Target.getEnvironment() == llvm::Triple::MuslABIN32)
+ Target.setEnvironment(llvm::Triple::MuslABI64);
}
}
}