[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