1; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s 2 3define ptr @resolver() { 4 ret ptr null 5} 6 7@inval_linkage = extern_weak ifunc void (), ptr @resolver 8; CHECK: IFunc should have {{.*}} linkage! 9; CHECK-NEXT: @inval_linkage 10 11@g = external global i32 12@inval_objtype = ifunc void (), ptr @g 13; CHECK: IFunc must have a Function resolver 14 15declare ptr @resolver_decl() 16@inval_resolver_decl = ifunc void (), ptr @resolver_decl 17; CHECK: IFunc resolver must be a definition 18; CHECK-NEXT: @inval_resolver_decl 19 20define available_externally ptr @resolver_linker_decl() { 21 ret ptr null 22} 23@inval_resolver_decl2 = ifunc void (), ptr @resolver_linker_decl 24; CHECK: IFunc resolver must be a definition 25; CHECK-NEXT: @inval_resolver_decl2 26 27@ifunc_nonpointer_return_type = ifunc i32 (), ptr @resolver_returns_nonpointer 28; CHECK: IFunc resolver must return a pointer 29; CHECK-NEXT: ptr @ifunc_nonpointer_return_type 30 31define i32 @resolver_returns_nonpointer() { 32 ret i32 0 33} 34