[LLVMdev] Possible Bad Assertion in Value.cpp

Chris Lattner sabre at nondot.org
Fri Feb 15 14:36:47 PST 2008


On Feb 15, 2008, at 1:57 PM, John Criswell wrote:

> Dear All,
>
> I'm getting the following assertion from a program I've written:
>
> /home/vadve/criswell/src/llvm22/lib/VMCore/Value.cpp:57: virtual
> llvm::Value::~Value(): Assertion `use_empty() && "Uses remain when a
> value is destroyed!"' failed.
>
> This occurs when I free a Module (the program uses an auto_ptr() to  
> the
> Module, and the auto_ptr() moves out of scope).
>
> It looks like the code that frees a BasicBlock frees all of its
> instructions in order without regards to the def-use chains.  However,
> the Value class's destructor has the assertion that the Value has no  
> uses.
>
> Is the assertion an error, or should BasicBlock's deallocate
> instructions so that there are no dangling def-use chains?

You probably have an instruction that you removed from the module but  
didn't delete.  The module dtor works fine: it uses  
'dropAllReferences' to clear the operands of instructions before  
deleting the instructions themselves.

-Chris



More information about the llvm-dev mailing list