[問題] llvm opt工具應用

看板CompilerDev作者 (陽光大肥宅)時間4年前 (2021/10/12 15:56), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串1/2 (看更多)
大家好,編譯器版首po,問題如果太白癡還請見諒~ 最近在研究 Cmpiler 的 Optimizer 這塊,我選擇使用 LLVM,畢竟他的模組性是大家有 目共睹的。 近期在研究 Optimizer 的 Phase ordering Problem 這個問題(我發現繁中關鍵字很少 ) 感覺討論度不高,不知道為什麼XD 最近想用 opt 這個工具去玩玩看 pass 的 order 那因為我想先使用 new passmanager 的 cmmand,所以我的指令一開始是這樣打: opt -S -passes=always-inline,licm input.ll -o output.ll 結果出現 error,內容大概是要先 memorySSA 但我使用 legacy passmanager,就可以: opt -S --always-inline --licm input.ll -o output.ll 為什麼會這樣呢? 我是比較想要使用新版的,我擔心用舊版的之後會不支援。 另外,假如我 command 這樣使用: clang -S -emit-llvm input.c -o output.ll 出來的 IR 內容最底下的 attributes 會有一個參數是這樣:optnone 甚至會有noinline 想請問大家,這些參數該怎麼一開始就消除?以及這些參數的相關含義要去哪裡查才查得 到? 有這些參數,我每一次都要去 vim 一次修掉,才能 opt 他。 然後,opt 傳入的 passes 理論上不論順序如何,出來的 code 都不會執行錯誤對吧? 先謝謝版友了,有這個版真的很棒。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.89.62 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/CompilerDev/M.1634025384.A.F2F.html

10/15 12:54, , 2F
這裡有用 NPM 來指定 pass 順序的方法。
10/15 12:54, 2F

10/15 12:54, , 3F
New Pass Manager (NPM) 相較於舊的可以更靈活的自己操作
10/15 12:54, 3F
文章代碼(AID): #1XPJ-eyl (CompilerDev)
文章代碼(AID): #1XPJ-eyl (CompilerDev)