diff --git a/lib/Analysis/DataStructure/CompleteBottomUp.cpp b/lib/Analysis/DataStructure/CompleteBottomUp.cpp
index 834ae97..9eb5938 100644
--- a/lib/Analysis/DataStructure/CompleteBottomUp.cpp
+++ b/lib/Analysis/DataStructure/CompleteBottomUp.cpp
@@ -120,7 +120,7 @@
     Instruction *Call = CI->getCallSite().getInstruction();
 
     // Loop over all of the actually called functions...
-    ActualCalleesTy::iterator I = callee_begin(Call), E = callee_end(Call);
+    callee_iterator I = callee_begin(Call), E = callee_end(Call);
     for (; I != E && I->first == Call; ++I) {
       assert(I->first == Call && "Bad callee construction!");
       if (!I->second->isExternal()) {
@@ -197,7 +197,7 @@
     // Inline direct calls as well as indirect calls because the direct
     // callee may have indirect callees and so may have changed.
     // 
-    ActualCalleesTy::iterator I = callee_begin(TheCall),E = callee_end(TheCall);
+    callee_iterator I = callee_begin(TheCall),E = callee_end(TheCall);
     unsigned TNum = 0, Num = 0;
     DEBUG(Num = std::distance(I, E));
     for (; I != E; ++I, ++TNum) {
diff --git a/lib/Analysis/DataStructure/EquivClassGraphs.cpp b/lib/Analysis/DataStructure/EquivClassGraphs.cpp
index d3ffc52..b46564d 100644
--- a/lib/Analysis/DataStructure/EquivClassGraphs.cpp
+++ b/lib/Analysis/DataStructure/EquivClassGraphs.cpp
@@ -339,8 +339,8 @@
     Instruction *Call = CI->getCallSite().getInstruction();
 
     // Loop over all of the actually called functions...
-    ActualCalleesTy::const_iterator I = callee_begin(Call),E = callee_end(Call);
-    for (; I != E; ++I)
+    for (callee_iterator I = callee_begin(Call), E = callee_end(Call);
+         I != E; ++I)
       if (!I->second->isExternal()) {
         // Process the callee as necessary.
         unsigned M = processSCC(getOrCreateGraph(*I->second),
@@ -414,8 +414,7 @@
     // graph so we only need to do this once.
     // 
     DSGraph* CalleeGraph = NULL;
-    ActualCalleesTy::const_iterator I = callee_begin(TheCall);
-    ActualCalleesTy::const_iterator E = callee_end(TheCall);
+    callee_iterator I = callee_begin(TheCall), E = callee_end(TheCall);
     unsigned TNum, Num;
 
     // Loop over all potential callees to find the first non-external callee.
diff --git a/lib/Analysis/DataStructure/TopDownClosure.cpp b/lib/Analysis/DataStructure/TopDownClosure.cpp
index a169cef..6d01fda 100644
--- a/lib/Analysis/DataStructure/TopDownClosure.cpp
+++ b/lib/Analysis/DataStructure/TopDownClosure.cpp
@@ -174,9 +174,8 @@
   // Recursively traverse all of the callee graphs.
   for (DSGraph::fc_iterator CI = G.fc_begin(), E = G.fc_end(); CI != E; ++CI) {
     Instruction *CallI = CI->getCallSite().getInstruction();
-    BUDataStructures::ActualCalleesTy::const_iterator I = 
+    BUDataStructures::callee_iterator I = 
       BUInfo->callee_begin(CallI), E = BUInfo->callee_end(CallI);
-
     for (; I != E; ++I)
       ComputePostOrder(*I->second, Visited, PostOrder);
   }
@@ -326,7 +325,7 @@
 
     Instruction *CallI = CI->getCallSite().getInstruction();
     // For each function in the invoked function list at this call site...
-    BUDataStructures::ActualCalleesTy::const_iterator IPI =
+    BUDataStructures::callee_iterator IPI =
       BUInfo->callee_begin(CallI), IPE = BUInfo->callee_end(CallI);
 
     // Skip over all calls to this graph (SCC calls).
