在LLVM中,函数的back()是否保证返回CFG的终止基本块?
(翻译说明:CFG是控制流图的缩写,terminator basic block指的是控制流程结束的基本块)
在LLVM中,函数的back()是否保证返回CFG的终止基本块?
(翻译说明:CFG是控制流图的缩写,terminator basic block指的是控制流程结束的基本块)
我认为,因为不存在所谓的“终止BB”:可能会有多个BB通过返回终止。
不是的。一个函数可能有多个终止基本块,例如包含多个返回语句的函数。每个包含函数返回语句的基本块都将被称为终止块或终止基本块。要检测所有包含返回语句的基本块,即终止基本块,请执行以下操作:
runOnFunction {
for BB in F:
for I in BB:
if (ReturnInst *RI = dyn_cast<ReturnInst> I)
BB is terminator Basic Block
endif
endfor
endfor
}