Add loop info verification mechanism.
[oota-llvm.git] / lib / Analysis / AliasSetTracker.cpp
index 9ab2b8ad2623542636f990cbe1ab5fc07c66afa4..0397af7e979fce11be064f15f8cb82d6bc21f05a 100644 (file)
@@ -18,6 +18,7 @@
 #include "llvm/Type.h"
 #include "llvm/Target/TargetData.h"
 #include "llvm/Assembly/Writer.h"
+#include "llvm/Support/Compiler.h"
 #include "llvm/Support/InstIterator.h"
 #include "llvm/Support/Streams.h"
 using namespace llvm;
@@ -350,9 +351,11 @@ void AliasSetTracker::add(const AliasSetTracker &AST) {
       // Loop over all of the pointers in this alias set...
       AliasSet::iterator I = AS.begin(), E = AS.end();
       bool X;
-      for (; I != E; ++I)
-        addPointer(I.getPointer(), I.getSize(),
-                   (AliasSet::AccessType)AS.AccessTy, X);
+      for (; I != E; ++I) {
+        AliasSet &NewAS = addPointer(I.getPointer(), I.getSize(),
+                                     (AliasSet::AccessType)AS.AccessTy, X);
+        if (AS.isVolatile()) NewAS.setVolatile();
+      }
     }
 }
 
@@ -551,9 +554,12 @@ void AliasSetTracker::dump() const { print(cerr); }
 //===----------------------------------------------------------------------===//
 
 namespace {
-  class AliasSetPrinter : public FunctionPass {
+  class VISIBILITY_HIDDEN AliasSetPrinter : public FunctionPass {
     AliasSetTracker *Tracker;
   public:
+    static char ID; // Pass identification, replacement for typeid
+    AliasSetPrinter() : FunctionPass((intptr_t)&ID) {}
+
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
       AU.setPreservesAll();
       AU.addRequired<AliasAnalysis>();
@@ -569,5 +575,6 @@ namespace {
       return false;
     }
   };
+  char AliasSetPrinter::ID = 0;
   RegisterPass<AliasSetPrinter> X("print-alias-sets", "Alias Set Printer");
 }