From ae9f4f21570865eba572202d29240c112b37a4d6 Mon Sep 17 00:00:00 2001 From: River Riddle Date: Mon, 6 May 2019 21:59:40 -0700 Subject: [PATCH] Simplify the emission of various diagnostics created in Analysis/ and Transforms/ by using the new diagnostic infrastructure. -- PiperOrigin-RevId: 246955332 --- mlir/lib/Analysis/Utils.cpp | 8 ++++---- mlir/lib/Analysis/Verifier.cpp | 4 ++-- mlir/lib/Transforms/DialectConversion.cpp | 3 +-- mlir/lib/Transforms/DmaGeneration.cpp | 23 +++++++++-------------- mlir/lib/Transforms/LoopTiling.cpp | 9 +++------ 5 files changed, 19 insertions(+), 28 deletions(-) diff --git a/mlir/lib/Analysis/Utils.cpp b/mlir/lib/Analysis/Utils.cpp index b2d004b..aba14bd 100644 --- a/mlir/lib/Analysis/Utils.cpp +++ b/mlir/lib/Analysis/Utils.cpp @@ -398,8 +398,8 @@ LogicalResult mlir::boundCheckLoadOrStoreOp(LoadOrStoreOpPointer loadOrStoreOp, ucst.addConstantLowerBound(r, dimSize); outOfBounds = !ucst.isEmpty(); if (outOfBounds && emitError) { - loadOrStoreOp.emitOpError( - "memref out of upper bound access along dimension #" + Twine(r + 1)); + loadOrStoreOp.emitOpError() + << "memref out of upper bound access along dimension #" << (r + 1); } // Check for a negative index. @@ -409,8 +409,8 @@ LogicalResult mlir::boundCheckLoadOrStoreOp(LoadOrStoreOpPointer loadOrStoreOp, lcst.addConstantUpperBound(r, -1); outOfBounds = !lcst.isEmpty(); if (outOfBounds && emitError) { - loadOrStoreOp.emitOpError( - "memref out of lower bound access along dimension #" + Twine(r + 1)); + loadOrStoreOp.emitOpError() + << "memref out of lower bound access along dimension #" << (r + 1); } } return failure(outOfBounds); diff --git a/mlir/lib/Analysis/Verifier.cpp b/mlir/lib/Analysis/Verifier.cpp index 6d0b91d..6d49dce 100644 --- a/mlir/lib/Analysis/Verifier.cpp +++ b/mlir/lib/Analysis/Verifier.cpp @@ -349,8 +349,8 @@ LogicalResult FuncVerifier::verifyOpDominance(Operation &op) { if (domInfo->properlyDominates(operand, &op)) continue; - auto diag = op.emitError("operand #" + Twine(operandNo) + - " does not dominate this use"); + auto diag = op.emitError("operand #") + << operandNo << " does not dominate this use"; if (auto *useOp = operand->getDefiningOp()) diag.attachNote(useOp->getLoc()) << "operand defined here"; return failure(); diff --git a/mlir/lib/Transforms/DialectConversion.cpp b/mlir/lib/Transforms/DialectConversion.cpp index 831a68a..344007f 100644 --- a/mlir/lib/Transforms/DialectConversion.cpp +++ b/mlir/lib/Transforms/DialectConversion.cpp @@ -158,8 +158,7 @@ impl::FunctionConversion::convertOp(DialectOpConversion *converter, auto results = converter->rewrite(op, operands, builder); if (results.size() != op->getNumResults()) - return (op->emitError("rewriting produced a different number of results"), - failure()); + return op->emitError("rewriting produced a different number of results"); for (unsigned i = 0, e = results.size(); i < e; ++i) mapping.map(op->getResult(i), results[i]); diff --git a/mlir/lib/Transforms/DmaGeneration.cpp b/mlir/lib/Transforms/DmaGeneration.cpp index f589053..fd05c30 100644 --- a/mlir/lib/Transforms/DmaGeneration.cpp +++ b/mlir/lib/Transforms/DmaGeneration.cpp @@ -211,13 +211,9 @@ static bool getFullMemRefAsRegion(Operation *opInst, unsigned numParamLoopIVs, return true; } -static void emitRemarkForBlock(Block &block, const Twine &message) { +static InFlightDiagnostic emitRemarkForBlock(Block &block) { auto *op = block.getContainingOp(); - if (!op) { - block.getFunction()->emitRemark(message); - } else { - op->emitRemark(message); - } + return op ? op->emitRemark() : block.getFunction()->emitRemark(); } /// Creates a buffer in the faster memory space for the specified region; @@ -356,11 +352,10 @@ bool DmaGeneration::generateDma(const MemRefRegion ®ion, Block *block, fastBufferMap[memref] = fastMemRef; // fastMemRefType is a constant shaped memref. *sizeInBytes = getMemRefSizeInBytes(fastMemRefType).getValue(); - LLVM_DEBUG(std::string ss; llvm::raw_string_ostream oss(ss); - oss << "Creating DMA buffer of type " << fastMemRefType; - oss << " and size " << llvm::divideCeil(*sizeInBytes, 1024) - << " KiB\n"; - emitRemarkForBlock(*block, oss.str())); + LLVM_DEBUG(emitRemarkForBlock(*block) + << "Creating DMA buffer of type " << fastMemRefType + << " and size " << llvm::divideCeil(*sizeInBytes, 1024) + << " KiB\n"); } else { // Reuse the one already created. fastMemRef = fastBufferMap[memref]; @@ -741,9 +736,9 @@ uint64_t DmaGeneration::runOnBlock(Block::iterator begin, Block::iterator end) { AffineForOp forOp; uint64_t sizeInKib = llvm::divideCeil(totalDmaBuffersSizeInBytes, 1024); if (llvm::DebugFlag && (forOp = begin->dyn_cast())) { - forOp.emitRemark( - Twine(sizeInKib) + - " KiB of DMA buffers in fast memory space for this block\n"); + forOp.emitRemark() + << sizeInKib + << " KiB of DMA buffers in fast memory space for this block\n"; } if (totalDmaBuffersSizeInBytes > fastMemCapacityBytes) { diff --git a/mlir/lib/Transforms/LoopTiling.cpp b/mlir/lib/Transforms/LoopTiling.cpp index 4eb1ce2..303193b 100644 --- a/mlir/lib/Transforms/LoopTiling.cpp +++ b/mlir/lib/Transforms/LoopTiling.cpp @@ -397,13 +397,10 @@ void LoopTiling::runOnFunction() { SmallVector tileSizes; getTileSizes(band, &tileSizes); if (llvm::DebugFlag) { - std::stringstream msg; - msg << "using tile sizes ["; + auto diag = band[0].emitRemark("using tile sizes ["); for (auto tSize : tileSizes) - msg << tSize << " "; - msg << "]\n"; - auto rootForOp = band[0]; - rootForOp.emitRemark(msg.str()); + diag << tSize << " "; + diag << "]\n"; } if (failed(tileCodeGen(band, tileSizes))) return signalPassFailure(); -- 2.7.4