[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