如何计算基本块的领导者集合?

时间:2017-12-14 00:29:29

标签: compiler-optimization

以下是计算领导者集合的一套规则

1第一个元组是领导者 如果存在元组,则元组L是领导者,如果...转到L或转到L。
3元组L是一个领导者,如果它紧跟一个元组,如果...转到B或转到B

我理解1和3,但2对我来说看起来很混乱。有人可以通过一个例子清理2吗?

1 个答案:

答案 0 :(得分:2)

术语与我习惯的术语不符,但我假设元组是程序中的通用指令/语句。

在该假设下,第二规则规定如果指令L是goto的目标,即如果任何指令跳转到L,则L是基本块的前导。例如,请考虑以下事项:

0: A = A + 1
1: B = A + 7
2: if A < 5 goto 6
3: A = A - 5
4: K = f(A)
5: Y = 12
6: Z = 12
7: return A

在这个例子中,0是根据规则1的领导者(它是第一条指令),3是根据规则3的领导者(它紧跟在跳跃之后),6 1}}是根据规则2的领导者(它是跳跃的目标)。