From aed967dbfed066671441233aaa4f493c102b6972 Mon Sep 17 00:00:00 2001 From: Andrew Lenharth Date: Wed, 5 Apr 2006 02:42:36 +0000 Subject: [PATCH] revert this, this is safe, if conservative. leave a note to that effect git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27428 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/DataStructure/Local.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/Analysis/DataStructure/Local.cpp b/lib/Analysis/DataStructure/Local.cpp index c87e9c442e2..72eee24964e 100644 --- a/lib/Analysis/DataStructure/Local.cpp +++ b/lib/Analysis/DataStructure/Local.cpp @@ -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());