LLVM IR中的类型

LLVM IR中的类型,llvm,llvm-ir,Llvm,Llvm Ir,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 } 示例中的类型有什么好处?来自文档: LLVM类型系统是中间表示的最重要特性之一。类型化允许直接

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
}
示例中的类型有什么好处?

来自文档:

LLVM类型系统是中间表示的最重要特性之一。类型化允许直接在中间表示上执行大量优化,而无需在转换之前进行额外的分析。强大的类型系统使读取生成的代码变得更容易,并支持在正常的三地址代码表示上无法执行的新颖分析和转换

从文件:

LLVM类型系统是中间表示的最重要特性之一。类型化允许直接在中间表示上执行大量优化,而无需在转换之前进行额外的分析。强大的类型系统使读取生成的代码变得更容易,并支持在正常的三地址代码表示上无法执行的新颖分析和转换


不幸的是,文档中没有给出一个优化示例,这对于未键入的IR来说很棘手。不幸的是,文档中没有给出一个优化示例,这对于未键入的IR来说很棘手。