summaryrefslogtreecommitdiff
path: root/lib/Analysis/TypeBasedAliasAnalysis.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-10-18 18:17:47 +0000
committerDan Gohman <gohman@apple.com>2010-10-18 18:17:47 +0000
commit01b58f637c23e203dd95a4709bdd40cdfc31ffa9 (patch)
tree4ab9004c8cda6b4fc1c8e0437b624a0ce47d82e6 /lib/Analysis/TypeBasedAliasAnalysis.cpp
parentacf50f5136c6f1daca2e78db756514a88470516b (diff)
downloadllvm-01b58f637c23e203dd95a4709bdd40cdfc31ffa9.tar.gz
llvm-01b58f637c23e203dd95a4709bdd40cdfc31ffa9.tar.bz2
llvm-01b58f637c23e203dd95a4709bdd40cdfc31ffa9.tar.xz
Make TypeBasedAliasAnalysis default to doing nothing, with a command-line
option to enable it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116722 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/TypeBasedAliasAnalysis.cpp')
-rw-r--r--lib/Analysis/TypeBasedAliasAnalysis.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Analysis/TypeBasedAliasAnalysis.cpp b/lib/Analysis/TypeBasedAliasAnalysis.cpp
index 8d368470b4..203084414c 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;