parent
6014edd117
commit
ed1d92cb9a
|
@ -120,9 +120,10 @@ getCallSiteDependencyFrom(CallSite CS, bool isReadOnlyCall,
|
||||||
Pointer = CI->getArgOperand(0);
|
Pointer = CI->getArgOperand(0);
|
||||||
// calls to free() erase the entire structure
|
// calls to free() erase the entire structure
|
||||||
PointerSize = ~0ULL;
|
PointerSize = ~0ULL;
|
||||||
} else if (CallSite InstCS = Inst) {
|
} else if (isa<CallInst>(Inst) || isa<InvokeInst>(Inst)) {
|
||||||
// Debug intrinsics don't cause dependences.
|
// Debug intrinsics don't cause dependences.
|
||||||
if (isa<DbgInfoIntrinsic>(Inst)) continue;
|
if (isa<DbgInfoIntrinsic>(Inst)) continue;
|
||||||
|
CallSite InstCS = CallSite::get(Inst);
|
||||||
// If these two calls do not interfere, look past it.
|
// If these two calls do not interfere, look past it.
|
||||||
switch (AA->getModRefInfo(CS, InstCS)) {
|
switch (AA->getModRefInfo(CS, InstCS)) {
|
||||||
case AliasAnalysis::NoModRef:
|
case AliasAnalysis::NoModRef:
|
||||||
|
@ -386,7 +387,7 @@ MemDepResult MemoryDependenceAnalysis::getDependency(Instruction *QueryInst) {
|
||||||
MemSize = cast<ConstantInt>(II->getArgOperand(1))->getZExtValue();
|
MemSize = cast<ConstantInt>(II->getArgOperand(1))->getZExtValue();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
CallSite QueryCS(QueryInst);
|
CallSite QueryCS = CallSite::get(QueryInst);
|
||||||
bool isReadOnly = AA->onlyReadsMemory(QueryCS);
|
bool isReadOnly = AA->onlyReadsMemory(QueryCS);
|
||||||
LocalCache = getCallSiteDependencyFrom(QueryCS, isReadOnly, ScanPos,
|
LocalCache = getCallSiteDependencyFrom(QueryCS, isReadOnly, ScanPos,
|
||||||
QueryParent);
|
QueryParent);
|
||||||
|
|
Loading…
Reference in New Issue