[clang] [llvm] [clang][mlibc] Predefine `__mlibc__` for mlibc targets (PR #225654)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 27 11:58:23 PDT 2026
https://github.com/lzcunt updated https://github.com/llvm/llvm-project/pull/225654
>From 48b23abd4ad3e4c777015c863e4444519fd05911 Mon Sep 17 00:00:00 2001
From: lzcunt <lzcunt at rawr.fun>
Date: Sun, 27 Sep 2026 19:36:53 +0300
Subject: [PATCH 1/3] [TargetParser] Add Triple::isMlibc()
---
llvm/include/llvm/TargetParser/Triple.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h
index b369b66960b1a..83b3912982536 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -921,6 +921,11 @@ class Triple {
return Version < VersionTuple(Major);
}
+ /// Tests whether the environment is mlibc.
+ bool isMlibc() const {
+ return getEnvironment() == Triple::Mlibc;
+ }
+
/// Tests whether the environment is musl-libc
bool isMusl() const {
return getEnvironment() == Triple::Musl ||
>From bf288debbeb3f58bdd9cecf959ad0dc725567ba9 Mon Sep 17 00:00:00 2001
From: lzcunt <lzcunt at rawr.fun>
Date: Wed, 23 Sep 2026 12:18:59 +0300
Subject: [PATCH 2/3] [clang][mlibc] Predefine `__mlibc__` for mlibc targets
---
clang/lib/Basic/Targets/OSTargets.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h
index fb5c17cefc004..c1ffb4700677b 100644
--- a/clang/lib/Basic/Targets/OSTargets.h
+++ b/clang/lib/Basic/Targets/OSTargets.h
@@ -393,6 +393,8 @@ class LLVM_LIBRARY_VISIBILITY LinuxTargetInfo : public OSTargetInfo<Target> {
// defined for compatibility.
Builder.defineMacro("__ANDROID_API__", "__ANDROID_MIN_SDK_VERSION__");
}
+ } else if (Triple.isMlibc()) {
+ Builder.defineMacro("__mlibc__");
} else {
Builder.defineMacro("__gnu_linux__");
}
@@ -452,6 +454,8 @@ class LLVM_LIBRARY_VISIBILITY ManagarmTargetInfo : public OSTargetInfo<Target> {
MacroBuilder &Builder) const override {
DefineStd(Builder, "unix", Opts);
Builder.defineMacro("__managarm__");
+ if (Triple.getEnvironmentName() == "mlibc")
+ Builder.defineMacro("__mlibc__");
if (Opts.POSIXThreads)
Builder.defineMacro("_REENTRANT");
if (Opts.CPlusPlus)
>From 69c303b0b9f65fa50603a5808323f3dd346475a6 Mon Sep 17 00:00:00 2001
From: lzcunt <lzcunt at rawr.fun>
Date: Thu, 24 Sep 2026 16:47:12 +0300
Subject: [PATCH 3/3] __mlibc__ test
---
clang/test/Preprocessor/init.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c
index faeb7861e5d21..76baba31b2fcd 100644
--- a/clang/test/Preprocessor/init.c
+++ b/clang/test/Preprocessor/init.c
@@ -1663,6 +1663,7 @@
// RUN: %clang_cc1 -triple=riscv64-unknown-managarm-mlibc -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix MANAGARM %s
// RUN: %clang_cc1 -triple=x86_64-unknown-managarm-mlibc -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix MANAGARM %s
// MANAGARM: #define __managarm__ 1
+// MANAGARM: #define __mlibc__ 1
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=xcore-none-none < /dev/null | FileCheck -match-full-lines -check-prefix XCORE %s
// XCORE:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
More information about the llvm-commits
mailing list