【发布时间】:2021-08-06 09:46:30
【问题描述】:
有一段llvm ir代码,相当于汇编中的“lea eax, [ebx + ecx]”:
@eax = internal global i32 0
@ecx = internal global i32 0
@ebx = internal global i32 0
define void @root() {
entry:
%0 = load i32, i32* @ebx
%1 = load i32, i32* @ecx
%2 = mul i32 %1, 1
%3 = add i32 %0, %2
store i32 %3, i32* @eax
ret void
}
无论我使用opt -O3、-O2还是-O1,结果都是这样的:
define void @root() local_unnamed_addr #0 {
entry:
ret void
}
函数里面什么都没有,这是怎么回事?为什么opt认为@root函数中的上述代码是无用代码?
【问题讨论】:
-
可能因为全局变量是内部的,llvm 检测到您的函数没有外部可见的影响。
标签: optimization llvm