rename "elements" of metadata to "operands".  "Elements" are
things that occur in types.  "operands" are things that occur
in values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92322 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/DebugInfo.cpp b/lib/Analysis/DebugInfo.cpp
index 0dfffc8..aa1f78e 100644
--- a/lib/Analysis/DebugInfo.cpp
+++ b/lib/Analysis/DebugInfo.cpp
@@ -83,8 +83,8 @@
   if (DbgNode == 0)
     return StringRef();
 
-  if (Elt < DbgNode->getNumElements())
-    if (MDString *MDS = dyn_cast_or_null<MDString>(DbgNode->getElement(Elt)))
+  if (Elt < DbgNode->getNumOperands())
+    if (MDString *MDS = dyn_cast_or_null<MDString>(DbgNode->getOperand(Elt)))
       return MDS->getString();
 
   return StringRef();
@@ -94,8 +94,8 @@
   if (DbgNode == 0)
     return 0;
 
-  if (Elt < DbgNode->getNumElements())
-    if (ConstantInt *CI = dyn_cast<ConstantInt>(DbgNode->getElement(Elt)))
+  if (Elt < DbgNode->getNumOperands())
+    if (ConstantInt *CI = dyn_cast<ConstantInt>(DbgNode->getOperand(Elt)))
       return CI->getZExtValue();
 
   return 0;
@@ -105,8 +105,8 @@
   if (DbgNode == 0)
     return DIDescriptor();
 
-  if (Elt < DbgNode->getNumElements() && DbgNode->getElement(Elt))
-    return DIDescriptor(dyn_cast<MDNode>(DbgNode->getElement(Elt)));
+  if (Elt < DbgNode->getNumOperands() && DbgNode->getOperand(Elt))
+    return DIDescriptor(dyn_cast<MDNode>(DbgNode->getOperand(Elt)));
 
   return DIDescriptor();
 }
@@ -115,8 +115,8 @@
   if (DbgNode == 0)
     return 0;
 
-  if (Elt < DbgNode->getNumElements())
-      return dyn_cast_or_null<GlobalVariable>(DbgNode->getElement(Elt));
+  if (Elt < DbgNode->getNumOperands())
+      return dyn_cast_or_null<GlobalVariable>(DbgNode->getOperand(Elt));
   return 0;
 }
 
@@ -264,7 +264,7 @@
 
 unsigned DIArray::getNumElements() const {
   assert(DbgNode && "Invalid DIArray");
-  return DbgNode->getNumElements();
+  return DbgNode->getNumOperands();
 }
 
 /// replaceAllUsesWith - Replace all uses of debug info referenced by
@@ -886,18 +886,18 @@
   Value *Elts[] = {
     GetTagConstant(dwarf::DW_TAG_subprogram),
     llvm::Constant::getNullValue(Type::getInt32Ty(VMContext)),
-    DeclNode->getElement(2), // Context
-    DeclNode->getElement(3), // Name
-    DeclNode->getElement(4), // DisplayName
-    DeclNode->getElement(5), // LinkageName
-    DeclNode->getElement(6), // CompileUnit
-    DeclNode->getElement(7), // LineNo
-    DeclNode->getElement(8), // Type
-    DeclNode->getElement(9), // isLocalToUnit
+    DeclNode->getOperand(2), // Context
+    DeclNode->getOperand(3), // Name
+    DeclNode->getOperand(4), // DisplayName
+    DeclNode->getOperand(5), // LinkageName
+    DeclNode->getOperand(6), // CompileUnit
+    DeclNode->getOperand(7), // LineNo
+    DeclNode->getOperand(8), // Type
+    DeclNode->getOperand(9), // isLocalToUnit
     ConstantInt::get(Type::getInt1Ty(VMContext), true),
-    DeclNode->getElement(11), // Virtuality
-    DeclNode->getElement(12), // VIndex
-    DeclNode->getElement(13)  // Containting Type
+    DeclNode->getOperand(11), // Virtuality
+    DeclNode->getOperand(12), // VIndex
+    DeclNode->getOperand(13)  // Containting Type
   };
   return DISubprogram(MDNode::get(VMContext, &Elts[0], 14));
 }
