* Eliminate ArgDSNode's completely, now rely on scalar map
* Fold call nodes that are indistinguishable for each other.  This is a big
  win for external functions like sqrt, which would multiply dramatically
  before.
* Global nodes with no edges to or from them are now eliminated from the graph.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2257 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/DataStructure/FunctionRepBuilder.cpp b/lib/Analysis/DataStructure/FunctionRepBuilder.cpp
index eda16bc..2afede5 100644
--- a/lib/Analysis/DataStructure/FunctionRepBuilder.cpp
+++ b/lib/Analysis/DataStructure/FunctionRepBuilder.cpp
@@ -147,19 +147,13 @@
     Value *Arg = (Value*)(*I);
     // Only process arguments that are of pointer type...
     if (PointerType *PT = dyn_cast<PointerType>(Arg->getType())) {
-      ArgDSNode *ArgNode = new ArgDSNode(*I);
-      ArgNodes.push_back(ArgNode);
-      
-      // Add a critical shadow value for it to represent what it is pointing
-      // to and add this to the value map...
+      // Add a shadow value for it to represent what it is pointing to and add
+      // this to the value map...
       ShadowDSNode *Shad = new ShadowDSNode(PT->getElementType(),
                                             Func->getParent(), true);
       ShadowNodes.push_back(Shad);
       ValueMap[Arg].add(PointerVal(Shad), Arg);
       
-      // The value of the argument is the shadow value...
-      ArgNode->getLink(0).add(Shad);
-      
       // Make sure that all users of the argument are processed...
       addAllUsesToWorkList(Arg);
     }
@@ -332,7 +326,6 @@
 //
 FunctionDSGraph::FunctionDSGraph(Function *F) : Func(F) {
   FunctionRepBuilder Builder(this);
-  ArgNodes    = Builder.getArgNodes();
   AllocNodes  = Builder.getAllocNodes();
   ShadowNodes = Builder.getShadowNodes();
   GlobalNodes = Builder.getGlobalNodes();
@@ -351,4 +344,3 @@
     Changed |= RemoveUnreachableNodes();
   }
 }
-