diff options
Diffstat (limited to 'lib/Analysis/TypeBasedAliasAnalysis.cpp')
-rw-r--r-- | lib/Analysis/TypeBasedAliasAnalysis.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Analysis/TypeBasedAliasAnalysis.cpp b/lib/Analysis/TypeBasedAliasAnalysis.cpp index 8d36847..2030844 100644 --- a/lib/Analysis/TypeBasedAliasAnalysis.cpp +++ b/lib/Analysis/TypeBasedAliasAnalysis.cpp @@ -32,8 +32,12 @@ #include "llvm/Module.h" #include "llvm/Metadata.h" #include "llvm/Pass.h" +#include "llvm/Support/CommandLine.h" using namespace llvm; +// For testing purposes, enable TBAA only via a special option. +static cl::opt<bool> EnableTBAA("enable-tbaa"); + namespace { /// TBAANode - This is a simple wrapper around an MDNode which provides a /// higher-level interface by hiding the details of how alias analysis @@ -122,6 +126,9 @@ TypeBasedAliasAnalysis::getAnalysisUsage(AnalysisUsage &AU) const { AliasAnalysis::AliasResult TypeBasedAliasAnalysis::alias(const Location &LocA, const Location &LocB) { + if (!EnableTBAA) + return AliasAnalysis::alias(LocA, LocB); + // Get the attached MDNodes. If either value lacks a tbaa MDNode, we must // be conservative. const MDNode *AM = LocA.TBAATag; @@ -168,6 +175,9 @@ TypeBasedAliasAnalysis::alias(const Location &LocA, } bool TypeBasedAliasAnalysis::pointsToConstantMemory(const Location &Loc) { + if (!EnableTBAA) + return AliasAnalysis::pointsToConstantMemory(Loc); + const MDNode *M = Loc.TBAATag; if (!M) return false; |