[Mlir-commits] [mlir] [mlir][emitC] Add support to emitter for `classop`, `fieldop` and `getfieldop` (PR #145605)
Jacques Pienaar
llvmlistbot at llvm.org
Thu Jun 26 10:24:47 PDT 2025
================
@@ -997,6 +997,49 @@ static LogicalResult printOperation(CppEmitter &emitter, ModuleOp moduleOp) {
return success();
}
+static LogicalResult printOperation(CppEmitter &emitter, ClassOp classOp) {
+ CppEmitter::Scope classScope(emitter);
+ raw_indented_ostream &os = emitter.ostream();
+ os << "class " << classOp.getSymName() << " {\n";
+ os << "public:\n";
+ os.indent();
+
+ for (Operation &op : classOp) {
+ if (failed(emitter.emitOperation(op, /*trailingSemicolon=*/false)))
+ return failure();
+ }
+
+ os.unindent();
+ os << "};";
+ return success();
+}
+
+static LogicalResult printOperation(CppEmitter &emitter, FieldOp fieldOp) {
+ raw_ostream &os = emitter.ostream();
+ if (failed(emitter.emitType(fieldOp->getLoc(), fieldOp.getType())))
+ return failure();
+ os << " " << fieldOp.getSymName() << ";";
+ return success();
+}
+
+static LogicalResult printOperation(CppEmitter &emitter,
+ GetFieldOp getFieldOp) {
+ raw_indented_ostream &os = emitter.ostream();
+ Location loc = getFieldOp->getLoc();
+
+ if (getFieldOp->getNumResults() > 0) {
+ Value result = getFieldOp->getResult(0);
----------------
jpienaar wrote:
Isn't GetFieldOp defined to have 1 result? ( https://github.com/llvm/llvm-project/blob/5c310d1ef0188d609b1d2837d403d2b3f2eeb609/mlir/include/mlir/Dialect/EmitC/IR/EmitC.td#L1678 ).
Can also do here getFieldOp.getResult() rather than using the generic accessor on Operation.
https://github.com/llvm/llvm-project/pull/145605
More information about the Mlir-commits
mailing list