[llvm-branch-commits] [mlir] try twolevel_namespace (PR #174043)
Maksim Levental via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Dec 30 16:24:49 PST 2025
https://github.com/makslevental created https://github.com/llvm/llvm-project/pull/174043
None
>From 71579b1df6a39d45f7c06b8d82ecb4a92df58262 Mon Sep 17 00:00:00 2001
From: makslevental <maksim.levental at gmail.com>
Date: Tue, 30 Dec 2025 16:24:24 -0800
Subject: [PATCH] try twolevel_namespace
---
mlir/cmake/modules/AddMLIRPython.cmake | 4 ++-
mlir/lib/Bindings/Python/IRCore.cpp | 33 +++++++++++++++++++++++++
mlir/lib/Bindings/Python/MainModule.cpp | 28 ---------------------
3 files changed, 36 insertions(+), 29 deletions(-)
diff --git a/mlir/cmake/modules/AddMLIRPython.cmake b/mlir/cmake/modules/AddMLIRPython.cmake
index 57207ab0e2a18..3914716cb636c 100644
--- a/mlir/cmake/modules/AddMLIRPython.cmake
+++ b/mlir/cmake/modules/AddMLIRPython.cmake
@@ -875,7 +875,6 @@ function(add_mlir_python_extension libname extname nb_library_target_name)
elseif(LLVM_COMPILER_IS_GCC_COMPATIBLE OR CLANG_CL)
set(eh_rtti_enable -frtti -fexceptions)
endif ()
-
if(ARG__PRIVATE_SUPPORT_LIB)
add_library(${libname} SHARED ${ARG_SOURCES})
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
@@ -908,6 +907,9 @@ function(add_mlir_python_extension libname extname nb_library_target_name)
PRIVATE
MLIR_BINDINGS_PYTHON_DOMAIN=${ARG_MLIR_BINDINGS_PYTHON_NB_DOMAIN}
)
+ if(APPLE)
+ target_link_options(${libname} PRIVATE "LINKER:-twolevel_namespace")
+ endif()
if (NOT MLIR_DISABLE_CONFIGURE_PYTHON_DEV_PACKAGES
AND (LLVM_COMPILER_IS_GCC_COMPATIBLE OR CLANG_CL))
diff --git a/mlir/lib/Bindings/Python/IRCore.cpp b/mlir/lib/Bindings/Python/IRCore.cpp
index a204dd7a4c3b8..16d1e74f72f39 100644
--- a/mlir/lib/Bindings/Python/IRCore.cpp
+++ b/mlir/lib/Bindings/Python/IRCore.cpp
@@ -1993,6 +1993,35 @@ intptr_t PyBlockArgumentList::getRawNumElements() {
return mlirBlockGetNumArguments(block);
}
+void PyBlockArgument::bindDerived(ClassTy &c) {
+ c.def_prop_ro(
+ "owner",
+ [](PyBlockArgument &self) {
+ return PyBlock(self.getParentOperation(),
+ mlirBlockArgumentGetOwner(self.get()));
+ },
+ "Returns the block that owns this argument.");
+ c.def_prop_ro(
+ "arg_number",
+ [](PyBlockArgument &self) {
+ return mlirBlockArgumentGetArgNumber(self.get());
+ },
+ "Returns the position of this argument in the block's argument list.");
+ c.def(
+ "set_type",
+ [](PyBlockArgument &self, PyType type) {
+ return mlirBlockArgumentSetType(self.get(), type);
+ },
+ nanobind::arg("type"), "Sets the type of this block argument.");
+ c.def(
+ "set_location",
+ [](PyBlockArgument &self, PyLocation loc) {
+ return mlirBlockArgumentSetLocation(self.get(), loc);
+ },
+ nanobind::arg("loc"), "Sets the location of this block argument.");
+}
+
+
PyBlockArgument PyBlockArgumentList::getRawElement(intptr_t pos) const {
MlirValue argument = mlirBlockGetArgument(block, pos);
return PyBlockArgument(operation, argument);
@@ -2178,3 +2207,7 @@ void PyOpAttributeMap::forEachAttr(
} // namespace MLIR_BINDINGS_PYTHON_DOMAIN
} // namespace python
} // namespace mlir
+
+NB_MODULE(_mlirPythonSupport, m) {
+ m.doc() = "MLIR Python Support Extension";
+}
\ No newline at end of file
diff --git a/mlir/lib/Bindings/Python/MainModule.cpp b/mlir/lib/Bindings/Python/MainModule.cpp
index 9790a8feb8d03..b49a9f1e3af24 100644
--- a/mlir/lib/Bindings/Python/MainModule.cpp
+++ b/mlir/lib/Bindings/Python/MainModule.cpp
@@ -303,34 +303,6 @@ void PyOpResultList::bindDerived(ClassTy &c) {
"Returns the operation that owns this result list.");
}
-void PyBlockArgument::bindDerived(ClassTy &c) {
- c.def_prop_ro(
- "owner",
- [](PyBlockArgument &self) {
- return PyBlock(self.getParentOperation(),
- mlirBlockArgumentGetOwner(self.get()));
- },
- "Returns the block that owns this argument.");
- c.def_prop_ro(
- "arg_number",
- [](PyBlockArgument &self) {
- return mlirBlockArgumentGetArgNumber(self.get());
- },
- "Returns the position of this argument in the block's argument list.");
- c.def(
- "set_type",
- [](PyBlockArgument &self, PyType type) {
- return mlirBlockArgumentSetType(self.get(), type);
- },
- nanobind::arg("type"), "Sets the type of this block argument.");
- c.def(
- "set_location",
- [](PyBlockArgument &self, PyLocation loc) {
- return mlirBlockArgumentSetLocation(self.get(), loc);
- },
- nanobind::arg("loc"), "Sets the location of this block argument.");
-}
-
void PyOpOperandList::bindDerived(ClassTy &c) {
c.def("__setitem__", &PyOpOperandList::dunderSetItem, nanobind::arg("index"),
nanobind::arg("value"),
More information about the llvm-branch-commits
mailing list