From fdc902e6f281443611f1ab320ed340f897793b46 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 7 Feb 2003 20:39:48 +0000 Subject: [PATCH] Don't bother counting alias results, allow the AliasAnalysisCounter to do that. llvm-svn: 5505 --- llvm/lib/Analysis/AliasAnalysis.cpp | 30 ++++--------------- .../DataStructure/DataStructureAA.cpp | 15 ++-------- 2 files changed, 8 insertions(+), 37 deletions(-) diff --git a/llvm/lib/Analysis/AliasAnalysis.cpp b/llvm/lib/Analysis/AliasAnalysis.cpp index 789843c45b85..2dbff6aa5c77 100644 --- a/llvm/lib/Analysis/AliasAnalysis.cpp +++ b/llvm/lib/Analysis/AliasAnalysis.cpp @@ -25,14 +25,10 @@ #include "llvm/Constants.h" #include "llvm/GlobalValue.h" #include "llvm/DerivedTypes.h" -#include "Support/Statistic.h" // Register the AliasAnalysis interface, providing a nice name to refer to. namespace { RegisterAnalysisGroup Z("Alias Analysis"); - Statistic<> NumNoAlias ("basic-aa", "Number of 'no alias' replies"); - Statistic<> NumMayAlias ("basic-aa", "Number of 'may alias' replies"); - Statistic<> NumMustAlias("basic-aa", "Number of 'must alias' replies"); } // CanModify - Define a little visitor class that is used to check to see if @@ -145,20 +141,6 @@ static const Value *getUnderlyingObject(const Value *V) { return 0; } -static inline AliasAnalysis::Result MustAlias() { - ++NumMustAlias; - return AliasAnalysis::MustAlias; -} - -static inline AliasAnalysis::Result MayAlias() { - ++NumMayAlias; - return AliasAnalysis::MayAlias; -} - -static inline AliasAnalysis::Result NoAlias() { - ++NumNoAlias; - return AliasAnalysis::NoAlias; -} // alias - Provide a bunch of ad-hoc rules to disambiguate in common cases, such // as array references. Note that this function is heavily tail recursive. @@ -173,11 +155,11 @@ AliasAnalysis::Result BasicAliasAnalysis::alias(const Value *V1, V2 = CPR->getValue(); // Are we checking for alias of the same value? - if (V1 == V2) return ::MustAlias(); + if (V1 == V2) return MustAlias; if ((!isa(V1->getType()) || !isa(V2->getType())) && V1->getType() != Type::LongTy && V2->getType() != Type::LongTy) - return ::NoAlias(); // Scalars cannot alias each other + return NoAlias; // Scalars cannot alias each other // Strip off cast instructions... if (const Instruction *I = dyn_cast(V1)) @@ -216,7 +198,7 @@ AliasAnalysis::Result BasicAliasAnalysis::alias(const Value *V1, // if (AllConstant && alias(GEP1->getOperand(0), GEP2->getOperand(1)) != MayAlias) - return ::NoAlias(); + return NoAlias; } // Figure out what objects these things are pointing to if we can... @@ -226,16 +208,16 @@ AliasAnalysis::Result BasicAliasAnalysis::alias(const Value *V1, // Pointing at a discernable object? if (O1 && O2) { // If they are two different objects, we know that we have no alias... - if (O1 != O2) return ::NoAlias(); + if (O1 != O2) return NoAlias; // If they are the same object, they we can look at the indexes. If they // index off of the object is the same for both pointers, they must alias. // If they are provably different, they must not alias. Otherwise, we can't // tell anything. } else if (O1 && isa(V2)) { - return ::NoAlias(); // Unique values don't alias null + return NoAlias; // Unique values don't alias null } else if (O2 && isa(V1)) { - return ::NoAlias(); // Unique values don't alias null + return NoAlias; // Unique values don't alias null } return MayAlias; diff --git a/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp b/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp index 786ed168f0c6..1778574f46ed 100644 --- a/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp +++ b/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp @@ -9,12 +9,6 @@ #include "llvm/Analysis/DSGraph.h" #include "llvm/Analysis/AliasAnalysis.h" #include "llvm/Module.h" -#include "Support/Statistic.h" - -namespace { - Statistic<> NumNoAlias ("ds-aa", "Number of 'no alias' replies"); - Statistic<> NumMayAlias ("ds-aa", "Number of 'may alias' replies"); -}; namespace { class DSAA : public Pass, public AliasAnalysis { @@ -104,18 +98,14 @@ AliasAnalysis::Result DSAA::alias(const Value *V1, const Value *V2) { if (I->second.getNode() != J->second.getNode()) { // Return noalias if one of the nodes is complete... if ((~I->second.getNode()->NodeType | ~J->second.getNode()->NodeType) - & DSNode::Incomplete) { - ++NumNoAlias; + & DSNode::Incomplete) return NoAlias; - } // both are incomplete, they may alias... } else { // Both point to the same node, see if they point to different // offsets... FIXME: This needs to know the size of the alias query - if (I->second.getOffset() != J->second.getOffset()) { - ++NumNoAlias; + if (I->second.getOffset() != J->second.getOffset()) return NoAlias; - } } } } @@ -123,6 +113,5 @@ AliasAnalysis::Result DSAA::alias(const Value *V1, const Value *V2) { // FIXME: we could improve on this by checking the globals graph for aliased // global queries... - ++NumMayAlias; return getAnalysis().alias(V1, V2); }