https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77989
--- Comment #4 from amker at gcc dot gnu.org ---
The vectorized code looks good to me. It is in VRP2 that GCC generates below
expression:
MEM[&MEM[(void *)&b + 49B] + 0B];
(gdb) call debug_tree(*tp)
<mem_ref 0x7ffff6ab8230
type <integer_type 0x7ffff695f5e8 char public string-flag QI
size <integer_cst 0x7ffff695bd98 constant 8>
unit size <integer_cst 0x7ffff695bdb0 constant 1>
align 8 symtab 0 alias set -1 canonical type 0x7ffff695f5e8 precision 8
min <integer_cst 0x7ffff695bde0 -128> max <integer_cst 0x7ffff695be10 127>
pointer_to_this <pointer_type 0x7ffff697e150>>
arg 0 <addr_expr 0x7ffff6ad5ee0
type <pointer_type 0x7ffff697e150 type <integer_type 0x7ffff695f5e8
char>
sizes-gimplified public unsigned DI
size <integer_cst 0x7ffff695bca8 constant 64>
unit size <integer_cst 0x7ffff695bcc0 constant 8>
align 64 symtab 0 alias set 1 canonical type 0x7ffff697e150
pointer_to_this <pointer_type 0x7ffff6a9e2a0> reference_to_this
<reference_type 0x7ffff6a74150>>
constant
arg 0 <mem_ref 0x7ffff6ad6078 type <integer_type 0x7ffff695f5e8 char>
arg 0 <addr_expr 0x7ffff6ad5f00 type <pointer_type 0x7ffff697e150>
constant arg 0 <var_decl 0x7ffff7ff7e10 b>
pr77989.c:5:13 start: pr77989.c:5:13 finish: pr77989.c:5:14>
arg 1 <integer_cst 0x7ffff6acad68 constant 49>>
pr77989.c:9:4 start: pr77989.c:9:3 finish: pr77989.c:9:5>
arg 1 <integer_cst 0x7ffff6a873a8 type <pointer_type 0x7ffff697e150>
constant 0>
pr77989.c:12:10 start: pr77989.c:12:10 finish: pr77989.c:12:13>
which triggers the ICE.
continue looking...