When calling global constructor functions, the dynamic linker may pass arguments without breaking the ABI, such as (argc, argv, envp) in the case of glibc.
The utility function llvm::appendToGlobalCtors accepts a pointer to an llvm::Function, but if it is not of the type FunctionType::get(IRB.getVoidTy(), false), then the resulting LLVM IR will be invalid, possibly leading to a "LLVM constant table mismatch" error in the future.
This is probably not quite right, it should probably be a pointer to function type.