forked from OSchip/llvm-project
make AliasAnalysis know that VAArg writes memory. This is extremely conservative and should be fixed
llvm-svn: 22267
This commit is contained in:
parent
805d84a077
commit
f42d7b54c0
|
@ -37,6 +37,7 @@ namespace llvm {
|
||||||
|
|
||||||
class LoadInst;
|
class LoadInst;
|
||||||
class StoreInst;
|
class StoreInst;
|
||||||
|
class VAArgInst;
|
||||||
class TargetData;
|
class TargetData;
|
||||||
|
|
||||||
class AliasAnalysis {
|
class AliasAnalysis {
|
||||||
|
@ -254,8 +255,12 @@ public:
|
||||||
ModRefResult getModRefInfo(InvokeInst *I, Value *P, unsigned Size) {
|
ModRefResult getModRefInfo(InvokeInst *I, Value *P, unsigned Size) {
|
||||||
return getModRefInfo(CallSite(I), P, Size);
|
return getModRefInfo(CallSite(I), P, Size);
|
||||||
}
|
}
|
||||||
|
ModRefResult getModRefInfo(VAArgInst* I, Value* P, unsigned Size) {
|
||||||
|
return AliasAnalysis::Mod;
|
||||||
|
}
|
||||||
ModRefResult getModRefInfo(Instruction *I, Value *P, unsigned Size) {
|
ModRefResult getModRefInfo(Instruction *I, Value *P, unsigned Size) {
|
||||||
switch (I->getOpcode()) {
|
switch (I->getOpcode()) {
|
||||||
|
case Instruction::VAArg: return getModRefInfo((VAArgInst*)I, P, Size);
|
||||||
case Instruction::Load: return getModRefInfo((LoadInst*)I, P, Size);
|
case Instruction::Load: return getModRefInfo((LoadInst*)I, P, Size);
|
||||||
case Instruction::Store: return getModRefInfo((StoreInst*)I, P, Size);
|
case Instruction::Store: return getModRefInfo((StoreInst*)I, P, Size);
|
||||||
case Instruction::Call: return getModRefInfo((CallInst*)I, P, Size);
|
case Instruction::Call: return getModRefInfo((CallInst*)I, P, Size);
|
||||||
|
|
Loading…
Reference in New Issue