mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
Change isSafeToLoadUnconditionally arguments order. Separated from http://reviews.llvm.org/D10920.
llvm-svn: 257894
This commit is contained in:
parent
314b93ff26
commit
4681033ea8
@ -27,8 +27,8 @@ class MDNode;
|
||||
/// from this value cannot trap. If it is not obviously safe to load from the
|
||||
/// specified pointer, we do a quick local scan of the basic block containing
|
||||
/// ScanFrom, to determine if the address is already accessed.
|
||||
bool isSafeToLoadUnconditionally(Value *V, Instruction *ScanFrom,
|
||||
unsigned Align);
|
||||
bool isSafeToLoadUnconditionally(Value *V, unsigned Align,
|
||||
Instruction *ScanFrom);
|
||||
|
||||
/// DefMaxInstsToScan - the default number of maximum instructions
|
||||
/// to scan in the block, used by FindAvailableLoadedValue().
|
||||
|
@ -62,8 +62,8 @@ static bool AreEquivalentAddressValues(const Value *A, const Value *B) {
|
||||
///
|
||||
/// This uses the pointee type to determine how many bytes need to be safe to
|
||||
/// load from the pointer.
|
||||
bool llvm::isSafeToLoadUnconditionally(Value *V, Instruction *ScanFrom,
|
||||
unsigned Align) {
|
||||
bool llvm::isSafeToLoadUnconditionally(Value *V, unsigned Align,
|
||||
Instruction *ScanFrom) {
|
||||
const DataLayout &DL = ScanFrom->getModule()->getDataLayout();
|
||||
|
||||
// Zero alignment means that the load has the ABI alignment for the target
|
||||
|
@ -852,8 +852,8 @@ Instruction *InstCombiner::visitLoadInst(LoadInst &LI) {
|
||||
if (SelectInst *SI = dyn_cast<SelectInst>(Op)) {
|
||||
// load (select (Cond, &V1, &V2)) --> select(Cond, load &V1, load &V2).
|
||||
unsigned Align = LI.getAlignment();
|
||||
if (isSafeToLoadUnconditionally(SI->getOperand(1), SI, Align) &&
|
||||
isSafeToLoadUnconditionally(SI->getOperand(2), SI, Align)) {
|
||||
if (isSafeToLoadUnconditionally(SI->getOperand(1), Align, SI) &&
|
||||
isSafeToLoadUnconditionally(SI->getOperand(2), Align, SI)) {
|
||||
LoadInst *V1 = Builder->CreateLoad(SI->getOperand(1),
|
||||
SI->getOperand(1)->getName()+".val");
|
||||
LoadInst *V2 = Builder->CreateLoad(SI->getOperand(2),
|
||||
|
@ -1193,7 +1193,7 @@ static bool isSafePHIToSpeculate(PHINode &PN) {
|
||||
// is already a load in the block, then we can move the load to the pred
|
||||
// block.
|
||||
if (isDereferenceablePointer(InVal, DL) ||
|
||||
isSafeToLoadUnconditionally(InVal, TI, MaxAlign))
|
||||
isSafeToLoadUnconditionally(InVal, MaxAlign, TI))
|
||||
continue;
|
||||
|
||||
return false;
|
||||
@ -1274,10 +1274,10 @@ static bool isSafeSelectToSpeculate(SelectInst &SI) {
|
||||
// absolutely (e.g. allocas) or at this point because we can see other
|
||||
// accesses to it.
|
||||
if (!TDerefable &&
|
||||
!isSafeToLoadUnconditionally(TValue, LI, LI->getAlignment()))
|
||||
!isSafeToLoadUnconditionally(TValue, LI->getAlignment(), LI))
|
||||
return false;
|
||||
if (!FDerefable &&
|
||||
!isSafeToLoadUnconditionally(FValue, LI, LI->getAlignment()))
|
||||
!isSafeToLoadUnconditionally(FValue, LI->getAlignment(), LI))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1151,12 +1151,12 @@ static bool isSafeSelectToSpeculate(SelectInst *SI) {
|
||||
// Both operands to the select need to be dereferencable, either absolutely
|
||||
// (e.g. allocas) or at this point because we can see other accesses to it.
|
||||
if (!TDerefable &&
|
||||
!isSafeToLoadUnconditionally(SI->getTrueValue(), LI,
|
||||
LI->getAlignment()))
|
||||
!isSafeToLoadUnconditionally(SI->getTrueValue(), LI->getAlignment(),
|
||||
LI))
|
||||
return false;
|
||||
if (!FDerefable &&
|
||||
!isSafeToLoadUnconditionally(SI->getFalseValue(), LI,
|
||||
LI->getAlignment()))
|
||||
!isSafeToLoadUnconditionally(SI->getFalseValue(), LI->getAlignment(),
|
||||
LI))
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1230,7 +1230,7 @@ static bool isSafePHIToSpeculate(PHINode *PN) {
|
||||
// If this pointer is always safe to load, or if we can prove that there is
|
||||
// already a load in the block, then we can move the load to the pred block.
|
||||
if (isDereferenceablePointer(InVal, DL) ||
|
||||
isSafeToLoadUnconditionally(InVal, Pred->getTerminator(), MaxAlign))
|
||||
isSafeToLoadUnconditionally(InVal, MaxAlign, Pred->getTerminator()))
|
||||
continue;
|
||||
|
||||
return false;
|
||||
|
@ -455,8 +455,8 @@ bool TailCallElim::CanMoveAboveCall(Instruction *I, CallInst *CI) {
|
||||
// FIXME: Writes to memory only matter if they may alias the pointer
|
||||
// being loaded from.
|
||||
if (CI->mayWriteToMemory() ||
|
||||
!isSafeToLoadUnconditionally(L->getPointerOperand(), L,
|
||||
L->getAlignment()))
|
||||
!isSafeToLoadUnconditionally(L->getPointerOperand(),
|
||||
L->getAlignment(), L))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user