|
MLIR 24.0.0git
|
#include "mlir/Interfaces/SideEffectInterfaces.h"#include "mlir/IR/SymbolTable.h"#include <utility>#include "mlir/Interfaces/SideEffectInterfaces.cpp.inc"Go to the source code of this file.
Return true if the op's own memory effects do not prevent erasure.
Allowed effects are reads and effects on results allocated by the op itself.
If the op only has recursive effects, treat the op itself as having no effects. Without a memory effect interface or recursive effects, return false to conservatively assume live effects.
The caller must also check nested effects when hasRecursiveEffects is true. This function does not check uses or restrictions on erasing terminators and symbols.
Definition at line 49 of file SideEffectInterfaces.cpp.
References mlir::SideEffects::EffectInstance< EffectT >::getEffect(), and mlir::SideEffects::EffectInstance< EffectT >::getValue().
Referenced by wouldOpBeTriviallyDeadImpl().
| template bool mlir::hasEffect< BlockArgument, MemoryEffects::Allocate > | ( | Operation * | , |
| BlockArgument | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< BlockArgument, MemoryEffects::Free > | ( | Operation * | , |
| BlockArgument | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< BlockArgument, MemoryEffects::Read > | ( | Operation * | , |
| BlockArgument | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< BlockArgument, MemoryEffects::Write > | ( | Operation * | , |
| BlockArgument | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< BlockArgument, MemoryEffects::Write, MemoryEffects::Free > | ( | Operation * | , |
| BlockArgument | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< MemoryEffects::Allocate > | ( | Operation * | ) |
References mlir::hasEffect().
Referenced by hasAllocateSideEffect().
| template bool mlir::hasEffect< MemoryEffects::Allocate > | ( | Operation * | , |
| Value | value ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< MemoryEffects::Free > | ( | Operation * | ) |
References mlir::hasEffect().
Referenced by mlir::affine::MemRefDependenceGraph::Node::hasFree().
| template bool mlir::hasEffect< MemoryEffects::Free > | ( | Operation * | , |
| Value | value ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< MemoryEffects::Read > | ( | Operation * | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< MemoryEffects::Read > | ( | Operation * | , |
| Value | value ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< MemoryEffects::Write > | ( | Operation * | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< MemoryEffects::Write > | ( | Operation * | , |
| Value | value ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< MemoryEffects::Write, MemoryEffects::Free > | ( | Operation * | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< MemoryEffects::Write, MemoryEffects::Free > | ( | Operation * | , |
| Value | value ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< OpOperand *, MemoryEffects::Allocate > | ( | Operation * | , |
| OpOperand * | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< OpOperand *, MemoryEffects::Free > | ( | Operation * | , |
| OpOperand * | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< OpOperand *, MemoryEffects::Read > | ( | Operation * | , |
| OpOperand * | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< OpOperand *, MemoryEffects::Write > | ( | Operation * | , |
| OpOperand * | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< OpOperand *, MemoryEffects::Write, MemoryEffects::Free > | ( | Operation * | , |
| OpOperand * | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< OpResult, MemoryEffects::Allocate > | ( | Operation * | , |
| OpResult | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< OpResult, MemoryEffects::Free > | ( | Operation * | , |
| OpResult | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< OpResult, MemoryEffects::Read > | ( | Operation * | , |
| OpResult | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< OpResult, MemoryEffects::Write > | ( | Operation * | , |
| OpResult | ) |
References mlir::hasEffect().
| template bool mlir::hasEffect< OpResult, MemoryEffects::Write, MemoryEffects::Free > | ( | Operation * | , |
| OpResult | ) |
References mlir::hasEffect().
| template bool mlir::hasSingleEffect< BlockArgument, MemoryEffects::Allocate > | ( | Operation * | , |
| BlockArgument | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< BlockArgument, MemoryEffects::Free > | ( | Operation * | , |
| BlockArgument | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< BlockArgument, MemoryEffects::Read > | ( | Operation * | , |
| BlockArgument | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< BlockArgument, MemoryEffects::Write > | ( | Operation * | , |
| BlockArgument | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< MemoryEffects::Allocate > | ( | Operation * | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< MemoryEffects::Allocate > | ( | Operation * | , |
| Value | value ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< MemoryEffects::Free > | ( | Operation * | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< MemoryEffects::Free > | ( | Operation * | , |
| Value | value ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< MemoryEffects::Read > | ( | Operation * | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< MemoryEffects::Read > | ( | Operation * | , |
| Value | value ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< MemoryEffects::Write > | ( | Operation * | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< MemoryEffects::Write > | ( | Operation * | , |
| Value | value ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< OpOperand *, MemoryEffects::Allocate > | ( | Operation * | , |
| OpOperand * | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< OpOperand *, MemoryEffects::Free > | ( | Operation * | , |
| OpOperand * | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< OpOperand *, MemoryEffects::Read > | ( | Operation * | , |
| OpOperand * | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< OpOperand *, MemoryEffects::Write > | ( | Operation * | , |
| OpOperand * | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< OpResult, MemoryEffects::Allocate > | ( | Operation * | , |
| OpResult | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< OpResult, MemoryEffects::Free > | ( | Operation * | , |
| OpResult | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< OpResult, MemoryEffects::Read > | ( | Operation * | , |
| OpResult | ) |
References mlir::hasSingleEffect().
| template bool mlir::hasSingleEffect< OpResult, MemoryEffects::Write > | ( | Operation * | , |
| OpResult | ) |
References mlir::hasSingleEffect().
|
static |
Internal implementation of mlir::wouldOpBeTriviallyDead that also considers terminator operations as dead if they have no side effects.
This allows for marking region operations as trivially dead without always being conservative of terminators.
Definition at line 76 of file SideEffectInterfaces.cpp.
References mlir::Operation::getParentOp(), mlir::Operation::getRegions(), hasOnlyRemovableEffects(), and mlir::Operation::hasTrait().
Referenced by mlir::DeadnessCache::isOpTriviallyDead(), and mlir::wouldOpBeTriviallyDead().