mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-18 11:24:01 +00:00
Rather than having special rules like "intrinsics cannot
throw exceptions", just mark intrinsics with the nounwind attribute. Likewise, mark intrinsics as readnone/readonly and get rid of special aliasing logic (which didn't use anything more than this anyway). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44544 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -25,8 +25,6 @@
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/StringMap.h"
|
||||
#include "llvm/ADT/BitVector.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Support/GetElementPtrTypeIterator.h"
|
||||
@ -116,9 +114,6 @@ namespace {
|
||||
/// global) or not.
|
||||
bool pointsToConstantMemory(const Value *P);
|
||||
|
||||
virtual ModRefBehavior getModRefBehavior(Function *F, CallSite CS,
|
||||
std::vector<PointerAccessInfo> *Info);
|
||||
|
||||
private:
|
||||
// CheckGEPInstructions - Check two GEP instructions with known
|
||||
// must-aliasing base pointers. This checks to see if the index expressions
|
||||
@ -810,37 +805,5 @@ BasicAliasAnalysis::CheckGEPInstructions(
|
||||
return MayAlias;
|
||||
}
|
||||
|
||||
static ManagedStatic<BitVector> NoMemoryIntrinsics;
|
||||
static ManagedStatic<BitVector> OnlyReadsMemoryIntrinsics;
|
||||
|
||||
AliasAnalysis::ModRefBehavior
|
||||
BasicAliasAnalysis::getModRefBehavior(Function *F, CallSite CS,
|
||||
std::vector<PointerAccessInfo> *Info) {
|
||||
if (!F->isDeclaration()) return UnknownModRefBehavior;
|
||||
|
||||
static bool Initialized = false;
|
||||
if (!Initialized) {
|
||||
NoMemoryIntrinsics->resize(Intrinsic::num_intrinsics);
|
||||
OnlyReadsMemoryIntrinsics->resize(Intrinsic::num_intrinsics);
|
||||
#define GET_MODREF_BEHAVIOR
|
||||
#include "llvm/Intrinsics.gen"
|
||||
#undef GET_MODREF_BEHAVIOR
|
||||
|
||||
Initialized = true;
|
||||
}
|
||||
|
||||
// If this is an intrinsic, we can use lookup tables
|
||||
if (unsigned id = F->getIntrinsicID()) {
|
||||
if (NoMemoryIntrinsics->test(id))
|
||||
return DoesNotAccessMemory;
|
||||
if (OnlyReadsMemoryIntrinsics->test(id))
|
||||
return OnlyReadsMemory;
|
||||
|
||||
return UnknownModRefBehavior;
|
||||
}
|
||||
|
||||
return UnknownModRefBehavior;
|
||||
}
|
||||
|
||||
// Make sure that anything that uses AliasAnalysis pulls in this file...
|
||||
DEFINING_FILE_FOR(BasicAliasAnalysis)
|
||||
|
Reference in New Issue
Block a user