Fix PR3754: don't mark functions that wrap MallocInst with

the readnone.  Since MallocInst is scheduled for deletion
it doesn't seem worth doing anything more subtle, such as
having mayWriteToMemory return true for MallocInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71077 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan Sands 2009-05-06 08:42:00 +00:00
parent d8d27f4a4b
commit cfd0ebea27
2 changed files with 12 additions and 0 deletions

View File

@ -152,6 +152,11 @@ bool FunctionAttrs::AddReadAttrs(const std::vector<CallGraphNode *> &SCC) {
if (I->mayWriteToMemory())
// Writes memory. Just give up.
return false;
if (isa<MallocInst>(I))
// MallocInst claims not to write memory! PR3754.
return false;
// If this instruction may read memory, remember that.
ReadsMemory |= I->mayReadFromMemory();
}

View File

@ -0,0 +1,7 @@
; RUN: llvm-as < %s | opt -functionattrs | llvm-dis | not grep read
; PR3754
define i8* @m(i32 %size) {
%tmp = malloc i8, i32 %size ; <i8*> [#uses=1]
ret i8* %tmp
}