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...