revert this, this is safe, if conservative. leave a note to that effect
authorAndrew Lenharth <andrewl@lenharth.org>
Wed, 5 Apr 2006 02:42:36 +0000 (02:42 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Wed, 5 Apr 2006 02:42:36 +0000 (02:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27428 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/DataStructure/Local.cpp

index c87e9c442e2326241965fe82ea4dc895634adfe7..72eee24964e8ccaf3b11fb28055dedea2fc7b9d7 100644 (file)
@@ -546,17 +546,15 @@ void GraphBuilder::visitCallSite(CallSite CS) {
       case Intrinsic::vaend:
         return;  // noop
       case Intrinsic::memcpy_i32: 
-      case Intrinsic::memcpy_i64: {
-        //write first location
-        if (DSNode *N = getValueDest(**CS.arg_begin()).getNode())
-          N->setModifiedMarker();
-        //and read second pointer
-        if (DSNode *N = getValueDest(**(CS.arg_begin() + 1)).getNode())
-          N->setReadMarker();
-        return;
-      }
+      case Intrinsic::memcpy_i64:
       case Intrinsic::memmove_i32:
       case Intrinsic::memmove_i64: {
+        //This is over aggressive.  What these functions do is not make the 
+        // targets pointers alias, but rather merge the out edges of the graphs
+        // for the pointers according to the type merging of the graphs.
+        //Simply merging the two graphs is a crude approximation to this.
+        //I might be wrong though.
+
         // Merge the first & second arguments, and mark the memory read and
         // modified.
         DSNodeHandle RetNH = getValueDest(**CS.arg_begin());