mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
Atomic load/store support in LICM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137648 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -126,8 +126,6 @@ void AliasSet::addPointer(AliasSetTracker &AST, PointerRec &Entry,
|
||||
void AliasSet::addUnknownInst(Instruction *I, AliasAnalysis &AA) {
|
||||
UnknownInsts.push_back(I);
|
||||
|
||||
if (!I->mayReadOrWriteMemory())
|
||||
return;
|
||||
if (!I->mayWriteToMemory()) {
|
||||
AliasTy = MayAlias;
|
||||
AccessTy |= Refs;
|
||||
@ -297,22 +295,28 @@ bool AliasSetTracker::add(Value *Ptr, uint64_t Size, const MDNode *TBAAInfo) {
|
||||
|
||||
|
||||
bool AliasSetTracker::add(LoadInst *LI) {
|
||||
if (LI->getOrdering() > Monotonic) return addUnknown(LI);
|
||||
AliasSet::AccessType ATy = AliasSet::Refs;
|
||||
if (!LI->isUnordered()) ATy = AliasSet::ModRef;
|
||||
bool NewPtr;
|
||||
AliasSet &AS = addPointer(LI->getOperand(0),
|
||||
AA.getTypeStoreSize(LI->getType()),
|
||||
LI->getMetadata(LLVMContext::MD_tbaa),
|
||||
AliasSet::Refs, NewPtr);
|
||||
ATy, NewPtr);
|
||||
if (LI->isVolatile()) AS.setVolatile();
|
||||
return NewPtr;
|
||||
}
|
||||
|
||||
bool AliasSetTracker::add(StoreInst *SI) {
|
||||
if (SI->getOrdering() > Monotonic) return addUnknown(SI);
|
||||
AliasSet::AccessType ATy = AliasSet::Mods;
|
||||
if (!SI->isUnordered()) ATy = AliasSet::ModRef;
|
||||
bool NewPtr;
|
||||
Value *Val = SI->getOperand(0);
|
||||
AliasSet &AS = addPointer(SI->getOperand(1),
|
||||
AA.getTypeStoreSize(Val->getType()),
|
||||
SI->getMetadata(LLVMContext::MD_tbaa),
|
||||
AliasSet::Mods, NewPtr);
|
||||
ATy, NewPtr);
|
||||
if (SI->isVolatile()) AS.setVolatile();
|
||||
return NewPtr;
|
||||
}
|
||||
|
Reference in New Issue
Block a user