LLVM:我必须设置目标布局还是设置目标三元组更好?

标签 llvm llvm-ir

我正在学习 LLVM 框架的基础知识。我读到了描述数据类型的目标布局以及描述机器和操作系统的目标三元组。 但是,我无法找到有关真正强制设置的内容以及原因的信息。 我发现了一些例子,这些例子都没有设置,或者其中一个或另一个被设置。显然,没有必要为工作 IR 文件设置任何一个,但我的印象是开发人员希望我在那里设置一些东西,否则为什么会暴露这个接口(interface)?

我的理解是,基于目标三元组,LLVM应该能够自行导出正确的数据布局,但如果是这样,为什么可以手动设置数据布局。

那么正确的做法是什么?我应该选择哪条路?设置目标三元组还是手动定义完整布局?

最佳答案

DataLayout 将成为强制性的,因此我强烈建议您使用它。能够在没有 Triple 的情况下放入 DataLayout 的原因是这样您就可以拥有需要 DataLayout 才能工作的目标独立转换。当您达到这一点时,三元组将影响代码生成。

将来我们希望有一个 API 供前端编写者使用/修改,使他们能够从后端获取默认的三元组。

关于LLVM:我必须设置目标布局还是设置目标三元组更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29191911/

相关文章:

c - clang c99 中的主要函数

compiler-construction - 如何获得 LLVM 后端来为 mul 指令生成函数调用?

haskell - 使用 llvm 后端编译 haskell .ll 文件时出错

c++ - 问题创建 vector LLVM

llvm-clang - LLVM 使用进位和零标志

clang - 对IR代码中的static_cast和dynamic_cast进行分类

c - _AddressOfReturnAddress() 相当于 Clang/LLVM

c++ - 为什么这个 Clang ASTMatcher 会导致错误的多态转换?

llvm - 使用数组时的 Julia llvm 函数签名

compilation - 如何使用LLVM将基于堆栈的虚拟机字节码转换为SSA形式