我試圖迭代使用store inst的操作數。我遵循程序員手冊來做到這一點,但我得到錯誤。使用llvm :: dyn_cast鑄造錯誤
//x is store instruction pointing to [store i32 5, i32* %a, align 4]
Value *op2 = x->getOperand(1);
for (Value::use_iterator useItr=op2->use_begin(),useEnd=op2->use_end(); useItr!=useEnd;useItr++){
if (Instruction *Inst = dyn_cast_or_null<Instruction>(*useItr))
errs()<<"done";
}
我得到這個錯誤消息:
IR/Use.h:204:UserTy * LLVM :: value_use_iterator ::運算符*()const的[UserTy = LLVM ::用戶]:斷言`Ù & &「無法取消引用結束迭代器!」'失敗。
在我的理解,如果鑄造不可能dyn_cast應該返回一個空指針而不是一個錯誤。我也嘗試dyn_cast_or_null,但同樣的錯誤。
有沒有其他方法可以完成它? – rahuL