1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00
llvm-mirror/test/Assembler/ifunc-use-list-order.ll
Dmitry Polukhin 9d54726038 [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

llvm-svn: 265667
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
}