当前位置:  开发笔记 > 编程语言 > 正文

LLVM(3.5+)PassManager与LegacyPassManager

如何解决《LLVM(3.5+)PassManager与LegacyPassManager》经验,为你挑选了1个好方法。

我正在使用LLVM C++ API开发一种新语言,并希望利用优化过程.(注意:我目前正在使用来自源LLVM的最新产品,我认为相当于3.8)

我还没有找到任何使用新PassManager的例子,甚至Clang仍在使用LegacyPassManager.

我所遇到的职位,如这是几年前的,现在提及新PassManager,但他们都仍然使用旧系统.

有没有关于如何使用这个新的(ish)PassManager的示例/教程?新的LLVM项目是否更喜欢PassManager到LegacyPassManager?Clang是否计划迁移,或者这就是遗产系统陷入困境的原因?



1> Luke..:

根据我在#llvm IRC的帮助下收集的内容:

FunctionPassManager FPM;
//Use the PassInfoMixin types
FPM.addPass(InstCombinePass());

//Register any analysis passes that the transform passes might need
FunctionAnalysisManager FAM;

//Use the AnalysisInfoMixin types
FAM.registerPass([&] { return AssumptionAnalysis(); });
FAM.registerPass([&] { return DominatorTreeAnalysis(); });
FAM.registerPass([&] { return BasicAA(); });
FAM.registerPass([&] { return TargetLibraryAnalysis(); });

FPM.run(*myFunction, FAM);

但是为了避免手动注册每个通行证的麻烦,您可以使用PassBuilder注册分析通行证

FunctionPassManager FPM;
FPM.addPass(InstCombinePass());

FunctionAnalysisManager FAM;

PassBuilder PB;
PB.registerFunctionAnalyses(FAM);

FPM.run(*myFunction, FAM);

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有