我向编译器添加了一些新的测试,它产生了以下内容,但给出了预期的%4错误。为什么LLVM需要一个新的临时寄存器标识符
; Entry Point
define i32 @main(i32 %argc, i8** %argv) {
entry:
%argc_addr = alloca i32
%argv_addr = alloca i8**
%retval = alloca i32
%0 = alloca i32
store i32 %argc, i32* %argc_addr
store i8** %argv, i8*** %argv_addr
%1 = load i32* %argc_addr
%2 = load i8*** %argv_addr
call void @__llvmsharp_init(i32 %1, i8** %2)
call i32 @__LS19ConsoleApplication37Program_mt_4Main()
store i32 0, i32* %0, align 4
%3 = load i32* %0, align 4
//错误预期的4%
store i32 %3, i32* %retval
br label %return
return:
%retval1 = load i32* %retval
ret i32 %retval1
}
而且是明智使用无名的临时..
感谢橡树是正确的写了这样的呼吁为%3 =呼叫123-132 @ __LS19ConsoleApplication37Program_mt_4Main() – user1496062
@ user1496062是的,这是正确的。 – Oak