If C++ code deletes an operation the `PyOperation::valid` flag isn't updated, which can lead to crashes: ```py from mlir import ir from mlir.dialects import builtin from mlir.passmanager import PassManager with ir.Context(): module = builtin.ModuleOp.parse(""" module { arith.constant 10 } """) const_op = module.body.operations[0] print(const_op) PassManager.parse('builtin.module(canonicalize)').run(module) print(const_op) # Segmentation fault (core dumped) ```