mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
Peephole opt needs optimizeSelect() to keep track of newly created MIs
Peephole optimizer is scanning a basic block forward. At some point it needs to answer the question "given a pointer to an MI in the current BB, is it located before or after the current instruction". To perform this, it keeps a set of the MIs already seen during the scan, if a MI is not in the set, it is assumed to be after. It means that newly created MIs have to be inserted in the set as well. This commit passes the set as an argument to the target-dependent optimizeSelect() so that it can properly update the set with the (potentially) newly created MIs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225772 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -603,9 +603,12 @@ public:
|
||||
/// a side.
|
||||
///
|
||||
/// @param MI Optimizable select instruction.
|
||||
/// @param SeenMIs Set that record all MIs in the basic block up to \p
|
||||
/// MI. Has to be updated with any newly created MI or deleted ones.
|
||||
/// @param PreferFalse Try to optimize FalseOp instead of TrueOp.
|
||||
/// @returns Optimized instruction or NULL.
|
||||
virtual MachineInstr *optimizeSelect(MachineInstr *MI,
|
||||
SmallPtrSetImpl<MachineInstr *> &NewMIs,
|
||||
bool PreferFalse = false) const {
|
||||
// This function must be implemented if Optimizable is ever set.
|
||||
llvm_unreachable("Target must implement TargetInstrInfo::optimizeSelect!");
|
||||
|
Reference in New Issue
Block a user