LLVM打印IR调用

LLVM打印IR调用,llvm,Llvm,我正在学习LLVM万花筒教程,第3章,当一个操作运行时,似乎会在编译代码上打印出额外的信息 ready> 4+5; Read top-level expression: define double @0() { entry: ret double 9.000000e+00 } 但当我自己编译所有内容时,我只得到: ready> 4+5; ready> Parsed a top-level expr 我可以在上找到代码,我以与教程中相同的方式编译它 clang++ -g

我正在学习LLVM万花筒教程,第3章,当一个操作运行时,似乎会在编译代码上打印出额外的信息

ready> 4+5;
Read top-level expression:
define double @0() {
entry:
  ret double 9.000000e+00
}
但当我自己编译所有内容时,我只得到:

ready> 4+5;
ready> Parsed a top-level expr
我可以在上找到代码,我以与教程中相同的方式编译它

clang++ -g -O3 toy.cpp `llvm-config-11 --cxxflags --ldflags --system-libs --libs core` -o toy

在教程中的示例中,它似乎打印了
读取顶级表达式:
,但我得到了
解析的顶级表达式:
。我对LLVM非常陌生,因此为一个微不足道的问题向您道歉。

您得到顶级expr的
解析的原因是您很可能自己更改了该字符串

如果访问
HandleTopLevelExpression
的正文,您将看到教程打印此消息的位置


LLVM IR到stderr的打印是通过各种
LLVM::Value::print
完成的,在写入
读取顶级表达式的行下方调用


总而言之,您的代码缺少教程中代码列表中的部分

这里只是猜测一下……如果库本身在启用调试选项的情况下编译,则未打印的行通常与LLVM打印的内容类似。(我已经有一段时间没有重新配置我自己的LLVM树了,我已经完全忘记了我是怎么做的。但是启用断言进行编译至少是可取的,如果您看到其他与调试相关的选项,那么也可以启用它们。)