X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FAnalysis%2FAliasSetTracker.h;h=d9e45ce9a1c46682360ba6a3f2b580681099c7dd;hb=43d1fd449f1a0ac9d9dafa0b9569bb6b2e976198;hp=c4273ac37def77fdec0d8b52a50992e11d5c1e86;hpb=b5ebf15b2b2ce8989caf1a1114b05d80b0f9bd48;p=oota-llvm.git diff --git a/include/llvm/Analysis/AliasSetTracker.h b/include/llvm/Analysis/AliasSetTracker.h index c4273ac37de..d9e45ce9a1c 100644 --- a/include/llvm/Analysis/AliasSetTracker.h +++ b/include/llvm/Analysis/AliasSetTracker.h @@ -2,8 +2,8 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -19,9 +19,9 @@ #include "llvm/Support/CallSite.h" #include "llvm/Support/Streams.h" -#include "llvm/ADT/iterator" -#include "llvm/ADT/hash_map" -#include "llvm/ADT/ilist" +#include "llvm/ADT/iterator.h" +#include "llvm/ADT/hash_map.h" +#include "llvm/ADT/ilist.h" namespace llvm { @@ -29,6 +29,7 @@ class AliasAnalysis; class LoadInst; class StoreInst; class FreeInst; +class VAArgInst; class AliasSetTracker; class AliasSet; @@ -156,17 +157,15 @@ public: iterator end() const { return iterator(); } bool empty() const { return PtrList == 0; } - void print(llvm_ostream &OS) const { - if (OS.stream()) print(*OS.stream()); - } void print(std::ostream &OS) const; + void print(std::ostream *OS) const { if (OS) print(*OS); } void dump() const; /// Define an iterator for alias sets... this is just a forward iterator. class iterator : public forward_iterator { HashNodePair *CurNode; public: - iterator(HashNodePair *CN = 0) : CurNode(CN) {} + explicit iterator(HashNodePair *CN = 0) : CurNode(CN) {} bool operator==(const iterator& x) const { return CurNode == x.CurNode; @@ -233,7 +232,7 @@ private: bool KnownMustAlias = false); void addCallSite(CallSite CS, AliasAnalysis &AA); void removeCallSite(CallSite CS) { - for (unsigned i = 0, e = CallSites.size(); i != e; ++i) + for (size_t i = 0, e = CallSites.size(); i != e; ++i) if (CallSites[i].getInstruction() == CS.getInstruction()) { CallSites[i] = CallSites.back(); CallSites.pop_back(); @@ -248,10 +247,6 @@ private: bool aliasesCallSite(CallSite CS, AliasAnalysis &AA) const; }; -inline llvm_ostream& operator<<(llvm_ostream &OS, const AliasSet &AS) { - AS.print(OS); - return OS; -} inline std::ostream& operator<<(std::ostream &OS, const AliasSet &AS) { AS.print(OS); return OS; @@ -268,7 +263,8 @@ public: /// AliasSetTracker ctor - Create an empty collection of AliasSets, and use /// the specified alias analysis object to disambiguate load and store /// addresses. - AliasSetTracker(AliasAnalysis &aa) : AA(aa) {} + explicit AliasSetTracker(AliasAnalysis &aa) : AA(aa) {} + ~AliasSetTracker() { clear(); } /// add methods - These methods are used to add different types of /// instructions to the alias sets. Adding a new instruction can result in @@ -286,6 +282,7 @@ public: bool add(LoadInst *LI); bool add(StoreInst *SI); bool add(FreeInst *FI); + bool add(VAArgInst *VAAI); bool add(CallSite CS); // Call/Invoke instructions bool add(CallInst *CI) { return add(CallSite(CI)); } bool add(InvokeInst *II) { return add(CallSite(II)); } @@ -300,6 +297,7 @@ public: bool remove(LoadInst *LI); bool remove(StoreInst *SI); bool remove(FreeInst *FI); + bool remove(VAArgInst *VAAI); bool remove(CallSite CS); bool remove(CallInst *CI) { return remove(CallSite(CI)); } bool remove(InvokeInst *II) { return remove(CallSite(II)); } @@ -361,10 +359,8 @@ public: iterator begin() { return AliasSets.begin(); } iterator end() { return AliasSets.end(); } - void print(llvm_ostream &OS) const { - if (OS.stream()) print(*OS.stream()); - } void print(std::ostream &OS) const; + void print(std::ostream *OS) const { if (OS) print(*OS); } void dump() const; private: @@ -390,10 +386,6 @@ private: AliasSet *findAliasSetForCallSite(CallSite CS); }; -inline llvm_ostream& operator<<(llvm_ostream &OS, const AliasSetTracker &AST) { - AST.print(OS); - return OS; -} inline std::ostream& operator<<(std::ostream &OS, const AliasSetTracker &AST) { AST.print(OS); return OS;