diff options
Diffstat (limited to 'mlir/lib/Transforms/CSE.cpp')
-rw-r--r-- | mlir/lib/Transforms/CSE.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/mlir/lib/Transforms/CSE.cpp b/mlir/lib/Transforms/CSE.cpp index 3a76594..42ba715 100644 --- a/mlir/lib/Transforms/CSE.cpp +++ b/mlir/lib/Transforms/CSE.cpp @@ -127,6 +127,13 @@ LogicalResult CSE::simplifyOperation(ScopedMapTy &knownValues, Operation *op) { if (op->isKnownTerminator()) return failure(); + // If the operation is already trivially dead just add it to the erase list. + if (isOpTriviallyDead(op)) { + opsToErase.push_back(op); + ++numDCE; + return success(); + } + // Don't simplify operations with nested blocks. We don't currently model // equality comparisons correctly among other things. It is also unclear // whether we would want to CSE such operations. @@ -135,16 +142,9 @@ LogicalResult CSE::simplifyOperation(ScopedMapTy &knownValues, Operation *op) { // TODO(riverriddle) We currently only eliminate non side-effecting // operations. - if (!op->hasNoSideEffect()) + if (!MemoryEffectOpInterface::hasNoEffect(op)) return failure(); - // If the operation is already trivially dead just add it to the erase list. - if (op->use_empty()) { - opsToErase.push_back(op); - ++numDCE; - return success(); - } - // Look for an existing definition for the operation. if (auto *existing = knownValues.lookup(op)) { // If we find one then replace all uses of the current operation with the |