【问题标题】:Use still stuck around after Def is destroyed:Def 被破坏后使用仍然卡住:
【发布时间】:2014-11-14 16:37:06
【问题描述】:

为什么会报错

While deleting: i32 %
Use still stuck around after Def is destroyed:  %in = alloca [3000 x i32], align 4
opt: Value.cpp:79: virtual llvm::Value::~Value(): Assertion `use_empty() && "Uses remain 
when a value is destroyed!"' failed.

当我运行包含这些行的 LLVM Pass 时 . . .

Type *t3=dyn_cast<Type>(ArrayType::get(Type::getInt32Ty(context),50));
AllocaInst *al2=new AllocaInst(t3,"ar",ins1);

。 . . 这里我尝试分配一个新数组。

【问题讨论】:

    标签: llvm


    【解决方案1】:

    我认为您的通行证不仅仅是发出一个 alloca?上面的错误行有一个 3000 个元素的数组,而下面的代码 sn-p 生成一个 50 个元素的数组。

    您是否可能在上面的 alloca 指令上执行 eraseFromParent() ?指令在被销毁时不能有任何用途;你可能想看看 replaceAllUsesWith() 虽然没有更多关于你的通行证在做什么的信息我不能说更多。

    【讨论】:

      猜你喜欢
      • 2018-05-16
      • 1970-01-01
      • 2021-08-03
      • 2014-08-10
      • 2014-07-02
      • 2022-06-12
      • 1970-01-01
      • 2011-02-15
      • 2016-04-28
      相关资源
      最近更新 更多