Make TypeBasedAliasAnalysis default to doing nothing, with a command-line
authorDan Gohman <gohman@apple.com>
Mon, 18 Oct 2010 18:17:47 +0000 (18:17 +0000)
committerDan Gohman <gohman@apple.com>
Mon, 18 Oct 2010 18:17:47 +0000 (18:17 +0000)
option to enable it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116722 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/TypeBasedAliasAnalysis.cpp
test/Analysis/TypeBasedAliasAnalysis/aliastest.ll

index 8d368470b4e4e365971219cbe15b076dc944d585..203084414c031e7436a2a30594242947b4ac2a5d 100644 (file)
 #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;
 
index 21f28e075f49fae721baf9e1e694164a78d0e06c..fdaa21671ef4bd9c18a0f8f81aad243e1be810ca 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: opt < %s -basicaa -tbaa -gvn -S | FileCheck %s
+; RUN: opt < %s -enable-tbaa -basicaa -tbaa -gvn -S | FileCheck %s
 
 ; CHECK: @test0_yes
 ; CHECK: add i8 %x, %x