“继承者”在 llvm 中代表什么?
What does a “successor” stand for in llvm?
我在看llvm文档的时候,尤其是BasicBlock
部分,经常出现“successor”这个概念,那是什么?
后继者是结束基本块的分支的目标。
例如,如果一个基本块以五向开关结束,则该块有六个后继(五个显式和开关的默认)。以 return 结尾的基本块没有后继。
basic block
和 successor
这两个术语都来自 Control Flow Analysis(或 CFA)领域。
在 CFA 中,程序使用 Control Flow Graph(或 CFG)表示。
CFG中的每个顶点(或节点)都是一个基本块。由于 CFG 是一个有向图,一个基本块可能有输入边和输出边。例如:A -> B -> C。传入边来自前辈,而传出边指向后继者。
上述例子(A -> B -> C
)的successors/predecessors组:
pred(A) = {}
succ(A) = {B}
pred(B) = {A}
succ(B) = {C}
pred(C) = {B}
succ(C) = {}
我在看llvm文档的时候,尤其是BasicBlock
部分,经常出现“successor”这个概念,那是什么?
后继者是结束基本块的分支的目标。
例如,如果一个基本块以五向开关结束,则该块有六个后继(五个显式和开关的默认)。以 return 结尾的基本块没有后继。
basic block
和 successor
这两个术语都来自 Control Flow Analysis(或 CFA)领域。
在 CFA 中,程序使用 Control Flow Graph(或 CFG)表示。
CFG中的每个顶点(或节点)都是一个基本块。由于 CFG 是一个有向图,一个基本块可能有输入边和输出边。例如:A -> B -> C。传入边来自前辈,而传出边指向后继者。
上述例子(A -> B -> C
)的successors/predecessors组:
pred(A) = {}
succ(A) = {B}
pred(B) = {A}
succ(B) = {C}
pred(C) = {B}
succ(C) = {}