mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-13 23:25:06 +00:00
Integrate the readonly/readnone logic more deeply
into alias analysis. This meant updating the API which now has versions of the getModRefBehavior, doesNotAccessMemory and onlyReadsMemory methods which take a callsite parameter. These should be used unless the callsite is not known, since in general they can do a better job than the versions that take a function. Also, users should no longer call the version of getModRefBehavior that takes both a function and a callsite. To reduce the chance of misuse it is now protected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44487 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -94,11 +94,9 @@ Instruction* MemoryDependenceAnalysis::getCallSiteDependency(CallSite C,
|
||||
|
||||
// FreeInsts erase the entire structure
|
||||
pointerSize = ~0UL;
|
||||
} else if (CallSite::get(QI).getInstruction() != 0 &&
|
||||
cast<CallInst>(QI)->getCalledFunction()) {
|
||||
} else if (isa<CallInst>(QI)) {
|
||||
AliasAnalysis::ModRefBehavior result =
|
||||
AA.getModRefBehavior(cast<CallInst>(QI)->getCalledFunction(),
|
||||
CallSite::get(QI));
|
||||
AA.getModRefBehavior(CallSite::get(QI));
|
||||
if (result != AliasAnalysis::DoesNotAccessMemory &&
|
||||
result != AliasAnalysis::OnlyReadsMemory) {
|
||||
if (!start && !block) {
|
||||
|
Reference in New Issue
Block a user