Critical Edges in CFG

在 control-flow graph 中,basic block 之间互相的跳转(比如 br %BB1 指向的 %BB1)form成了一个 edge。 起始的 basic block 叫做被跳转到的 basic block 的 predecessor,而这个被跳转到的另一个 basic block 叫做起始的 basic block 的 successor。 如下图所示,如果一个 basic block 有好几个 successor( BB0 有两个 successor BB2BB3); 且一个 basic block 有好几个 predecessor( BB3 有两个 predecessor BB0BB1)。 此时,这个被标红的 edge 就是 critical edge

Critical edges

Critical edges

这里感谢一个在 Google 工作的写 LLVM 的老哥,他写的文档比 LLVM 官方写的清楚多了 [1]

References