推 a27417332: 推推,好回覆 12/23 19:50
※ 引述《flypaper (一直飛)》之銘言:
: 標題: [問題] llvm 有API可以求得PDF嗎?
: 時間: Thu Dec 20 08:11:40 2018
: 肥宅 我想問的PDF是 PostDominatorTreeFrontier
: 因為我有找到一般的DF (DominanceFrontierWrapperPass)
: 好奇PDF 有沒有對應的pass
: 還是只能自己刻一個呢?
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.193.157
: ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1545264705.A.8B6.html
: ※ 編輯: flypaper (111.251.193.157), 12/20/2018 08:17:56
: → MartinJ40: 你可能需要先了解compiler和library甚至和OS之間的關係 12/20 11:06
: → MartinJ40: 之前版上有一個問了一年的Qt 大部份跟Qt無關 12/20 11:07
: → MOONRAKER: 每次看他問qt都想哇塞 qt這麼厲害嗎 12/20 19:19
: 謝謝 大大的指導
: by the way
: 我早上的時候有看到有人寫說
: 因為有CFG和j-Edge就可以輕鬆的生出DF 所以沒有必要再做專門分析DF的pass
我是覺得透過這個機會去摸索學習一個 framework 也是很重要的事,
而且基於 open source project 開發的好處之一就是有人幫你測幫你驗幫你修,
會自已寫和知道怎麼順著一個 framework 開發一樣重要..
你如果有稍微 trace 一下 DominatorTree/PostDomTreeBase 應該就會發現他們
只是 DominatorTreeBase 的不同方而已而
template <typename NodeT, bool IsPostDom>
class DominatorTreeBase;
using DomTreeBase = DominatorTreeBase<T, false>;
using PostDomTreeBase = DominatorTreeBase<T, true>;
同樣去 trace DominanceFrontier 的話, 應該也可以發現他也是基於
DominanceFrontierBase 的 IsPostDom=flase,
所以你應該可以參考原本的做法, 加一個 IsPostDom=true 就是你要的
PostDominanceFrontier了
class DominanceFrontier : public ForwardDominanceFrontierBase<BasicBlock> {
template <class BlockT>
class ForwardDominanceFrontierBase
: public DominanceFrontierBase<BlockT, false> {
template <class BlockT, bool IsPostDom>
class DominanceFrontierBase;
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.120.217
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1545444721.A.743.html