https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95581
--- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> --- gimple_call_arg(stmt, 2) asserts for this GIMPLE_CALL statement: vect__5.6_24 = __builtin_altivec_mask_for_load (vectp_a.5_8); The call is made with just one argument but the type of the function is actually <function_type 0x7ffff789a0a8 type <vector_type 0x7ffff787b0a8 __vector signed char type <integer_type 0x7ffff77b22a0 signed char public QI size <integer_cst 0x7ffff77b40c0 constant 8> unit-size <integer_cst 0x7ffff77b40d8 constant 1> align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff77b22a0 precision:8 min <integer_cst 0x7ffff77b4078 -128> max <integer_cst 0x7ffff77b40a8 127>> V16QI size <integer_cst 0x7ffff77b4018 constant 128> unit-size <integer_cst 0x7ffff77b4030 constant 16> align:128 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff787b000 nunits:16> SI size <integer_cst 0x7ffff77b4210 type <integer_type 0x7ffff77b20a8 bitsizetype> constant 32> unit-size <integer_cst 0x7ffff77b4228 type <integer_type 0x7ffff77b2000 sizetype> constant 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff789a888 arg-types <tree_list 0x7ffff789b0f0 value <integer_type 0x7ffff77b2738 long int public DI size <integer_cst 0x7ffff77a1fc0 constant 64> unit-size <integer_cst 0x7ffff77a1fd8 constant 8> align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff77b2738 precision:64 min <integer_cst 0x7ffff77b4258 -9223372036854775808> max <integer_cst 0x7ffff77b4270 9223372036854775807> pointer_to_this <pointer_type 0x7ffff77c1dc8>> chain <tree_list 0x7ffff789b118 value <pointer_type 0x7ffff77ba150> chain <tree_list 0x7ffff77af0a0 value <void_type 0x7ffff77b2f18 void>>>> pointer_to_this <pointer_type 0x7ffff794be70>> I couldn't found the function documented in the manual or exercised by the test suite but I see it created in gcc/config/rs6000/rs6000-call.c: decl = add_builtin_function ("__builtin_altivec_mask_for_load", v16qi_ftype_long_pcvoid, ALTIVEC_BUILTIN_MASK_FOR_LOAD, BUILT_IN_MD, NULL, NULL_TREE); Is it okay to call it with fewer arguments than its type indicates?