llvm/test/Transforms/Internalize/used.ll
Rafael Espindola 4ef7eafa3f Respect llvm.used in Internalize.
The language reference says that:

"If a symbol appears in the @llvm.used list, then the compiler,
assembler, and linker are required to treat the symbol as if there is
a reference to the symbol that it cannot see"

Since even the linker cannot see the reference, we must assume that
the reference can be using the symbol table. For example, a user can add
__attribute__((used)) to a debug helper function like dump and use it from
a debugger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187103 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-25 03:23:25 +00:00

21 lines
421 B
LLVM

; RUN: opt < %s -internalize -S | FileCheck %s
@llvm.used = appending global [1 x void ()*] [void ()* @f], section "llvm.metadata"
@llvm.compiler.used = appending global [1 x void ()*] [void ()* @g], section "llvm.metadata"
; CHECK: define void @f()
define void @f() {
ret void
}
; CHECK: define internal void @g()
define void @g() {
ret void
}
; CHECK: define internal void @h()
define void @h() {
ret void
}