LLVM后端如何处理来自中间表示的类型(i32,i32 *,...)?
例如:
define i32 @main() #0 {
%2 = alloca i32, align 4
%3 = load i32, i32* %2, align 4
%4 = add nsw i32 %3, 54
store i32 %4, i32* %2, align 4
ret i32 0
}
示例中的类型有什么好处?
答案 0 :(得分:3)
来自LLVMs文档:
LLVM类型系统是中间表示的最重要特征之一。通过键入可以直接对中间表示执行多个优化,而无需在转换之前对侧进行额外的分析。强类型系统使得更容易读取生成的代码,并实现在正常的三个地址代码表示上无法执行的新颖分析和转换。