有人知道这个错误意味着什么吗?当我尝试反汇编LLVMWriteBitcodeToFile写的文件时,我收到错误。当我使用LLVMDumpModule转储模块并手动组装和反汇编文件时,不会发生错误。我正在尝试编译的模块(来自LLVMDumpModule)看起来像:
; ModuleID = 'Test'
define i32 @a(i32) {
entry:
%icmp = icmp eq i32 %0, 1 ; <i1> [#uses=1]
br i1 %icmp, label %_L2, label %_L3
_L1: ; preds = %_L3
ret i32 %0
call void @RAISE(i32 1)
unreachable
_L2: ; preds = %entry
ret i32 1
_L3: ; preds = %entry
br label %_L1
}
declare void @RAISE(i32)
任何线索?
答案 0 :(得分:4)
我不知道显示哪条指令的错误信息,但我的猜测是
call void @RAISE(i32 1),
原因可能是它在终结符指令(基本块中的最后一条指令)之后
ret i32 %0
,因此没有父BB
答案 1 :(得分:2)
由于错误地构造了代表IR的内存LLVM对象,我之前遇到过类似的症状。使用最初生成此代码的代码,并确保它没有做任何可疑的事情。