mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-16 00:17:32 +00:00
Add special case handling for calloc and realloc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8630 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
808a7aeec7
commit
894263bc9f
@ -412,6 +412,22 @@ void GraphBuilder::visitInvokeInst(InvokeInst &II) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GraphBuilder::visitCallSite(CallSite CS) {
|
void GraphBuilder::visitCallSite(CallSite CS) {
|
||||||
|
// Special case handling of certain libc allocation functions here.
|
||||||
|
if (Function *F = CS.getCalledFunction())
|
||||||
|
if (F->isExternal())
|
||||||
|
if (F->getName() == "calloc") {
|
||||||
|
setDestTo(*CS.getInstruction(),
|
||||||
|
createNode()->setHeapNodeMarker()->setModifiedMarker());
|
||||||
|
return;
|
||||||
|
} else if (F->getName() == "realloc") {
|
||||||
|
DSNodeHandle RetNH = getValueDest(*CS.getInstruction());
|
||||||
|
RetNH.mergeWith(getValueDest(**CS.arg_begin()));
|
||||||
|
DSNode *N = RetNH.getNode();
|
||||||
|
if (N) N->setHeapNodeMarker()->setModifiedMarker()->setReadMarker();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Set up the return value...
|
// Set up the return value...
|
||||||
DSNodeHandle RetVal;
|
DSNodeHandle RetVal;
|
||||||
Instruction *I = CS.getInstruction();
|
Instruction *I = CS.getInstruction();
|
||||||
|
Loading…
Reference in New Issue
Block a user