我为llvm写了一些自己的传递,以便与clang一起使用。
我将它们集成在llvm中(不是动态加载的)。当我输入:
时,它们甚至列在 Optimizations available:部分中opt --help-hidden
当我打电话给clang时,我想自动运行自己的一个通行证作为最后一个:
clang ./hello.bc -o ./hello
甚至是c-code:
clang ./hello.c -o ./hello
当我手动使用opt运行传递时,会生成修改后的ByteCode并将其写入新的.bc文件:
opt -my-pass < ./hello.bc > ./hello_optimized.bc
当我使用clang编译修改后的.bc时,会再次运行普通的clang优化,这会破坏我手动执行的传递的优化:
clang -O0 -m32 ./hello_optimized.bc -o ./hello_optimized
我的问题是:
答案 0 :(得分:1)
这样做的正确方法是让clang将你的传递添加到它构建的传递管理器中。有关消毒剂的处理方法,请参阅clang/lib/CodeGen/BackendUtil.cpp:void EmitAssemblyHelper::CreatePasses()
。
答案 1 :(得分:0)