LLVM,预期指令?

Dav*_*vid 5 c assembly llvm

我编写了以下简短的汇编 LLVM 代码(我知道它仅用于测试目的并不有效):

define void @main() {
label_41:
%t22 = add i32 0, 0
label_43:
%t23 = add i32 0, 0
}
Run Code Online (Sandbox Code Playgroud)

当我尝试像这样运行它时,出现错误:

Downloads % /usr/local/opt/llvm/bin/lli t02.out
/usr/local/opt/llvm/bin/lli: lli: t02.out:4:1: error: expected instruction opcode
label_43:
^
Run Code Online (Sandbox Code Playgroud)

有什么问题,缺少哪个操作码?

int*_*jay 10

LLVM 中的标签开始一个新块。并且每个块必须以终止符指令结束,例如retorbr

LLVM 给出错误,因为它到达了标签,但前面的块没有以终止符指令结束。要使其编译,您需要在label_43:函数结束之前和之前添加终止符指令。

  • 恕我直言,错误消息的措辞可以更好。 (3认同)
  • @500-InternalServerError 绝对可以。尽管我认为这不是一个优先事项,因为 LLVM IR 通常不是手写的。 (3认同)