Add Operation to python bindings.
authorStella Laurenzo <stellaraccident@gmail.com>
Sat, 19 Sep 2020 01:38:21 +0000 (18:38 -0700)
committerStella Laurenzo <stellaraccident@gmail.com>
Wed, 23 Sep 2020 14:57:50 +0000 (07:57 -0700)
commit7abb0ff7e0419a9554d77e9108cb7da670b7471c
tree404fc37e1df9dde9bfb37b48057d3d4bbfb9159c
parentbd8b50cd7f5dd5237ec9187ef2fcea3adc15b61a
Add Operation to python bindings.

* Fixes a rather egregious bug with respect to the inability to return arbitrary objects from py::init (was causing aliasing of multiple py::object -> native instance).
* Makes Modules and Operations referencable types so that they can be reliably depended on.
* Uniques python operation instances within a context. Opens the door for further accounting.
* Next I will retrofit region and block to be dependent on the operation, and I will attempt to model the API to avoid detached regions/blocks, which will simplify things a lot (in that world, only operations can be detached).
* Added quite a bit of test coverage to check for leaks and reference issues.
* Supercedes: https://reviews.llvm.org/D87213

Differential Revision: https://reviews.llvm.org/D87958
mlir/docs/Bindings/Python.md
mlir/lib/Bindings/Python/IRModules.cpp
mlir/lib/Bindings/Python/IRModules.h
mlir/test/Bindings/Python/ir_attributes.py
mlir/test/Bindings/Python/ir_location.py
mlir/test/Bindings/Python/ir_module.py
mlir/test/Bindings/Python/ir_operation.py
mlir/test/Bindings/Python/ir_types.py