diff options
author | Dan Gohman <gohman@apple.com> | 2009-05-04 22:30:44 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2009-05-04 22:30:44 +0000 |
commit | 35738ac150afafe2359268d4b2169498c6c98c5f (patch) | |
tree | ac250e567776d377d07d242c1b9c94c2d04d6176 /include/llvm/Transforms/Utils/Local.h | |
parent | bf2176a00092540e18e8922487975cabefed8265 (diff) |
Re-apply 70645, converting ScalarEvolution to use
CallbackVH, with fixes. allUsesReplacedWith need to
walk the def-use chains and invalidate all users of a
value that is replaced. SCEVs of users need to be
recalcualted even if the new value is equivalent. Also,
make forgetLoopPHIs walk def-use chains, since any
SCEV that depends on a PHI should be recalculated when
more information about that PHI becomes available.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70927 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Transforms/Utils/Local.h')
-rw-r--r-- | include/llvm/Transforms/Utils/Local.h | 27 |
1 files changed, 2 insertions, 25 deletions
diff --git a/include/llvm/Transforms/Utils/Local.h b/include/llvm/Transforms/Utils/Local.h index 4cb46b0c4b..5ea1a500c5 100644 --- a/include/llvm/Transforms/Utils/Local.h +++ b/include/llvm/Transforms/Utils/Local.h @@ -50,40 +50,17 @@ bool ConstantFoldTerminator(BasicBlock *BB); /// bool isInstructionTriviallyDead(Instruction *I); -/// ValueDeletionListener - A simple abstract interface for delivering -/// notifications when Values are deleted. -/// -/// @todo Consider whether ValueDeletionListener can be made obsolete by -/// requiring clients to use CallbackVH instead. -class ValueDeletionListener { -public: - /// ValueWillBeDeleted - This method is called shortly before the specified - /// value will be deleted. - virtual void ValueWillBeDeleted(Value *V) = 0; - -protected: - virtual ~ValueDeletionListener(); -}; - /// RecursivelyDeleteTriviallyDeadInstructions - If the specified value is a /// trivially dead instruction, delete it. If that makes any of its operands /// trivially dead, delete them too, recursively. -/// -/// If a ValueDeletionListener is specified, it is notified of instructions that -/// are actually deleted (before they are actually deleted). -void RecursivelyDeleteTriviallyDeadInstructions(Value *V, - ValueDeletionListener *VDL = 0); +void RecursivelyDeleteTriviallyDeadInstructions(Value *V); /// RecursivelyDeleteDeadPHINode - If the specified value is an effectively /// dead PHI node, due to being a def-use chain of single-use nodes that /// either forms a cycle or is terminated by a trivially dead instruction, /// delete it. If that makes any of its operands trivially dead, delete them /// too, recursively. -/// -/// If a ValueDeletionListener is specified, it is notified of instructions that -/// are actually deleted (before they are actually deleted). -void RecursivelyDeleteDeadPHINode(PHINode *PN, - ValueDeletionListener *VDL = 0); +void RecursivelyDeleteDeadPHINode(PHINode *PN); //===----------------------------------------------------------------------===// // Control Flow Graph Restructuring. |