2012-03-14 27 views

回答

3

我不認爲,因爲沒有像「終結者BB」這樣的事情:很可能有多個BB以退貨終止。

+1

您能給我舉一個帶有多個終止符BB的函數嗎?即使有多個回報,也應該有一個帶有phi的BB來「收集」所有回報的BB,對吧? – dalibocai 2012-03-14 14:22:09

+0

不,實際上甚至有一個名爲UnifyFunctionExitNodes的通道,其名稱完全正確,即從函數中排除多個退出 – CAFxX 2012-03-14 17:22:18

+0

好的。我懂了。謝謝! – dalibocai 2012-03-14 18:02:27

0

不可以。可能有多個函數的終止符基本塊,例如包含多個返回語句的函數。每個包含函數返回語句的基本塊將被稱爲終止塊或終止符基本塊。要檢測所有基本塊都是終止符基本塊(即包含返回語句),請執行以下操作:

runOnFunction { 
    for BB in F: 
     for I in BB: 
      if (ReturnInst *RI = dyn_cast<ReturnInst> I) 
      BB is terminator Basic Block 
      endif 
     endfor 
    endfor 
}