[Bug tree-optimization/95581] [11 Regression] ICE in gimple_call_arg, at gimple.h:3260 since r11-959-gb825a22890740f341eae566af27e18e528cd29a7
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Jun 8 19:13:06 GMT 2020
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?
More information about the Gcc-bugs
mailing list