cache result of operator*

llvm-svn: 108144
This commit is contained in:
Gabor Greif 2010-07-12 14:13:15 +00:00
parent 15445db11b
commit a75ed761a9
1 changed files with 6 additions and 4 deletions

View File

@ -1600,13 +1600,15 @@ static bool TryToShrinkGlobalToBoolean(GlobalVariable *GV, Constant *OtherVal) {
GVElType->isFloatingPointTy() || GVElType->isFloatingPointTy() ||
GVElType->isPointerTy() || GVElType->isVectorTy()) GVElType->isPointerTy() || GVElType->isVectorTy())
return false; return false;
// Walk the use list of the global seeing if all the uses are load or store. // Walk the use list of the global seeing if all the uses are load or store.
// If there is anything else, bail out. // If there is anything else, bail out.
for (Value::use_iterator I = GV->use_begin(), E = GV->use_end(); I != E; ++I) for (Value::use_iterator I = GV->use_begin(), E = GV->use_end(); I != E; ++I){
if (!isa<LoadInst>(I) && !isa<StoreInst>(I)) User *U = *I;
if (!isa<LoadInst>(U) && !isa<StoreInst>(U))
return false; return false;
}
DEBUG(dbgs() << " *** SHRINKING TO BOOL: " << *GV); DEBUG(dbgs() << " *** SHRINKING TO BOOL: " << *GV);
// Create the new global, initializing it to false. // Create the new global, initializing it to false.