LLVM IR 属性组

属性组是由IR内的对象引用的一组属性。它们对于保持.ll文件可读性很重要,因为许多函数将使用同一组属性。在与单个.c文件相对应的.ll文件的退化(degenerative)情况下,单个属性组将捕获用于构建该文件的重要命令行标志。

一个属性组是一个模块级别的对象。要使用属性组,对象引用属性组的ID(例如#37)。一个对象可能涉及多个属性组。在这种情况下,来自不同组的属性被合并。

下面是一个应该总是内联的函数的属性组的示例,其堆栈对齐方式为4,不应使用SSE指令:

; Target-independent attributes:
attributes #0 = { alwaysinline alignstack=4 }

; Target-dependent attributes:
attributes #1 = { "no-sse" }

; Function @f has attributes: alwaysinline, alignstack=4, and "no-sse".
define void @f() #0 #1 { ... }