作者cole945 (躂躂..)
看板C_and_CPP
标题Re: [问题] llvm 有API可以求得PDF吗?
时间Sat Dec 22 10:11:58 2018
※ 引述《flypaper (一直飞)》之铭言:
: 标题: [问题] llvm 有API可以求得PDF吗?
: 时间: Thu Dec 20 08:11:40 2018
: 肥宅 我想问的PDF是 PostDominatorTreeFrontier
: 因为我有找到一般的DF (DominanceFrontierWrapperPass)
: 好奇PDF 有没有对应的pass
: 还是只能自己刻一个呢?
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.251.193.157
: ※ 文章网址: https://webptt.com/cn.aspx?n=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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1545444721.A.743.html
1F:推 a27417332: 推推,好回覆 12/23 19:50