Yafei Liu via llvm-dev
2019-Oct-15 08:53 UTC
[llvm-dev] Easy way to add common pass for optimization
Hi all, I wrote a compiler front end which generates IR codes, but due to the logic, the IR codes have a lot of instructions like unnecessary br jump, basic block creation, load instructions and expression which can be simplified. now I want to use built in passes to optimize the generated code, but after I read the tutorial: https://llvm.org/docs/tutorial/MyFirstLanguageFrontend, I found that I have to add passess one by one, on function level. I know these passes for module level, but I don't know what passes I should add, and I do not have special optimization requirements, so built-in passes will meet my requirements, So this there any easy way to add most common passes which all compilers will probable used? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191015/6d8e990e/attachment.html>
John Brawn via llvm-dev
2019-Oct-15 12:39 UTC
[llvm-dev] Easy way to add common pass for optimization
It depends on if you’re using the new or old pass managers, though if you’re following that tutorial you’re probably using the old one (looking at https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl04.html#llvm-optimization-passes). If so then you can use PassManagerBuilder (http://llvm.org/doxygen/classllvm_1_1PassManagerBuilder.html). It may be also worthwhile looking at what opt does (AddOptimizationLevel.cpp in opt.cpp) as it uses PassManagerBuilder but does something a bit more complex than just setting the optlevel then populating the pass manager (but maybe just setting optlevel is all you need for your purposes). John From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Yafei Liu via llvm-dev Sent: 15 October 2019 09:54 To: llvm-dev Subject: [llvm-dev] Easy way to add common pass for optimization Hi all, I wrote a compiler front end which generates IR codes, but due to the logic, the IR codes have a lot of instructions like unnecessary br jump, basic block creation, load instructions and expression which can be simplified. now I want to use built in passes to optimize the generated code, but after I read the tutorial: https://llvm.org/docs/tutorial/MyFirstLanguageFrontend, I found that I have to add passess one by one, on function level. I know these passes for module level, but I don't know what passes I should add, and I do not have special optimization requirements, so built-in passes will meet my requirements, So this there any easy way to add most common passes which all compilers will probable used? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191015/5933390d/attachment.html>
Yafei Liu via llvm-dev
2019-Oct-16 02:07 UTC
[llvm-dev] Easy way to add common pass for optimization
Hi John, I didn't find any file named AddOptimizationLevel.cpp in my llvm project, where is it? On Tue, Oct 15, 2019 at 8:39 PM John Brawn <John.Brawn at arm.com> wrote:> It depends on if you’re using the new or old pass managers, though if > you’re following that tutorial you’re probably using the old > > one (looking at > https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl04.html#llvm-optimization-passes > ). > > > > If so then you can use PassManagerBuilder ( > http://llvm.org/doxygen/classllvm_1_1PassManagerBuilder.html). It may be > also > > worthwhile looking at what opt does (AddOptimizationLevel.cpp in opt.cpp) > as it uses PassManagerBuilder but does something > > a bit more complex than just setting the optlevel then populating the pass > manager (but maybe just setting optlevel is all you > > need for your purposes). > > > > John > > > > *From:* llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] *On Behalf Of *Yafei > Liu via llvm-dev > *Sent:* 15 October 2019 09:54 > *To:* llvm-dev > *Subject:* [llvm-dev] Easy way to add common pass for optimization > > > > Hi all, > > I wrote a compiler front end which generates IR codes, but due to the > logic, the IR codes have a lot of instructions like unnecessary br jump, > basic block creation, load instructions and expression which can be > simplified. > > now I want to use built in passes to optimize the generated code, but > after I read the tutorial: > https://llvm.org/docs/tutorial/MyFirstLanguageFrontend, I found that I > have to add passess one by one, on function level. > > > > I know these passes for module level, but I don't know what passes I > should add, and I do not have special optimization requirements, so > built-in passes will meet my requirements, So this there any easy way to > add most common passes which all compilers will probable used? >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191016/6b2b9663/attachment.html>