我正在学习 LLVM 后端。我想在我的新目标机器上为
IsVerboseAsm
启用AsmPrinter
,以便我可以打印评论。
我尝试通过参考
Target/X86
来做到这一点。因为我注意到在我的目标机器上,IsVerboseAsm
总是 false
,而对于 X86 它总是 true
.
但是,我找不到任何代码来配置
IsVerboseAsm
。我用gdb跟踪了一下,发现这个数据的来源是LLVM编译时生成的include/clang/Driver/Options.inc
下的一个宏:
CODEGEN_OPTION_WITH_MARSHALLING(prefix_1, &"-fno-verbose-asm"[1], fno_verbose_asm, Flag, f_Group, INVALID, nullptr, CC1Option, 0, nullptr. nullptr, nullptr, "-fno-verbose-asm", true, 0, CodeGenOpts.AsmVerbose, true, false, true, normalizeSimpleNegativeFlag, denormalizeSimpleFlag , mergeForwardValue, extractForwardValue, -1)
进一步的追踪对我来说是不必要的复杂。另一方面,我也想知道,如果这是目标无关的代码,为什么会出现在这样的地方。
那么,我应该查看哪些关键字,以便知道如何为我要添加的目标机器的
IsVerboseAsm
启用AsmPrinter
?我知道我总是可以写一些代码来直接将TargetOptions
中的选项设置为true
,但我想知道其他后端是如何做到的。