; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s define ptr @resolver() { ret ptr null } @inval_linkage = extern_weak ifunc void (), ptr @resolver ; CHECK: IFunc should have {{.*}} linkage! ; CHECK-NEXT: @inval_linkage @g = external global i32 @inval_objtype = ifunc void (), ptr @g ; CHECK: IFunc must have a Function resolver declare ptr @resolver_decl() @inval_resolver_decl = ifunc void (), ptr @resolver_decl ; CHECK: IFunc resolver must be a definition ; CHECK-NEXT: @inval_resolver_decl define available_externally ptr @resolver_linker_decl() { ret ptr null } @inval_resolver_decl2 = ifunc void (), ptr @resolver_linker_decl ; CHECK: IFunc resolver must be a definition ; CHECK-NEXT: @inval_resolver_decl2 @ifunc_nonpointer_return_type = ifunc i32 (), ptr @resolver_returns_nonpointer ; CHECK: IFunc resolver must return a pointer ; CHECK-NEXT: ptr @ifunc_nonpointer_return_type define i32 @resolver_returns_nonpointer() { ret i32 0 }