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

LLVM新Pass Manager下InstCountPass统计结果为空问题求助

解决LLVM新Pass Manager下InstCount Pass无指令统计的问题

可能原因及对应解决步骤

1. 确认生成的LLVM IR包含有效函数体

先检查rand.bc中的IR是否存在实际执行的函数指令:

llvm-dis rand.bc -o rand.ll
cat rand.ll

如果输出仅包含函数声明(如declare i32 @main())而非函数定义(define i32 @main() { ... }),说明编译过程存在问题。此时修改clang编译命令,移除-c参数(-c仅生成目标文件,若代码依赖外部库但未正确处理,可能导致函数体缺失):

/usr/bin/clang -I/home/intern24001/csmith/install_csmith/include -emit-llvm randomcode-1.c -o rand.bc

2. 调整Opt命令的Pass Pipeline格式

在新Pass Manager中,确保InstCount Pass正确作用于整个模块。尝试显式指定Pass作用范围:

./bin/opt rand.bc -S -stats -passes="module(instcount)" -o /dev/null

3. 验证InstCount Pass是否实际执行

添加-debug-pass-manager参数查看Pass执行日志,确认InstCount是否被调度运行:

./bin/opt rand.bc -S -stats -passes="instcount" -debug-pass-manager -o /dev/null

如果日志中无Running pass: InstCountPass相关内容,说明Pass未被正确加载,需确认LLVM编译时是否启用了InstCount Pass(默认启用,若自定义编译时关闭需重新编译LLVM)。

4. 检查Csmith代码是否被编译器优化移除

若Csmith生成的代码无实际副作用(如空main函数),即使-O0级别也可能被clang优化。此时可在生成的C代码中添加有副作用的操作(如打印输出),或编译时添加-fno-delete-null-pointer-checks等参数强制保留指令。


内容的提问来源于stack exchange,提问作者Anik Basu Bhaumik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:02:37