[clang] 27f3283 - [lanai] Add back the ability to set the memory model with --mcmodel. (#150575)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 20 00:05:26 PDT 2025
Author: petergrind3
Date: 2025-08-20T09:05:23+02:00
New Revision: 27f32831b9a854a525a7f494143769b93ce17c83
URL: https://github.com/llvm/llvm-project/commit/27f32831b9a854a525a7f494143769b93ce17c83
DIFF: https://github.com/llvm/llvm-project/commit/27f32831b9a854a525a7f494143769b93ce17c83.diff
LOG: [lanai] Add back the ability to set the memory model with --mcmodel. (#150575)
This ability got removed at some point but is still needed to select specific modes for Lanai backend. Add back with simple frontend smoke test.
Added:
clang/test/Driver/lanai-mcmodel.c
Modified:
clang/docs/ReleaseNotes.rst
clang/lib/Driver/ToolChains/CommonArgs.cpp
Removed:
################################################################################
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index eed26c00641a2..97f2a86c721f9 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -147,6 +147,10 @@ New Compiler Flags
------------------
- New option ``-fno-sanitize-annotate-debug-info-traps`` added to disable emitting trap reasons into the debug info when compiling with trapping UBSan (e.g. ``-fsanitize-trap=undefined``).
+Lanai Support
+^^^^^^^^^^^^^^
+- The option ``-mcmodel={small,medium,large}`` is supported again.
+
Deprecated Compiler Flags
-------------------------
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index eb88f7bd4b469..a21f89da55009 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -3125,6 +3125,8 @@ void tools::addMCModel(const Driver &D, const llvm::opt::ArgList &Args,
else if (CM == "medany")
CM = "large";
Ok = CM == "small" || CM == "medium" || CM == "large";
+ } else if (Triple.getArch() == llvm::Triple::lanai) {
+ Ok = llvm::is_contained({"small", "medium", "large"}, CM);
}
if (Ok) {
CmdArgs.push_back(Args.MakeArgString("-mcmodel=" + CM));
diff --git a/clang/test/Driver/lanai-mcmodel.c b/clang/test/Driver/lanai-mcmodel.c
new file mode 100644
index 0000000000000..d62d7e1c37f24
--- /dev/null
+++ b/clang/test/Driver/lanai-mcmodel.c
@@ -0,0 +1,10 @@
+// RUN: %clang --target=lanai -### -c -mcmodel=small %s 2>&1 | FileCheck --check-prefix=SMALL %s
+// RUN: %clang --target=lanai -### -c -mcmodel=medium %s 2>&1 | FileCheck --check-prefix=MEDIUM %s
+// RUN: %clang --target=lanai -### -c -mcmodel=large %s 2>&1 | FileCheck --check-prefix=LARGE %s
+// RUN: not %clang --target=lanai -### -c -mcmodel=something %s 2>&1 | FileCheck --check-prefix=ERR-MCMODEL %s
+
+// SMALL: "-mcmodel=small"
+// MEDIUM: "-mcmodel=medium"
+// LARGE: "-mcmodel=large"
+
+// ERR-MCMODEL: error: unsupported argument 'something' to option '-mcmodel=' for target 'lanai'
More information about the cfe-commits
mailing list