From 8f321af723ad74a08f2bad3d8b07fd5b8eab3581 Mon Sep 17 00:00:00 2001 From: Andrew Lenharth Date: Wed, 5 Apr 2006 02:42:36 +0000 Subject: revert this, this is safe, if conservative. leave a note to that effect llvm-svn: 27428 --- llvm/lib/Analysis/DataStructure/Local.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'llvm/lib/Analysis/DataStructure') diff --git a/llvm/lib/Analysis/DataStructure/Local.cpp b/llvm/lib/Analysis/DataStructure/Local.cpp index c87e9c442e2..72eee24964e 100644 --- a/llvm/lib/Analysis/DataStructure/Local.cpp +++ b/llvm/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()); -- cgit v1.2.3