[LLVMdev] Use still stuck around after Def is destroyed:
retval386 at gmail.com
Thu Oct 27 06:15:07 PDT 2011
No, I am not trying to delete anything.
I wanted to created a GlobalVariable that is of Type ConstantArray,
where one of the elements its a BitCast of a GlobalVariable. I have
that, but I get those errors after my pass is done. I dont know why,
my code seems sane enough, and I dont know another way I can go about
On Wed, Oct 26, 2011 at 4:42 PM, Tanya Lattner <lattner at apple.com> 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.
> If the use is not dead, then you can't remove the GlobalVar.
> Any advice?
> Thank you
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
More information about the llvm-dev