From 9de88fc0eac1bfc719dfd63a32b7eb069489407e Mon Sep 17 00:00:00 2001 From: xndcn Date: Sun, 19 Sep 2021 20:01:12 +0800 Subject: [PATCH] [mlir][emitc] Fix indent in CondBranchOp and block label 1. Add missing indent in CondBranchOp 2. Remove indent in block label Differential Revision: https://reviews.llvm.org/D109805 --- mlir/lib/Target/Cpp/TranslateToCpp.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mlir/lib/Target/Cpp/TranslateToCpp.cpp b/mlir/lib/Target/Cpp/TranslateToCpp.cpp index 859c6f0..f2d5002 100644 --- a/mlir/lib/Target/Cpp/TranslateToCpp.cpp +++ b/mlir/lib/Target/Cpp/TranslateToCpp.cpp @@ -248,13 +248,15 @@ static LogicalResult printOperation(CppEmitter &emitter, BranchOp branchOp) { static LogicalResult printOperation(CppEmitter &emitter, CondBranchOp condBranchOp) { - raw_ostream &os = emitter.ostream(); + raw_indented_ostream &os = emitter.ostream(); Block &trueSuccessor = *condBranchOp.getTrueDest(); Block &falseSuccessor = *condBranchOp.getFalseDest(); os << "if (" << emitter.getOrCreateName(condBranchOp.getCondition()) << ") {\n"; + os.indent(); + // If condition is true. for (auto pair : llvm::zip(condBranchOp.getTrueOperands(), trueSuccessor.getArguments())) { @@ -269,7 +271,8 @@ static LogicalResult printOperation(CppEmitter &emitter, return condBranchOp.emitOpError("unable to find label for successor block"); } os << emitter.getOrCreateName(trueSuccessor) << ";\n"; - os << "} else {\n"; + os.unindent() << "} else {\n"; + os.indent(); // If condition is false. for (auto pair : llvm::zip(condBranchOp.getFalseOperands(), falseSuccessor.getArguments())) { @@ -285,7 +288,7 @@ static LogicalResult printOperation(CppEmitter &emitter, << "unable to find label for successor block"; } os << emitter.getOrCreateName(falseSuccessor) << ";\n"; - os << "}"; + os.unindent() << "}"; return success(); } @@ -876,7 +879,9 @@ LogicalResult CppEmitter::emitAssignPrefix(Operation &op) { LogicalResult CppEmitter::emitLabel(Block &block) { if (!hasBlockLabel(block)) return block.getParentOp()->emitError("label for block not found"); - os << getOrCreateName(block) << ":\n"; + // FIXME: Add feature in `raw_indented_ostream` to ignore indent for block + // label instead of using `getOStream`. + os.getOStream() << getOrCreateName(block) << ":\n"; return success(); } -- 2.7.4