<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/90795>90795</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Python Binding] error while printing a python generated module in c++
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ravil-mobile
</td>
</tr>
</table>
<pre>
Hi all,
I would like to build a small EDSL. The idea is to have the dsl frontend in python and handle lowering in c++.
Here is a small example:
```python
from mlir.ir import Context, Module, get_dialect_registry
from mlir.ir import InsertionPoint, Location, F32Type
from mlir.dialects import func, arith
from mlir.dialects import arith
from edsl_cpp import entry
def main():
registry = get_dialect_registry()
context = Context()
context.append_dialect_registry(registry)
module = None
with context:
module = Module.create(Location.unknown())
with InsertionPoint(module.body), Location.unknown():
fp_type = F32Type.get()
function = func.FuncOp("test", ([fp_type, fp_type, fp_type], [fp_type]))
with InsertionPoint(function.add_entry_block()) as block:
one = function.arguments[0]
two = function.arguments[1]
mult_res = arith.MulFOp(one, two)
three = function.arguments[2]
res = arith.AddFOp(mult_res, three)
func.ReturnOp([res])
entry(module._CAPIPtr)
if __name__ == "__main__":
main()
```
```cpp
#include <pybind11/pybind11.h>
#include "mlir/CAPI/IR.h"
#include "mlir-c/IR.h"
#include "mlir-c/RegisterEverything.h"
#include "mlir-c/Bindings/Python/Interop.h"
#include "mlir/CAPI/Support.h"
#include <stdexcept>
PYBIND11_MODULE(edsl_cpp, m) {
m.doc() = "edsl python bindings";
m.def("entry", [](pybind11::object capsule){
MlirModule mlirModule = mlirPythonCapsuleToModule(capsule.ptr());
if (mlirModuleIsNull(mlirModule)) {
throw std::runtime_error("empty module");
}
MlirContext context = mlirModuleGetContext(mlirModule);
if (mlirContextIsNull(context)) {
throw std::runtime_error("empty context");
}
auto module = unwrap(mlirModule);
mlir::AsmState state(module);
module->dump();
});
}
```
If necessary, I can share the whole source code. Anyway, when I am executing the python script I get the following error:
```bash
dialect has no registered type printing hook
UNREACHABLE executed at <path-to-llvm>/llvm-project/mlir/include/mlir/IR/Dialect.h:111!
```
Does anybody have an idea what is missing in my example?
I can dump a module in python without any problem by something is wrong in the cpp-part.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykV8tu47wOfhplQ9Rw5KRNF1nk0pwJ0HaKzszirAzZYmKdypIhyU3z9geS7DjpbX7gBwrDpT-RHy8iGWat2CvEOZkuyXQ9Yq2rtJkb9irkVa0LIXFUaH6c_xDApCR0RdI1SRfxuYWDbiUHKV4QnIaiFZIDA1szKeFu_es-gd8VguDIQFgPqdgrgqsQuJWwM1o5VByEguboKq2AKQ4VU1wiSH1AI9Tefy0JXRK6TKLdH2jQ6-st4RurG4kkW5yzI9dp_Iuqo3BndA21FCYRBkTdaONg5Vm8OUJX8KB5K9G_7dHlXDCJpcsN7oV15vi1iq2yaJzQ6kkLFTTd65J5gX_fZPT3scH3xzv1tleya1Xp4cwIV_0N_B6E3Mq8bJr-O6oT4fMnxx3UTChCZ4TeniIG0PsIJFt_7nw80cHLGLOAPsXvDNB9T1jToOKfKRteT0rrEP2g81Er7MUH4ape4RnjC3xMXFIaZA4JnfXhT1r1ovSh93ew1al9n7hZ1Jn4og8Hhky-U3VOBGDX5O7YRC5dupM9XsYkAltVem0B6f9JNq0qfzYBSR1aRyj1Zr1guuz0esEnr9N1QA4wL7j08tz25x73jBLGeR7KJi-kLl9OIQNmIUoufQbQCk9-RBVm39aonCXTZerZXMDdQX8NHw_wupW-VGwAh0JPHlq5CUHydUFXXtWXbgK4yuA3zOgHZpfGFpxHYz2RYNHrHGyG1D2ja42KyZsuPTAm4OzCQXcTT5WVrxZP2ydn3uHiU-wgzxWrMc89H0-JUJrn_srmua-MIQVn1_iy333aBMum6SQ0E6qULfcBWjXHQig-HhO66V-TimR3H7GU-j5E6MbzJ3SzfU4qT-gL4FX5DzHPoQ-guXtFc3SVUPu_n1kKxYXaW0I3T7G5081WOTS6-fbwwP5X2_g2-QU6W1nH8a3Exg2xCM-n_y63j-vxOH_4uf5zf0forG-8vkZqf1vIzfKUooTrMuYIulx6eD_sipMblGTnh3AX20FXOrS75aG6ZqeUZQuSLXTxPywdlKyxYXLdDuYfpDCxL4YR8jB0S_9vDNwqnvut-8k36zQljS_RvmkO7ADEzvemQePWPrZ-NTgTdX3jLBLdrdQHsI5H5qZVTtSYozHadP7WjTt2bT24fWmZ3JxdW-9dN3kuptHA4j_ohtF0Se5zfzr0yaF-5vwrb05KvneHtU6fD7RWHQxrviUeKjoYX9j6l2MOwbo4_uqPB6LoimR3vK2bfoid1HkyZ4ITt0-7ynYHCku0lvnyXMEWSqbAVszE5e5QaYlgdWtKhFJzTGChjgcWwIcKFWyB1YBvWLbOr3j-UHcpbGlE42Drl5Ag32kp9cGjYmy_2PIKZrt9qFs2oGIWlO42GzTIIYzoxggVjFZav8QTfx6f7xarH4vl_V1HCjkwFxokc9WV01dSvta-F9CNf7tqjPb3jtBN11e63jEIts-EbtaRim-pi7HvsuNvorrWaIGpo9894qLMVNydDxVzfuGthbXdRlwfh7V306_jPgs-u8D6Uho2az_8deu8AWiMLiTWUBzB6hpD1_X6D0ZH7T7uZdNcNcy4ZMTnGb_NbtkI5-Ob8eQ6nUym6aias2J8zejNbTlJr2k2K_hkwmm6m8wKSjG7piMxpymdpNN0TLM0naYJn-7KWTmdjcvyGmlWkkmKNRMy8UFNtNmPhLUtzm_Tm9vpSLICpQ2_TShVeIDw0d-k6Xpk5iERRbu3ZJJKYZ0dtDjhZPhRE7scdAODTNexiOBQCXlWCqyP0h4VGubTPwSw-_Exao2cV8411pcg3RC62QtXtUVS6rqri4_lESj7QRVc-n8AAAD__56gHgA">