compiler-errors - 到底应该使用什么命令行来从 <Target>RegisterInfo.td 文件中生成所有记录?

标签 compiler-errors compiler-construction llvm custom-backend llvm-3.0

背景资料: 到目前为止,我已经阅读了 llvm 教程,包括: The Table Gen Command Guide

Table Gen's General Documentation, especially the Running TableGen section

我目前正在为 llvm 的新目标编写代码,我不能在这里发布。我在问题的上下文中使用 X86 目标,因为它仍然适用于该目标。

我想做的是: 我正在尝试使用 tablegen 从 X86RegisterInfo.td 生成记录 我使用的命令行是这样的:

llvm-tblgen X86RegisterInfo.td -class=Register -I/home/des_fw/fler_llvm/llvm/include

返回这个错误

X86RegisterInfo.td:16:43: error: Couldn't find class 'Register'
class X86Reg<string n, bits<16> Enc, list<Register> subregs = []> : Register<n> {
                                      ^

我能够运行上面 Running TableGen 引用中给出的 X86.td 示例命令,所以我非常有信心包含路径 -I/.../... 是正确的,因为没有它写在这里方式,命令不运行。我还在同一目录(../Target/X86)中运行我的命令,作为有效的示例命令。

要使 TableGen 工具生成 X86RegisterInfo.td 文件(或通常为 XXXRegisterInfo.td,其中 XXX 是目标名称)的记录,正确的命令是什么?

我对 LLVM 和定制或编写编译器还很陌生,所以我祈祷只是我不了解如何使用命令行,但如果这也可能是一个完全不同的问题,请提供任何提示我在正确的方向上都非常感激。

非常感谢!

最佳答案

我相信我已经找到了我自己问题的答案。命令行应该是

llvm-tblgen X86.td -gen-register-info -I/home/des_fw/fler_llvm/llvm/include

因为

"On all LLVM back-ends, the llvm-tblgen binary will be executed on the root TableGen file .td, which should include all others. This guarantees that all information needed is accessible, and that no duplication is needed in the TbleGen files." (http://llvm.org/docs/TableGen/BackEnds.html#llvm-backends)

我用了

-gen-register-info

在我在问题中提到的网站上找到的选项:http://llvm.org/docs/CommandGuide/tblgen.html

所以整个命令行一般是

llvm-tblgen TargetNameHere.td -back-end-opt-for-specific-record-set -I/path/to/file/include/

关于compiler-errors - 到底应该使用什么命令行来从 <Target>RegisterInfo.td 文件中生成所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38507203/

相关文章:

java - 如果方法是抽象的,是否需要向下转换?

php - PHP-为MSSQL编译FreeTSD扩展

php - 用于创建 php 扩展的 VC 编译器版本

parsing - 如何解析依赖于父节点信息的子节点?

c - LLVM 中何时使用 load、store 和 alloca

c++ - 存在什么样的堆栈展开库,有什么区别?

c++ - 调试编译器故障

testing - Flex Builder : Asset file or directory name cannot be more than 100 bytes long

c - 分配器的 LLVM/Clang 特例

pointers - llvm中有符号执行工具吗?