Cancel

LLVM IR入门笔记

Language

·

October 13, 2021

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/

© minghu6

·

theme

Simplex theme logo

by golas