LLVM 打印 IR 调用

LLVM printing IR calls

我正在学习 LLVM Kaleidoscope 教程,第 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

我的代码可以在https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl03.html上找到,我按照教程中的方式编译它。

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

似乎在教程的示例中它打印了 Read top-level expression: 但我得到了 Parsed top-level expression:。我是 LLVM 的新手,所以对于一个微不足道的问题深表歉意。

您得到 Parsed a top-level expr 的原因是您很可能自己更改了该字符串。

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

https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl03.html#full-code-listing


将 LLVM IR 打印到 stderr 是通过各种 llvm::Value::print 完成的,在它写入 Read top-level expression.

的行下方调用

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