148 getOperation()->walk([](mlir::scf::IfOp ifOp) {
149 if (ifOp.getElseRegion().empty()) {
150 mlir::Block &elseBlock = ifOp.getElseRegion().emplaceBlock();
151 mlir::OpBuilder builder(ifOp.getContext());
152 builder.setInsertionPointToEnd(&elseBlock);
153 builder.create<mlir::scf::YieldOp>(ifOp.getLoc());
157 mlir::OpPassManager pm(getOperation()->getName().getStringRef());
158 pm.addPass(mlir::createRemoveDeadValuesPass());
159 if (mlir::failed(runPipeline(pm, getOperation()))) {
164 getOperation()->walk([](mlir::scf::IfOp ifOp) {
165 if (ifOp.getResults().empty()) {
166 mlir::Region &elseRegion = ifOp.getElseRegion();
167 if (!llvm::hasSingleElement(elseRegion)) {
170 mlir::Block &elseBlock = elseRegion.front();
171 if (!llvm::hasSingleElement(elseBlock)) {
174 if (!llvm::isa<mlir::scf::YieldOp>(elseBlock.front())) {
177 elseRegion.dropAllReferences();
179 elseRegion.getBlocks().clear();