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'


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to