LLVM中函数的最后一个基本块

时间:2012-03-14 14:03:14

标签: compiler-construction llvm

函数的back()是否保证在LLVM中返回CFG的终结子基本块?

2 个答案:

答案 0 :(得分:4)

我不认为,因为没有“终结者BB”这样的东西:很可能有多个BB被终止者终止。

答案 1 :(得分:1)

没有。可能存在函数的多个终止符基本块,例如包含多个返回语句的函数。然后,包含函数返回语句的每个基本块将被称为终结符块或终止符基本块。要检测作为终结器基本块的所有基本块(即包含return语句),请执行以下操作:

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