mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
performance: cache the dereferenced use_iterator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101250 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2c93e39072
commit
488d4421c6
@ -683,16 +683,18 @@ void LICM::PromoteValuesInLoop() {
|
||||
// to LI as we are loading or storing. Since we know that the value is
|
||||
// stored in this loop, this will always succeed.
|
||||
for (Value::use_iterator UI = Ptr->use_begin(), E = Ptr->use_end();
|
||||
UI != E; ++UI)
|
||||
if (LoadInst *LI = dyn_cast<LoadInst>(*UI)) {
|
||||
UI != E; ++UI) {
|
||||
User *U = *UI;
|
||||
if (LoadInst *LI = dyn_cast<LoadInst>(U)) {
|
||||
LoadValue = LI;
|
||||
break;
|
||||
} else if (StoreInst *SI = dyn_cast<StoreInst>(*UI)) {
|
||||
} else if (StoreInst *SI = dyn_cast<StoreInst>(U)) {
|
||||
if (SI->getOperand(1) == Ptr) {
|
||||
LoadValue = SI->getOperand(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
assert(LoadValue && "No store through the pointer found!");
|
||||
PointerValueNumbers.push_back(LoadValue); // Remember this for later.
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user