[LLVMdev] Use still stuck around after Def is destroyed:

Tanya Lattner lattner at apple.com
Wed Oct 26 13:43:51 PDT 2011


On Oct 26, 2011, at 1:42 PM, Tanya Lattner wrote:

> 
> On Oct 26, 2011, at 12:18 PM, ret val wrote:
> 
>> I made a GlobalVariable that is of type ConstantArray. For one of it's
>> elements I assigned it the ConstantExpr::getBitCast of another
>> GlobalVariable(the "shadow pointer" mentioned). This gives me:
>> 
>>        While deleting: i32 (i32)** %Shadow Variable for ptr1
>>        Use still stuck around after Def is destroyed:i8* bitcast (i32
>> (i32)** @"Shadow Variable for ptr1" to i8*)
>>        opt: Value.cpp:75: virtual llvm::Value::~Value(): Assertion
>> `use_empty() && "Uses remain when a value is destroyed!"' failed.
>> 
>> I only see this after my Pass' runOnModule() method is done. I'm not
>> sure what I'm doing wrong, this seems like a legitimate actions. I
>> also cant come up with another way to do this.
>> 
> 
> Are you saying that a dead ConstantExpr that uses the Global is hanging around when you try to delete it?
> 
> If so, use removeDeadUsersOfConstant() on the Global before you try to remove it.
> 

Sorry, I mean 
removeDeadConstantUsers	(		 )

-Tanya

> If the use is not dead, then you can't remove the GlobalVar.
> 
> -Tanya
> 
>> Any advice?
>> Thank you
>> _______________________________________________
>> 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/20111026/d0401bfb/attachment.html>


More information about the llvm-dev mailing list