mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Teach BasicAliasAnalysis::getModRefBehavior(const Function *F)
to analyze intrinsic functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118409 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6c25c920e6
commit
431c794ade
@ -553,14 +553,22 @@ BasicAliasAnalysis::getModRefBehavior(ImmutableCallSite CS) {
|
||||
/// For use when the call site is not known.
|
||||
AliasAnalysis::ModRefBehavior
|
||||
BasicAliasAnalysis::getModRefBehavior(const Function *F) {
|
||||
// If the function declares it doesn't access memory, we can't do better.
|
||||
if (F->doesNotAccessMemory())
|
||||
// Can't do better than this.
|
||||
return DoesNotAccessMemory;
|
||||
|
||||
// For intrinsics, we can check the table.
|
||||
if (unsigned iid = F->getIntrinsicID()) {
|
||||
#define GET_INTRINSIC_MODREF_BEHAVIOR
|
||||
#include "llvm/Intrinsics.gen"
|
||||
#undef GET_INTRINSIC_MODREF_BEHAVIOR
|
||||
}
|
||||
|
||||
// If the function declares it only reads memory, go with that.
|
||||
if (F->onlyReadsMemory())
|
||||
return OnlyReadsMemory;
|
||||
if (unsigned id = F->getIntrinsicID())
|
||||
return getIntrinsicModRefBehavior(id);
|
||||
|
||||
// Otherwise be conservative.
|
||||
return AliasAnalysis::getModRefBehavior(F);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user