[Bug tree-optimization/104002] ICE ‘verify_gimple’ failed since r12-1128-gef8176e0fac935c0

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jan 13 10:30:48 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104002

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Somewhat related to the recently fixed issue.  At -O0 we have invalid

  _1 = VEC_PERM_EXPR <v_2(D), v_2(D), { 2, 3, 2, 3 }>;
  _3 = BIT_FIELD_REF <_1, 64, 0>;
  _5 = VIEW_CONVERT_EXPR<int[2]>(_3)[i_4(D)];

while with -O update_address_taken is run and sets DECL_NOT_GIMPLE_REG_P (var),
leading to

  _1 = VEC_PERM_EXPR <v_2(D), v_2(D), { 2, 3, 2, 3 }>;
  D.1983 = BIT_FIELD_REF <_1, 64, 0>;
  _6 = VIEW_CONVERT_EXPR<int[2]>(D.1983)[i_5(D)];

note the non-register requirement is because of the variable index ARRAY_REF.
The decl should have been marked addressable but c_common_mark_addressable_vec
doesn't handle the TARGET_EXPR we build around the shufflevector result which
is the issue we have here.


More information about the Gcc-bugs mailing list