@@ -930,7 +930,7 @@
 
   // Create a named metadata so that we do not lose this mdnode.
   NamedMDNode *NMD = M.getOrInsertNamedMetadata("llvm.dbg.gv");
-  NMD->addElement(Node);
+  NMD->addOperand(Node);
 
   return DIGlobalVariable(Node);
 }
@@ -1106,8 +1106,8 @@
   if (!NMD)
     return;
 
-  for (unsigned i = 0, e = NMD->getNumElements(); i != e; ++i) {
-    DIGlobalVariable DIG(cast<MDNode>(NMD->getElement(i)));
+  for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i) {
+    DIGlobalVariable DIG(cast<MDNode>(NMD->getOperand(i)));
     if (addGlobalVariable(DIG)) {
       addCompileUnit(DIG.getCompileUnit());
       processType(DIG.getType());
@@ -1289,8 +1289,8 @@
   if (!NMD)
     return 0;
 
-  for (unsigned i = 0, e = NMD->getNumElements(); i != e; ++i) {
-    DIGlobalVariable DIG(cast_or_null<MDNode>(NMD->getElement(i)));
+  for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i) {
+    DIGlobalVariable DIG(cast_or_null<MDNode>(NMD->getOperand(i)));
     if (DIG.isNull())
       continue;
     if (DIG.getGlobal() == V)
diff --git a/lib/Bitcode/Writer/BitcodeWriter.cpp b/lib/Bitcode/Writer/BitcodeWriter.cpp
index 8454e54..c78a30e 100644
--- a/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ b/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -475,10 +475,10 @@
                         const ValueEnumerator &VE,
                         BitstreamWriter &Stream,
                         SmallVector<uint64_t, 64> &Record) {
-  for (unsigned i = 0, e = N->getNumElements(); i != e; ++i) {
-    if (N->getElement(i)) {
-      Record.push_back(VE.getTypeID(N->getElement(i)->getType()));
-      Record.push_back(VE.getValueID(N->getElement(i)));
+  for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i) {
+    if (N->getOperand(i)) {
+      Record.push_back(VE.getTypeID(N->getOperand(i)->getType()));
+      Record.push_back(VE.getValueID(N->getOperand(i)));
     } else {
       Record.push_back(VE.getTypeID(Type::getVoidTy(N->getContext())));
       Record.push_back(0);
@@ -535,10 +535,10 @@
       Stream.EmitRecord(bitc::METADATA_NAME, Record, 0/*TODO*/);
       Record.clear();
 
-      // Write named metadata elements.
-      for (unsigned i = 0, e = NMD->getNumElements(); i != e; ++i) {
-        if (NMD->getElement(i))
-          Record.push_back(VE.getValueID(NMD->getElement(i)));
+      // Write named metadata operands.
+      for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i) {
+        if (NMD->getOperand(i))
+          Record.push_back(VE.getValueID(NMD->getOperand(i)));
         else
           Record.push_back(0);
       }
diff --git a/lib/Bitcode/Writer/ValueEnumerator.cpp b/lib/Bitcode/Writer/ValueEnumerator.cpp
index 994dcb3..d8128db 100644
--- a/lib/Bitcode/Writer/ValueEnumerator.cpp
+++ b/lib/Bitcode/Writer/ValueEnumerator.cpp
@@ -212,8 +212,8 @@
     MDValues.push_back(std::make_pair(MD, 1U));
     MDValueMap[MD] = MDValues.size();
     MDValueID = MDValues.size();
-    for (unsigned i = 0, e = N->getNumElements(); i != e; ++i) {    
-      if (Value *V = N->getElement(i))
+    for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i) {    
+      if (Value *V = N->getOperand(i))
         EnumerateValue(V);
       else
         EnumerateType(Type::getVoidTy(MD->getContext()));
@@ -222,8 +222,8 @@
   }
   
   if (const NamedMDNode *N = dyn_cast<NamedMDNode>(MD)) {
-    for (unsigned i = 0, e = N->getNumElements(); i != e; ++i)
-      EnumerateValue(N->getElement(i));
+    for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i)
+      EnumerateValue(N->getOperand(i));
     MDValues.push_back(std::make_pair(MD, 1U));
     MDValueMap[MD] = Values.size();
     return;
@@ -327,8 +327,8 @@
     }
 
     if (const MDNode *N = dyn_cast<MDNode>(V)) {
-      for (unsigned i = 0, e = N->getNumElements(); i != e; ++i)
-        if (Value *Elem = N->getElement(i))
+      for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i)
+        if (Value *Elem = N->getOperand(i))
           EnumerateOperandType(Elem);
     }
   } else if (isa<MDString>(V) || isa<MDNode>(V))
diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp
index 1f9dc41..104cbe9 100644
--- a/lib/Linker/LinkModules.cpp
+++ b/lib/Linker/LinkModules.cpp
@@ -538,8 +538,8 @@
       NamedMDNode::Create(SrcNMD, Dest);
     else {
       // Add Src elements into Dest node.
-      for (unsigned i = 0, e = SrcNMD->getNumElements(); i != e; ++i) 
-        DestNMD->addElement(SrcNMD->getElement(i));
+      for (unsigned i = 0, e = SrcNMD->getNumOperands(); i != e; ++i) 
+        DestNMD->addOperand(SrcNMD->getOperand(i));
     }
   }
 }
diff --git a/lib/Transforms/Utils/CloneFunction.cpp b/lib/Transforms/Utils/CloneFunction.cpp
index 7d7f1a4..032a9e3 100644
--- a/lib/Transforms/Utils/CloneFunction.cpp
+++ b/lib/Transforms/Utils/CloneFunction.cpp
@@ -360,9 +360,9 @@
     NewLoc = UpdateInlinedAtInfo(OrigLocation.getNode(), TheCallMD);
 
   Value *MDVs[] = {
-    InsnMD->getElement(0), // Line
-    InsnMD->getElement(1), // Col
-    InsnMD->getElement(2), // Scope
+    InsnMD->getOperand(0), // Line
+    InsnMD->getOperand(1), // Col
+    InsnMD->getOperand(2), // Scope
     NewLoc
   };
   return MDNode::get(InsnMD->getContext(), MDVs, 4);
diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp
index c0918c2..e44b182 100644
--- a/lib/VMCore/AsmWriter.cpp
+++ b/lib/VMCore/AsmWriter.cpp
@@ -648,8 +648,8 @@
          I = TheModule->named_metadata_begin(),
          E = TheModule->named_metadata_end(); I != E; ++I) {
     const NamedMDNode *NMD = I;
-    for (unsigned i = 0, e = NMD->getNumElements(); i != e; ++i) {
-      MDNode *MD = dyn_cast_or_null<MDNode>(NMD->getElement(i));
+    for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i) {
+      MDNode *MD = dyn_cast_or_null<MDNode>(NMD->getOperand(i));
       if (MD)
         CreateMetadataSlot(MD);
     }
@@ -722,8 +722,8 @@
 void SlotTracker::processNamedMDNode() {
   ST_DEBUG("begin processNamedMDNode!\n");
   mdnNext = 0;
-  for (unsigned i = 0, e = TheNamedMDNode->getNumElements(); i != e; ++i) {
-    MDNode *MD = dyn_cast_or_null<MDNode>(TheNamedMDNode->getElement(i));
+  for (unsigned i = 0, e = TheNamedMDNode->getNumOperands(); i != e; ++i) {
+    MDNode *MD = dyn_cast_or_null<MDNode>(TheNamedMDNode->getOperand(i));
     if (MD)
       CreateMetadataSlot(MD);
   }
@@ -819,8 +819,8 @@
   unsigned DestSlot = mdnNext++;
   mdnMap[N] = DestSlot;
 
-  for (unsigned i = 0, e = N->getNumElements(); i != e; ++i) {
-    const Value *TV = N->getElement(i);
+  for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i) {
+    const Value *TV = N->getOperand(i);
     if (TV)
       if (const MDNode *N2 = dyn_cast<MDNode>(TV))
         CreateMetadataSlot(N2);
@@ -872,9 +872,9 @@
 
 static void WriteMDNodeComment(const MDNode *Node,
 			       formatted_raw_ostream &Out) {
-  if (Node->getNumElements() < 1)
+  if (Node->getNumOperands() < 1)
     return;
-  ConstantInt *CI = dyn_cast_or_null<ConstantInt>(Node->getElement(0));
+  ConstantInt *CI = dyn_cast_or_null<ConstantInt>(Node->getOperand(0));
   if (!CI) return;
   unsigned Val = CI->getZExtValue();
   unsigned Tag = Val & ~LLVMDebugVersionMask;
@@ -908,8 +908,8 @@
     Out << '!' << i << " = metadata ";
     const MDNode *Node = Nodes[i];
     Out << "!{";
-    for (unsigned mi = 0, me = Node->getNumElements(); mi != me; ++mi) {
-      const Value *V = Node->getElement(mi);
+    for (unsigned mi = 0, me = Node->getNumOperands(); mi != me; ++mi) {
+      const Value *V = Node->getOperand(mi);
       if (!V)
         Out << "null";
       else if (const MDNode *N = dyn_cast<MDNode>(V)) {
@@ -919,7 +919,7 @@
       else {
         TypePrinter.print(V->getType(), Out);
         Out << ' ';
-        WriteAsOperandInternal(Out, Node->getElement(mi), 
+        WriteAsOperandInternal(Out, Node->getOperand(mi), 
                                &TypePrinter, &Machine);
       }
       if (mi + 1 != me)
@@ -1231,14 +1231,14 @@
     if (N->isFunctionLocal()) {
       // Print metadata inline, not via slot reference number.
       Out << "!{";
-      for (unsigned mi = 0, me = N->getNumElements(); mi != me; ++mi) {
-        const Value *Val = N->getElement(mi);
+      for (unsigned mi = 0, me = N->getNumOperands(); mi != me; ++mi) {
+        const Value *Val = N->getOperand(mi);
         if (!Val)
           Out << "null";
         else {
-          TypePrinter->print(N->getElement(0)->getType(), Out);
+          TypePrinter->print(N->getOperand(0)->getType(), Out);
           Out << ' ';
-          WriteAsOperandInternal(Out, N->getElement(0), TypePrinter, Machine);
+          WriteAsOperandInternal(Out, N->getOperand(0), TypePrinter, Machine);
         }
         if (mi + 1 != me)
           Out << ", ";
@@ -1478,9 +1478,9 @@
          E = M->named_metadata_end(); I != E; ++I) {
     const NamedMDNode *NMD = I;
     Out << "!" << NMD->getName() << " = !{";
-    for (unsigned i = 0, e = NMD->getNumElements(); i != e; ++i) {
+    for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i) {
       if (i) Out << ", ";
-      MDNode *MD = dyn_cast_or_null<MDNode>(NMD->getElement(i));
+      MDNode *MD = dyn_cast_or_null<MDNode>(NMD->getOperand(i));
       Out << '!' << Machine.getMetadataSlot(MD);
     }
     Out << "}\n";
@@ -2138,9 +2138,9 @@
     TypePrinting TypePrinter;
     SlotTable.initialize();
     OS << "!" << N->getName() << " = !{";
-    for (unsigned i = 0, e = N->getNumElements(); i != e; ++i) {
+    for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i) {
       if (i) OS << ", ";
-      MDNode *MD = dyn_cast_or_null<MDNode>(N->getElement(i));
+      MDNode *MD = dyn_cast_or_null<MDNode>(N->getOperand(i));
       if (MD)
         OS << '!' << SlotTable.getMetadataSlot(MD);
       else
diff --git a/lib/VMCore/IntrinsicInst.cpp b/lib/VMCore/IntrinsicInst.cpp
index 5f33d0e..b508f6b 100644
--- a/lib/VMCore/IntrinsicInst.cpp
+++ b/lib/VMCore/IntrinsicInst.cpp
@@ -61,11 +61,11 @@
 Value *DbgStopPointInst::getFileName() const {
   // Once the operand indices are verified, update this assert
   assert(LLVMDebugVersion == (7 << 16) && "Verify operand indices");
-  return getContext()->getElement(3);
+  return getContext()->getOperand(3);
 }
 
 Value *DbgStopPointInst::getDirectory() const {
   // Once the operand indices are verified, update this assert
   assert(LLVMDebugVersion == (7 << 16) && "Verify operand indices");
-  return getContext()->getElement(4);
+  return getContext()->getOperand(4);
 }
diff --git a/lib/VMCore/Metadata.cpp b/lib/VMCore/Metadata.cpp
index 413a1b6..8e9aab9 100644
--- a/lib/VMCore/Metadata.cpp
+++ b/lib/VMCore/Metadata.cpp
@@ -48,16 +48,16 @@
 }
 
 //===----------------------------------------------------------------------===//
-// MDNodeElement implementation.
+// MDNodeOperand implementation.
 //
 
-// Use CallbackVH to hold MDNode elements.
+// Use CallbackVH to hold MDNode operands.
 namespace llvm {
-class MDNodeElement : public CallbackVH {
+class MDNodeOperand : public CallbackVH {
   MDNode *Parent;
 public:
-  MDNodeElement(Value *V, MDNode *P) : CallbackVH(V), Parent(P) {}
-  ~MDNodeElement() {}
+  MDNodeOperand(Value *V, MDNode *P) : CallbackVH(V), Parent(P) {}
+  ~MDNodeOperand() {}
   
   void set(Value *V) {
     setValPtr(V);
@@ -69,12 +69,12 @@
 } // end namespace llvm.
 
 
-void MDNodeElement::deleted() {
-  Parent->replaceElement(this, 0);
+void MDNodeOperand::deleted() {
+  Parent->replaceOperand(this, 0);
 }
 
-void MDNodeElement::allUsesReplacedWith(Value *NV) {
-  Parent->replaceElement(this, NV);
+void MDNodeOperand::allUsesReplacedWith(Value *NV) {
+  Parent->replaceOperand(this, NV);
 }
 
 
@@ -83,11 +83,11 @@
 // MDNode implementation.
 //
 
-/// getOperandPtr - Helper function to get the MDNodeElement's coallocated on
+/// getOperandPtr - Helper function to get the MDNodeOperand's coallocated on
 /// the end of the MDNode.
-static MDNodeElement *getOperandPtr(MDNode *N, unsigned Op) {
-  assert(Op < N->getNumElements() && "Invalid operand number");
-  return reinterpret_cast<MDNodeElement*>(N+1)+Op;
+static MDNodeOperand *getOperandPtr(MDNode *N, unsigned Op) {
+  assert(Op < N->getNumOperands() && "Invalid operand number");
+  return reinterpret_cast<MDNodeOperand*>(N+1)+Op;
 }
 
 MDNode::MDNode(LLVMContext &C, Value *const *Vals, unsigned NumVals,
@@ -99,9 +99,9 @@
     setValueSubclassData(getSubclassDataFromValue() | FunctionLocalBit);
 
   // Initialize the operand list, which is co-allocated on the end of the node.
-  for (MDNodeElement *Op = getOperandPtr(this, 0), *E = Op+NumOperands;
+  for (MDNodeOperand *Op = getOperandPtr(this, 0), *E = Op+NumOperands;
        Op != E; ++Op, ++Vals)
-    new (Op) MDNodeElement(*Vals, this);
+    new (Op) MDNodeOperand(*Vals, this);
 }
 
 
@@ -115,9 +115,9 @@
   }
   
   // Destroy the operands.
-  for (MDNodeElement *Op = getOperandPtr(this, 0), *E = Op+NumOperands;
+  for (MDNodeOperand *Op = getOperandPtr(this, 0), *E = Op+NumOperands;
        Op != E; ++Op)
-    Op->~MDNodeElement();
+    Op->~MDNodeOperand();
 }
 
 // destroy - Delete this node.  Only when there are no uses.
@@ -139,8 +139,8 @@
   void *InsertPoint;
   MDNode *N = pImpl->MDNodeSet.FindNodeOrInsertPos(ID, InsertPoint);
   if (!N) {
-    // Coallocate space for the node and elements together, then placement new.
-    void *Ptr = malloc(sizeof(MDNode)+NumVals*sizeof(MDNodeElement));
+    // Coallocate space for the node and Operands together, then placement new.
+    void *Ptr = malloc(sizeof(MDNode)+NumVals*sizeof(MDNodeOperand));
     N = new (Ptr) MDNode(Context, Vals, NumVals, isFunctionLocal);
     
     // InsertPoint will have been set by the FindNodeOrInsertPos call.
@@ -149,19 +149,19 @@
   return N;
 }
 
-/// getElement - Return specified element.
-Value *MDNode::getElement(unsigned i) const {
+/// getOperand - Return specified operand.
+Value *MDNode::getOperand(unsigned i) const {
   return *getOperandPtr(const_cast<MDNode*>(this), i);
 }
 
 void MDNode::Profile(FoldingSetNodeID &ID) const {
-  for (unsigned i = 0, e = getNumElements(); i != e; ++i)
-    ID.AddPointer(getElement(i));
+  for (unsigned i = 0, e = getNumOperands(); i != e; ++i)
+    ID.AddPointer(getOperand(i));
 }
 
 
-// Replace value from this node's element list.
-void MDNode::replaceElement(MDNodeElement *Op, Value *To) {
+// Replace value from this node's operand list.
+void MDNode::replaceOperand(MDNodeOperand *Op, Value *To) {
   Value *From = *Op;
   
   if (From == To)
@@ -233,10 +233,10 @@
 NamedMDNode *NamedMDNode::Create(const NamedMDNode *NMD, Module *M) {
   assert(NMD && "Invalid source NamedMDNode!");
   SmallVector<MetadataBase *, 4> Elems;
-  Elems.reserve(NMD->getNumElements());
+  Elems.reserve(NMD->getNumOperands());
   
-  for (unsigned i = 0, e = NMD->getNumElements(); i != e; ++i)
-    Elems.push_back(NMD->getElement(i));
+  for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i)
+    Elems.push_back(NMD->getOperand(i));
   return new NamedMDNode(NMD->getContext(), NMD->getName().data(),
                          Elems.data(), Elems.size(), M);
 }
@@ -246,19 +246,19 @@
   delete &getNMDOps(Operands);
 }
 
-/// getNumElements - Return number of NamedMDNode elements.
-unsigned NamedMDNode::getNumElements() const {
+/// getNumOperands - Return number of NamedMDNode operands.
+unsigned NamedMDNode::getNumOperands() const {
   return (unsigned)getNMDOps(Operands).size();
 }
 
-/// getElement - Return specified element.
-MetadataBase *NamedMDNode::getElement(unsigned i) const {
-  assert(i < getNumElements() && "Invalid element number!");
+/// getOperand - Return specified operand.
+MetadataBase *NamedMDNode::getOperand(unsigned i) const {
+  assert(i < getNumOperands() && "Invalid Operand number!");
   return getNMDOps(Operands)[i];
 }
 
-/// addElement - Add metadata element.
-void NamedMDNode::addElement(MetadataBase *M) {
+/// addOperand - Add metadata Operand.
+void NamedMDNode::addOperand(MetadataBase *M) {
   getNMDOps(Operands).push_back(TrackingVH<MetadataBase>(M));
 }
 
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp
index b7e8771..30528bf 100644
--- a/lib/VMCore/Verifier.cpp
+++ b/lib/VMCore/Verifier.cpp
@@ -1538,8 +1538,8 @@
   if (!Visited.insert(N))
     return;
   
-  for (unsigned i = 0, e = N->getNumElements(); i != e; ++i) {
-    Value *V = N->getElement(i);
+  for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i) {
+    Value *V = N->getOperand(i);
     if (!V) continue;
     
     Function *ActualF = 0;