Don't call Constant::getNullValue when the argument could be VoidTy
authorChris Lattner <sabre@nondot.org>
Wed, 3 Nov 2004 18:51:26 +0000 (18:51 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 3 Nov 2004 18:51:26 +0000 (18:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17457 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/DataStructure/Local.cpp

index b12a8ccb5269c99760e70d5b76e4006c5efc38ba..18e7df91455ecc44b4b8903254f16ee457bdaeaa 100644 (file)
@@ -209,7 +209,7 @@ DSGraph::DSGraph(const TargetData &td, Function &F, DSGraph *GG)
 ///
 DSNodeHandle GraphBuilder::getValueDest(Value &Val) {
   Value *V = &Val;
-  if (V == Constant::getNullValue(V->getType()))
+  if (isa<Constant>(V) && cast<Constant>(V)->isNullValue())
     return 0;  // Null doesn't point to anything, don't add to ScalarMap!
 
   DSNodeHandle &NH = ScalarMap[V];
@@ -528,7 +528,8 @@ void GraphBuilder::visitCallSite(CallSite CS) {
           return;
         } else if (F->getName() == "realloc") {
           DSNodeHandle RetNH = getValueDest(*CS.getInstruction());
-          RetNH.mergeWith(getValueDest(**CS.arg_begin()));
+          if (CS.arg_begin() != CS.arg_end())
+            RetNH.mergeWith(getValueDest(**CS.arg_begin()));
           if (DSNode *N = RetNH.getNode())
             N->setHeapNodeMarker()->setModifiedMarker()->setReadMarker();
           return;