Add a new metadata node `!implicit.ref` to represent an implicit dependency between 2 symbols. The metadata is unique to AIX and gets lowered to a relocation that adds an explicit link between the section the global that the metadata is placed on is allocated in, to the asscoiated symbol. This relocation will cause the associated symbol to remain live if the section is not garbage collected. This is used mainly for compiler features where there is some hidden runtime dependency between the symbols that isn't otherwise obvious to the linker.
13 lines
194 B
LLVM
13 lines
194 B
LLVM
; RUN: llvm-as < %s -o /dev/null 2>&1
|
|
|
|
@a = global i32 1
|
|
@b = global i32 2
|
|
@c = global i32 3, !implicit.ref !0
|
|
|
|
define i32 @foo() !implicit.ref !1 {
|
|
ret i32 0
|
|
}
|
|
|
|
!0 = !{ptr @a}
|
|
!1 = !{ptr @b}
|