forked from OSchip/llvm-project
Finegrainify namespacification
Add capability to represent volatile AliasSet's Propagate this information from loads&stores into the aliassets llvm-svn: 10457
This commit is contained in:
parent
310da97240
commit
0a14060ce2
|
@ -20,8 +20,7 @@
|
||||||
#include "llvm/Target/TargetData.h"
|
#include "llvm/Target/TargetData.h"
|
||||||
#include "llvm/Assembly/Writer.h"
|
#include "llvm/Assembly/Writer.h"
|
||||||
#include "llvm/Support/InstIterator.h"
|
#include "llvm/Support/InstIterator.h"
|
||||||
|
using namespace llvm;
|
||||||
namespace llvm {
|
|
||||||
|
|
||||||
/// mergeSetIn - Merge the specified alias set into this alias set...
|
/// mergeSetIn - Merge the specified alias set into this alias set...
|
||||||
///
|
///
|
||||||
|
@ -190,16 +189,21 @@ AliasSet &AliasSetTracker::getAliasSetForPointer(Value *Pointer, unsigned Size){
|
||||||
}
|
}
|
||||||
|
|
||||||
void AliasSetTracker::add(LoadInst *LI) {
|
void AliasSetTracker::add(LoadInst *LI) {
|
||||||
addPointer(LI->getOperand(0),
|
AliasSet &AS =
|
||||||
AA.getTargetData().getTypeSize(LI->getType()), AliasSet::Refs);
|
addPointer(LI->getOperand(0),
|
||||||
|
AA.getTargetData().getTypeSize(LI->getType()), AliasSet::Refs);
|
||||||
|
if (LI->isVolatile()) AS.setVolatile();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AliasSetTracker::add(StoreInst *SI) {
|
void AliasSetTracker::add(StoreInst *SI) {
|
||||||
addPointer(SI->getOperand(1),
|
AliasSet &AS =
|
||||||
AA.getTargetData().getTypeSize(SI->getOperand(0)->getType()),
|
addPointer(SI->getOperand(1),
|
||||||
AliasSet::Mods);
|
AA.getTargetData().getTypeSize(SI->getOperand(0)->getType()),
|
||||||
|
AliasSet::Mods);
|
||||||
|
if (SI->isVolatile()) AS.setVolatile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AliasSetTracker::add(CallSite CS) {
|
void AliasSetTracker::add(CallSite CS) {
|
||||||
AliasSet *AS = findAliasSetForCallSite(CS);
|
AliasSet *AS = findAliasSetForCallSite(CS);
|
||||||
if (!AS) {
|
if (!AS) {
|
||||||
|
@ -263,6 +267,7 @@ void AliasSet::print(std::ostream &OS) const {
|
||||||
case ModRef : OS << "Mod/Ref "; break;
|
case ModRef : OS << "Mod/Ref "; break;
|
||||||
default: assert(0 && "Bad value for AccessTy!");
|
default: assert(0 && "Bad value for AccessTy!");
|
||||||
}
|
}
|
||||||
|
if (isVolatile()) OS << "[volatile] ";
|
||||||
if (Forward)
|
if (Forward)
|
||||||
OS << " forwarding to " << (void*)Forward;
|
OS << " forwarding to " << (void*)Forward;
|
||||||
|
|
||||||
|
@ -329,5 +334,3 @@ namespace {
|
||||||
RegisterPass<AliasSetPrinter> X("print-alias-sets", "Alias Set Printer",
|
RegisterPass<AliasSetPrinter> X("print-alias-sets", "Alias Set Printer",
|
||||||
PassInfo::Analysis | PassInfo::Optimization);
|
PassInfo::Analysis | PassInfo::Optimization);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // End llvm namespace
|
|
||||||
|
|
Loading…
Reference in New Issue