LLVM IR入门笔记
Function
任何函数体 必须有一个ret
指令显式地提供返回值, 包括return void.
Basic Block
block只能是function的下层结构, 一个function value至少有一个block, 多个block按照固定顺序排列.
也就是说block不能嵌套, 只能顺序排列.
函数体的入口是first block, 但后续的基本块必须通过条件或非条件的分支指令来手动连接, 否则通常会提示:
Basic Block in function 'xxx' does not have terminator!
这是因为ret
指令所在的最后一个块没有被连接上, 所以函数检查不到该指令, 所以判断该函数xxx
的第一个block没有结束
参考:
^1. https://mapping-high-level-constructs-to-llvm-ir.readthedocs.io/