Allocation insts always have one operand
[oota-llvm.git] / lib / VMCore / Pass.cpp
index d0433c740b87141fc44c402be3722209bf168e30..b673484f214400e0c14d6dc6b86e52f27b16258f 100644 (file)
@@ -16,6 +16,9 @@
 #include <sys/unistd.h>
 #include <set>
 
+// IncludeFile - Stub function used to help linking out.
+IncludeFile::IncludeFile(void*) {}
+
 //===----------------------------------------------------------------------===//
 //   AnalysisID Class Implementation
 //
@@ -252,8 +255,10 @@ void PMDebug::PrintAnalysisSetInfo(unsigned Depth, const char *Msg,
                                    Pass *P, const std::vector<AnalysisID> &Set){
   if (PassDebugging >= Details && !Set.empty()) {
     std::cerr << (void*)P << std::string(Depth*2+3, ' ') << Msg << " Analyses:";
-    for (unsigned i = 0; i != Set.size(); ++i)
-      std::cerr << "  " << Set[i]->getPassName();
+    for (unsigned i = 0; i != Set.size(); ++i) {
+      if (i) std::cerr << ",";
+      std::cerr << " " << Set[i]->getPassName();
+    }
     std::cerr << "\n";
   }
 }
@@ -452,6 +457,11 @@ RegisterAGBase::RegisterAGBase(const std::type_info &Interface,
     assert(ImplementationInfo &&
            "Must register pass before adding to AnalysisGroup!");
 
+    // Make sure we keep track of the fact that the implementation implements
+    // the interface.
+    PassInfo *IIPI = const_cast<PassInfo*>(ImplementationInfo);
+    IIPI->addInterfaceImplemented(InterfaceInfo);
+
     // Lazily allocate to avoid nasty initialization order dependencies
     if (AnalysisGroupInfoMap == 0)
       AnalysisGroupInfoMap = new std::map<const PassInfo *,AnalysisGroupInfo>();
@@ -505,34 +515,6 @@ RegisterAGBase::~RegisterAGBase() {
 }
 
 
-// findAnalysisGroupMember - Return an iterator pointing to one of the elements
-// of Map if there is a pass in Map that is a member of the analysis group for
-// the specified AnalysisGroupID.
-//
-static std::map<const PassInfo*, Pass*>::const_iterator
-findAnalysisGroupMember(const PassInfo *AnalysisGroupID,
-                        const std::map<const PassInfo*, Pass*> &Map) {
-  assert(AnalysisGroupID->getPassType() == PassInfo::AnalysisGroup &&
-         "AnalysisGroupID is not an analysis group!");
-  assert(AnalysisGroupInfoMap && AnalysisGroupInfoMap->count(AnalysisGroupID) &&
-         "Analysis Group does not have any registered members!");
-
-  // Get the set of all known implementations of this analysis group...
-  std::set<const PassInfo *> &Impls = 
-    (*AnalysisGroupInfoMap)[AnalysisGroupID].Implementations;
-
-  // Scan over available passes, checking to see if any is a valid analysis
-  for (std::map<const PassInfo*, Pass*>::const_iterator I = Map.begin(),
-         E = Map.end(); I != E; ++I)
-    if (Impls.count(I->first))  // This is a valid analysis, return it.
-      return I;
-
-  return Map.end();  // Nothing of use found.
-}
-
-
-
-
 //===----------------------------------------------------------------------===//
 // PassRegistrationListener implementation
 //