我正在使用cmake和Ninja构建生成器构建LLVM,如下所示:
cmake path/to/llvm/ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=1 -DLLVM_ENABLE_CXX1Y=1 -DLLVM_ENABLE_RTTI=1 -DLLVM_TARGETS_TO_BUILD="X86" -G Ninja
现在我正在尝试使用opt的-debug-only=mytype
选项打印一些关于我自己的传递的调试信息:在我的传递代码中使用以下内容:
define DEBUG_TYPE "mytype"
DEBUG(errs() << "My debug message\n");
按以下方式运行opt不会生成任何输出消息:
opt < a.bc > /dev/null -mypass -debug-only=mytype
出于性能原因,-debug-only在LLVM的优化构建(--enable-optimized)中不可用。
我怀疑这是我问题的根源,但在使用cmake构建llvm时,我无法找到如何打开/关闭此选项。
答案 0 :(得分:2)
通过启用断言来控制它。
cmake -DLLVM_ENABLE_ASSERTIONS=ON
足以打开它。如果没有看到调试输出,则不执行代码。
答案 1 :(得分:1)
我在这里补充一个我的问题的补充答案。正如@Joky所说,编译llvm时必须指定cmake -DLLVM_ENABLE_ASSERTIONS=ON
。另外,因为我的传递是在外部 llvm源代码树中构建的,所以在构建传递时也必须启用断言。