[flang-commits] [flang] [flang] Predefine __wasm* macros from the target triple (PR #226470)

Anutosh Bhat via flang-commits flang-commits at lists.llvm.org
Fri Sep 25 05:54:58 PDT 2026


https://github.com/anutosh491 updated https://github.com/llvm/llvm-project/pull/226470

>From 1e4f9555eeba85e588bd76e1bfdba6419c9ebb85 Mon Sep 17 00:00:00 2001
From: Isabel Paredes <isabel.paredes at quantstack.net>
Date: Fri, 25 Sep 2026 18:14:34 +0530
Subject: [PATCH] [flang] Predefine __wasm* macros from the target triple

---
 flang/lib/Frontend/CompilerInvocation.cpp    | 13 ++++++++
 flang/test/Driver/predefined-macros-wasm.f90 | 34 ++++++++++++++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 flang/test/Driver/predefined-macros-wasm.f90

diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index 1f9be77057fb0..d123f198b2380 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -2043,6 +2043,19 @@ void CompilerInvocation::setDefaultPredefinitions() {
     fortranOptions.predefinitions.emplace_back("__s390x__", "1");
     fortranOptions.predefinitions.emplace_back("__s390x", "1");
     break;
+  case llvm::Triple::ArchType::wasm32:
+    // Match Clang's WebAssembly target defines.
+    fortranOptions.predefinitions.emplace_back("__wasm__", "1");
+    fortranOptions.predefinitions.emplace_back("__wasm", "1");
+    fortranOptions.predefinitions.emplace_back("__wasm32__", "1");
+    fortranOptions.predefinitions.emplace_back("__wasm32", "1");
+    break;
+  case llvm::Triple::ArchType::wasm64:
+    fortranOptions.predefinitions.emplace_back("__wasm__", "1");
+    fortranOptions.predefinitions.emplace_back("__wasm", "1");
+    fortranOptions.predefinitions.emplace_back("__wasm64__", "1");
+    fortranOptions.predefinitions.emplace_back("__wasm64", "1");
+    break;
   }
 }
 
diff --git a/flang/test/Driver/predefined-macros-wasm.f90 b/flang/test/Driver/predefined-macros-wasm.f90
new file mode 100644
index 0000000000000..b032aee0dd5cd
--- /dev/null
+++ b/flang/test/Driver/predefined-macros-wasm.f90
@@ -0,0 +1,34 @@
+! Test predefined macros for WebAssembly architectures.
+! REQUIRES: webassembly-registered-target
+
+! RUN: %flang_fc1 -triple wasm32-unknown-emscripten -cpp -E %s | FileCheck %s --check-prefixes=COMMON,WASM32
+! RUN: %flang_fc1 -triple wasm64-unknown-emscripten -cpp -E %s | FileCheck %s --check-prefixes=COMMON,WASM64
+
+! COMMON: integer :: wasm = 1
+! COMMON: integer :: wasm_underscores = 1
+! WASM32: integer :: wasm32 = 1
+! WASM32: integer :: wasm32_underscores = 1
+! WASM32-NOT: integer :: wasm64
+! WASM64: integer :: wasm64 = 1
+! WASM64: integer :: wasm64_underscores = 1
+! WASM64-NOT: integer :: wasm32
+
+#if __wasm
+  integer :: wasm = __wasm
+#endif
+#if __wasm__
+  integer :: wasm_underscores = __wasm__
+#endif
+#if __wasm32
+  integer :: wasm32 = __wasm32
+#endif
+#if __wasm32__
+  integer :: wasm32_underscores = __wasm32__
+#endif
+#if __wasm64
+  integer :: wasm64 = __wasm64
+#endif
+#if __wasm64__
+  integer :: wasm64_underscores = __wasm64__
+#endif
+end program



More information about the flang-commits mailing list