[llvm-commits] CVS: llvm/include/llvm/Analysis/AliasSetTracker.h

Chris Lattner lattner at cs.uiuc.edu
Sat Dec 13 22:52:01 PST 2003


Changes in directory llvm/include/llvm/Analysis:

AliasSetTracker.h updated: 1.9 -> 1.10

---
Log message:

Add capability to represent volatile AliasSet's


---
Diffs of the changes:  (+13 -3)

Index: llvm/include/llvm/Analysis/AliasSetTracker.h
diff -u llvm/include/llvm/Analysis/AliasSetTracker.h:1.9 llvm/include/llvm/Analysis/AliasSetTracker.h:1.10
--- llvm/include/llvm/Analysis/AliasSetTracker.h:1.9	Tue Nov 11 16:41:30 2003
+++ llvm/include/llvm/Analysis/AliasSetTracker.h	Sat Dec 13 22:51:34 2003
@@ -82,7 +82,7 @@
 
   // RefCount - Number of nodes pointing to this AliasSet plus the number of
   // AliasSets forwarding to it.
-  unsigned RefCount : 29;
+  unsigned RefCount : 28;
 
   /// AccessType - Keep track of whether this alias set merely refers to the
   /// locations of memory, whether it modifies the memory, or whether it does
@@ -103,6 +103,9 @@
   };
   unsigned AliasTy : 1;
 
+  // Volatile - True if this alias set contains volatile loads or stores.
+  bool Volatile : 1;
+
   friend class ilist_traits<AliasSet>;
   AliasSet *getPrev() const { return Prev; }
   AliasSet *getNext() const { return Next; }
@@ -116,6 +119,11 @@
   bool isMustAlias() const { return AliasTy == MustAlias; }
   bool isMayAlias()  const { return AliasTy == MayAlias; }
 
+  // isVolatile - Return true if this alias set contains volatile loads or
+  // stores.
+  bool isVolatile() const { return Volatile; }
+
+
   /// isForwardingAliasSet - Return true if this alias set should be ignored as
   /// part of the AliasSetTracker object.
   bool isForwardingAliasSet() const { return Forward; }
@@ -168,7 +176,7 @@
 private:
   // Can only be created by AliasSetTracker
   AliasSet() : PtrListHead(0), PtrListTail(0), Forward(0), RefCount(0),
-               AccessTy(NoModRef), AliasTy(MustAlias) {
+               AccessTy(NoModRef), AliasTy(MustAlias), Volatile(false) {
   }
   HashNodePair *getSomePointer() const {
     return PtrListHead ? PtrListHead : 0;
@@ -194,6 +202,7 @@
 
   void addPointer(AliasSetTracker &AST, HashNodePair &Entry, unsigned Size);
   void addCallSite(CallSite CS);
+  void setVolatile() { Volatile = true; }
 
   /// aliasesPointer - Return true if the specified pointer "may" (or must)
   /// alias one of the members in the set.
@@ -272,9 +281,10 @@
                                             AliasSet::PointerRec())).first;
   }
 
-  void addPointer(Value *P, unsigned Size, AliasSet::AccessType E) {
+  AliasSet &addPointer(Value *P, unsigned Size, AliasSet::AccessType E) {
     AliasSet &AS = getAliasSetForPointer(P, Size);
     AS.AccessTy |= E;
+    return AS;
   }
   AliasSet *findAliasSetForPointer(const Value *Ptr, unsigned Size);
 





More information about the llvm-commits mailing list