You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LLVM Kaleidoscope教程第三章运行输出与官方示例不符问题

问题原因排查方向
  • 缺失IR打印代码
    官方教程第三章的HandleTopLevelExpression处理函数中,明确包含两行打印IR的逻辑:
fprintf(stderr, "Read top-level expression:\n");
TheFunction->print(llvm::errs());

绝大多数用户出现该问题都是复制代码时遗漏了这两行,仅保留了解析成功的提示打印,自然不会输出IR内容。

  • LLVM版本适配问题
    你使用的是LLVM 11,部分新旧版本LLVM的Function::print方法签名存在差异:部分旧版可直接调用TheFunction->print()默认输出到标准错误流,LLVM 11要求显式传入输出流参数,必须写为TheFunction->print(llvm::errs())才会正常输出IR,写法错误不会触发编译报错,但不会产生输出。
  • IR生成过程静默失败
    如果代码生成阶段存在逻辑错误,比如模块、IR构建器初始化异常,codegen方法返回空指针,后续打印逻辑自然不会执行。可以在HandleTopLevelExpression中添加空指针判断排查:
auto *TheFunction = LogV->codegen();
if (!TheFunction) {
  fprintf(stderr, "Code generation failed\n");
  return nullptr;
}
// 后面再执行打印逻辑
  • LLVM环境不一致
    如果系统中存在多个版本的LLVM,头文件引用路径和llvm-config-11对应的库版本不匹配,也可能导致打印逻辑失效。可以执行llvm-config-11 --version确认版本一致性。

内容的提问来源于stack exchange,提问作者Nv9zEs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 22:06:03