diff --git a/mlir/lib/Target/Cpp/TranslateToCpp.cpp b/mlir/lib/Target/Cpp/TranslateToCpp.cpp --- a/mlir/lib/Target/Cpp/TranslateToCpp.cpp +++ b/mlir/lib/Target/Cpp/TranslateToCpp.cpp @@ -631,8 +631,8 @@ } for (Block &block : blocks) { - // Only print a label if there is more than one block. - if (blocks.size() > 1) { + // Only print a label if the block has predecessors. + if (!block.hasNoPredecessors()) { if (failed(emitter.emitLabel(block))) return failure(); } diff --git a/mlir/test/Target/Cpp/control_flow.mlir b/mlir/test/Target/Cpp/control_flow.mlir --- a/mlir/test/Target/Cpp/control_flow.mlir +++ b/mlir/test/Target/Cpp/control_flow.mlir @@ -22,7 +22,6 @@ // CPP-DECLTOP-NEXT: int64_t [[C:[^ ]*]]; // CPP-DECLTOP-NEXT: int64_t [[D:[^ ]*]]; // CPP-DECLTOP-NEXT: int64_t [[E:[^ ]*]]; - // CPP-DECLTOP-NEXT: [[BB0:[^ ]*]]: // CPP-DECLTOP-NEXT: if ([[COND]]) { // CPP-DECLTOP-NEXT: goto [[BB1:[^ ]*]]; // CPP-DECLTOP-NEXT: } else { @@ -51,7 +50,6 @@ return } // CPP-DECLTOP: void block_labels0() { - // CPP-DECLTOP-NEXT: label1: // CPP-DECLTOP-NEXT: goto label2; // CPP-DECLTOP-NEXT: label2: // CPP-DECLTOP-NEXT: return; @@ -66,7 +64,6 @@ return } // CPP-DECLTOP: void block_labels1() { - // CPP-DECLTOP-NEXT: label1: // CPP-DECLTOP-NEXT: goto label2; // CPP-DECLTOP-NEXT: label2: // CPP-DECLTOP-NEXT: return;