llvm/test/Assembler/ifunc-use-list-order.ll
Dmitry Polukhin ba4922356c [GCC] Attribute ifunc support in llvm
This patch add support for GCC attribute((ifunc("resolver"))) for
targets that use ELF as object file format. In general ifunc is a
special kind of function alias with type @gnu_indirect_function. Patch
for Clang http://reviews.llvm.org/D15524

Differential Revision: http://reviews.llvm.org/D15525

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265667 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-07 12:32:19 +00:00

43 lines
741 B
LLVM

; RUN: verify-uselistorder < %s
; Global referencing ifunc.
@ptr_foo = global void ()* @foo_ifunc
; Alias for ifunc.
@alias_foo = alias void (), void ()* @foo_ifunc
@foo_ifunc = ifunc void (), i8* ()* @foo_resolver
define i8* @foo_resolver() {
entry:
ret i8* null
}
; Function referencing ifunc.
define void @bar() {
entry:
call void @foo_ifunc()
ret void
}
; Global referencing function.
@ptr_bar = global void ()* @bar
; Alias for function.
@alias_bar = alias void (), void ()* @bar
@bar_ifunc = ifunc void (), i8* ()* @bar2_ifunc
@bar2_ifunc = ifunc i8* (), i8* ()* @bar_resolver
define i8* @bar_resolver() {
entry:
ret i8* null
}
; Function referencing bar.
define void @bar2() {
entry:
call void @bar()
ret void
}