Move getUniqueExitBlocks from LoopBase to Loop, since they depend on
[oota-llvm.git] / include / llvm / Analysis / ProfileInfo.h
index 6025e9f9feb0804832e4a4274dfcc152b86116dc..94a86668506553023c2968f664822d4b83fe635a 100644 (file)
@@ -29,6 +29,7 @@
 namespace llvm {
   class Function;
   class Pass;
+  class raw_ostream;
 
   /// ProfileInfo Class - This class holds and maintains profiling
   /// information for some unit of code.
@@ -62,8 +63,13 @@ namespace llvm {
 
     // getFunction() - Returns the Function for an Edge, checking for validity.
     static const Function* getFunction(Edge e) {
-      assert(e.second && "Invalid ProfileInfo::Edge");
-      return e.second->getParent();
+      if (e.first) {
+        return e.first->getParent();
+      } else if (e.second) {
+        return e.second->getParent();
+      }
+      assert(0 && "Invalid ProfileInfo::Edge");
+      return (const Function*)0;
     }
 
     // getEdge() - Creates an Edge from two BasicBlocks.
@@ -103,6 +109,9 @@ namespace llvm {
   /// profiling information for the module from the specified filename, making
   /// it available to the optimizers.
   Pass *createProfileLoaderPass(const std::string &Filename);
+
+  raw_ostream& operator<<(raw_ostream &O, ProfileInfo::Edge E);
+
 } // End llvm namespace
 
 #endif