[LLVMdev] Remove function from module
Михаил
neonomaly.x at gmail.com
Sat Apr 21 14:44:27 PDT 2012
It also occurs on several (different) test cases. I have founded that assershion rises in void ValueHandleBase::ValueIsDeleted(Value *V);
Code from function:
// All callbacks, weak references, and assertingVHs should be dropped by now.
if (V->HasValueHandle) {
#ifndef NDEBUG // Only in +Asserts mode...
dbgs() << "While deleting: " << *V->getType() << " %" << V->getNameStr()
<< "\n";
if (pImpl->ValueHandles[V]->getKind() == Assert)
llvm_unreachable("An asserting value handle still pointed to this
" value!");
#endif
llvm_unreachable("All references to V were not removed?");
}
Yours sincerely,
Kadysev Mikhail
22.04.2012, в 1:41, Dmitry N. Mikushin написал(а):
> Assertion occurs on some different test case? Could you attach its IR-code?
>
> 22 апреля 2012 г. 1:38 пользователь Михаил <neonomaly.x at gmail.com> написал:
>> Yes
>>
>> Yours sincerely,
>> Kadysev Mikhail
>>
>> 22.04.2012, в 0:30, Dmitry N. Mikushin написал(а):
>>
>> Could you reproduce this assertion with my test program?
>>
>> 22 апреля 2012 г. 0:09 пользователь Михаил <neonomaly.x at gmail.com> написал:
>>
>> 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!
>>
>>
>>
>> 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/44313fd8/attachment.html>
More information about the llvm-dev
mailing list