Call X->replaceAllUsesWith(UndefValue::get(X->getType)) before calling
X->eraseFromParent().
Nick
_______________________________________________
LLVM Developers mailing list
LLV...@cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
22 апреля 2012 г. 0:09 пользователь Михаил <neono...@gmail.com> написал:
Assertion occurs on some different test case? Could you attach its IR-code?
22 апреля 2012 г. 1:38 пользователь Михаил <neono...@gmail.com> написал:YesYours sincerely,Kadysev Mikhail22.04.2012, в 0:30, Dmitry N. Mikushin написал(а):
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
>
>
>
Ah, then you'll need to update the CallGraph first. Use
"CG.removeFunctionFromModule(F);" before deleting it.
Nick
>>> LLV...@cs.uiuc.edu <mailto:LLV...@cs.uiuc.edu> http://llvm.cs.uiuc.edu