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