LLVM 编号不是从 %0 开始

LLVM Numbering isn't starting at %0

为什么第一个代码块有效,而第二个代码块无效?当我查看文档时,我看到 %0 使用了很多次,但是当我尝试(按顺序)使用它时,我从 llc:

收到错误
llc: error: llc: test.ll:2:2: error: instruction expected to be numbered '%1'
        %0 = add i64 %x, %y
        ^
define i64 @add(i64 %x, i64 %y) {
    %1 = add i64 %x, %y
    ret i64 %1
}

define i64 @main() {
    ret i64 0
}
define i64 @add(i64 %x, i64 %y) {
    %0 = add i64 %x, %y
    ret i64 %0
}

define i64 @main() {
    ret i64 0
}

第一个未命名的实体是基本块。这就是为什么第一条指令应该在未命名的基本块中使用 %1

define i64 @add(i64 %x, i64 %y) {
entry:
    %0 = add i64 %x, %y
    ret i64 %0
}

应该可以