mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 04:33:05 +00:00
Add interfaces to update value numbering results
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13677 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c43e0ae350
commit
bc78225518
@ -39,13 +39,30 @@ struct ValueNumbering {
|
||||
|
||||
///===-------------------------------------------------------------------===//
|
||||
/// Interfaces to update value numbering analysis information as the client
|
||||
/// changes the program
|
||||
/// changes the program.
|
||||
///
|
||||
|
||||
/// deleteInstruction - Clients should invoke this method when they delete an
|
||||
/// instruction from the program. This allows the analysis implementations to
|
||||
/// avoid having dangling pointers in their representation.
|
||||
virtual void deleteInstruction(Instruction *I) {}
|
||||
/// deleteValue - This method should be called whenever an LLVM Value is
|
||||
/// deleted from the program, for example when an instruction is found to be
|
||||
/// redundant and is eliminated.
|
||||
///
|
||||
virtual void deleteValue(Value *V) {}
|
||||
|
||||
/// copyValue - This method should be used whenever a preexisting value in the
|
||||
/// program is copied or cloned, introducing a new value. Note that analysis
|
||||
/// implementations should tolerate clients that use this method to introduce
|
||||
/// the same value multiple times: if the analysis already knows about a
|
||||
/// value, it should ignore the request.
|
||||
///
|
||||
virtual void copyValue(Value *From, Value *To) {}
|
||||
|
||||
/// replaceWithNewValue - This method is the obvious combination of the two
|
||||
/// above, and it provided as a helper to simplify client code.
|
||||
///
|
||||
void replaceWithNewValue(Value *Old, Value *New) {
|
||||
copyValue(Old, New);
|
||||
deleteValue(Old);
|
||||
}
|
||||
};
|
||||
|
||||
extern void BasicValueNumberingStub();
|
||||
|
Loading…
Reference in New Issue
Block a user