[LLVMdev] How to detect all free() calls
Jane
270611649 at qq.com
Sun Mar 10 21:17:48 PDT 2013
Hi,
I'm trying to write a pass to detect all free()/delete() call instructions in LLVM IR.The method is as follows.
First I find Call Instructions: CallInst *CI=dyn_cast<CallInst>(&*i);
then see if the Function name matches:
name=CI->getCalledFunction()->getName(); if(name=="_ZdlPv"||name=="_ZdaPv"||name=="free")
It worked but when something like this occurs
%call2 = call i32 bitcast (i32 (...)* @free to i32 (i8*)*)(i8* %call1) nounwind, !dbg !16
It seems like a indirect function call and I don't know how to detect free() in such situation.
By the way, is there any way that is more convenient to detect all free()/delete() call instructions in a module except by matching the function name?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130311/0744cdbb/attachment.html>
More information about the llvm-dev
mailing list