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
}
应该可以
为什么第一个代码块有效,而第二个代码块无效?当我查看文档时,我看到 %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
}
应该可以