|
9 | 9 | #include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h" |
10 | 10 | #include "mlir/Dialect/EmitC/IR/EmitC.h" |
11 | 11 | #include "mlir/Dialect/Func/IR/FuncOps.h" |
| 12 | +#include "mlir/IR/Attributes.h" |
12 | 13 | #include "mlir/IR/BuiltinOps.h" |
13 | 14 | #include "mlir/IR/BuiltinTypes.h" |
14 | 15 | #include "mlir/IR/Dialect.h" |
@@ -1000,22 +1001,10 @@ static LogicalResult printOperation(CppEmitter &emitter, ModuleOp moduleOp) { |
1000 | 1001 | static LogicalResult printOperation(CppEmitter &emitter, ClassOp classOp) { |
1001 | 1002 | CppEmitter::Scope classScope(emitter); |
1002 | 1003 | raw_indented_ostream &os = emitter.ostream(); |
1003 | | - os << "class " << classOp.getSymName() << " final {\n"; |
1004 | | - os << "public:\n\n"; |
1005 | | - |
| 1004 | + os << "class " << classOp.getSymName() << " {\n"; |
| 1005 | + os << "public:\n"; |
1006 | 1006 | os.indent(); |
1007 | | - os << "const std::map<std::string, char*> _buffer_map {\n"; |
1008 | | - for (Operation &op : classOp) { |
1009 | | - if (auto fieldOp = dyn_cast<FieldOp>(op)) |
1010 | | - os << " { \"" << fieldOp.getSymName() << "\", reinterpret_cast<char*>(&" |
1011 | | - << fieldOp.getAttrs() << ") },\n"; |
1012 | | - } |
1013 | | - os << "};\n"; |
1014 | | - |
1015 | | - os << "char* getBufferForName(const std::string& name) const {\n"; |
1016 | | - os << " auto it = _buffer_map.find(name);\n"; |
1017 | | - os << " return (it == _buffer_map.end()) ? nullptr : it->second;\n"; |
1018 | | - os << "}\n\n"; |
| 1007 | + |
1019 | 1008 | for (Operation &op : classOp) { |
1020 | 1009 | if (failed(emitter.emitOperation(op, /*trailingSemicolon=*/false))) |
1021 | 1010 | return failure(); |
@@ -1660,15 +1649,16 @@ LogicalResult CppEmitter::emitOperation(Operation &op, bool trailingSemicolon) { |
1660 | 1649 | emitc::BitwiseAndOp, emitc::BitwiseLeftShiftOp, |
1661 | 1650 | emitc::BitwiseNotOp, emitc::BitwiseOrOp, |
1662 | 1651 | emitc::BitwiseRightShiftOp, emitc::BitwiseXorOp, emitc::CallOp, |
1663 | | - emitc::CallOpaqueOp, emitc::CastOp, emitc::CmpOp, |
1664 | | - emitc::ConditionalOp, emitc::ConstantOp, emitc::DeclareFuncOp, |
1665 | | - emitc::DivOp, emitc::ExpressionOp, emitc::FileOp, emitc::ForOp, |
1666 | | - emitc::FuncOp, emitc::GlobalOp, emitc::IfOp, emitc::IncludeOp, |
1667 | | - emitc::LoadOp, emitc::LogicalAndOp, emitc::LogicalNotOp, |
1668 | | - emitc::LogicalOrOp, emitc::MulOp, emitc::RemOp, emitc::ReturnOp, |
1669 | | - emitc::SubOp, emitc::SwitchOp, emitc::UnaryMinusOp, |
1670 | | - emitc::UnaryPlusOp, emitc::VariableOp, emitc::VerbatimOp, |
1671 | | - emitc::ClassOp, emitc::FieldOp, emitc::GetFieldOp>( |
| 1652 | + emitc::CallOpaqueOp, emitc::CastOp, emitc::ClassOp, |
| 1653 | + emitc::CmpOp, emitc::ConditionalOp, emitc::ConstantOp, |
| 1654 | + emitc::DeclareFuncOp, emitc::DivOp, emitc::ExpressionOp, |
| 1655 | + emitc::FieldOp, emitc::FileOp, emitc::ForOp, emitc::FuncOp, |
| 1656 | + emitc::GetFieldOp, emitc::GlobalOp, emitc::IfOp, |
| 1657 | + emitc::IncludeOp, emitc::LoadOp, emitc::LogicalAndOp, |
| 1658 | + emitc::LogicalNotOp, emitc::LogicalOrOp, emitc::MulOp, |
| 1659 | + emitc::RemOp, emitc::ReturnOp, emitc::SubOp, emitc::SwitchOp, |
| 1660 | + emitc::UnaryMinusOp, emitc::UnaryPlusOp, emitc::VariableOp, |
| 1661 | + emitc::VerbatimOp>( |
1672 | 1662 |
|
1673 | 1663 | [&](auto op) { return printOperation(*this, op); }) |
1674 | 1664 | // Func ops. |
|
0 commit comments