[LLVMdev] Remove function from module

Михаил neonomaly.x at gmail.com
Sun Apr 22 12:17:03 PDT 2012


It is ModulePass with AnalysisUsage of CallGraph
Yours sincerely,
Kadysev Mikhail

22.04.2012, в 5:20, Nick Lewycky написал(а):

> Михаил wrote:
>> Thanks, but I replaceAllUsesWith() - works well, but I still get bug in
>> eraseFromParent():
>> 
>> While deleting: i32 (%class.B*, i32)* %_ZN1B1xEi
>> An asserting value handle still pointed to this value!
>> UNREACHABLE executed at /Users/neonomaly/LLVM/LLVM/lib/VMCore/Value.cpp:561!
> 
> The replaceAllUsesWith + eraseFromParent pattern remains correct, but there's more to the story than the parts we've focused on. This error means that there's some other code that is holding a pointer to the function you tried to delete, but is using AssertingVH to do so, so as to catch errors exactly like this producing a dangling pointer.
> 
> The error message doesn't tell us who owns the AssertingVH (indeed, the asserting-vh doesn't know, much like a pointer doesn't know who owns it).
> 
> So, under what circumstance are you doing this deletion? Is it inside a FunctionPass, or another kind of Pass? Are you using AssertingVH's or calling other code that is? Such as ValueMap's, or some llvm analysis pass which stores an AssertingVH?
> 
> Nick
> 
>> 
>> 
>> Yours sincerely,
>> Kadysev Mikhail
>> 
>> 21.04.2012, в 23:45, Nick Lewycky написал(а):
>> 
>>> Михаил wrote:
>>>> How correctly remove function from module?
>>>> For example:
>>>> 
>>>> int f1(int x) {
>>>> ...
>>>> a = f2(smth);
>>>> ...
>>>> }
>>>> int f2 (int y) {
>>>> ...
>>>> b = f1(smth);
>>>> ...
>>>> }
>>>> 
>>>> I need delete from module both f1 and f2. They haven't uses in other
>>>> part of module, but I can't delete them with eraseFromParent, because
>>>> they are use each other.
>>> 
>>> Call X->replaceAllUsesWith(UndefValue::get(X->getType)) before calling
>>> X->eraseFromParent().
>>> 
>>> Nick
>> 
>> 
>> 
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120422/27fccec4/attachment.html>


More information about the llvm-dev mailing list