https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89224
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at gcc dot gnu.org, | |rguenth at gcc dot gnu.org Priority|P3 |P2 --- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> --- The issue is likely that lvalue_kind of <parm_decl 0x7ffff7ff3180 x type <vector_type 0x7ffff6684bd0 __Int8x8_t type <integer_type 0x7ffff653b348 unsigned char public unsigned QI size <integer_cst 0x7ffff653d090 constant 8> unit-size <integer_cst 0x7ffff653d0a8 constant 1> align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff653b348 precision:8 min <integer_cst 0x7ffff653d0c0 0> max <integer_cst 0x7ffff653d060 255>> readonly unsigned V16QI size <integer_cst 0x7ffff6517fd8 constant 128> unit-size <integer_cst 0x7ffff653d000 constant 16> align:128 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff6684c78 nunits:16> readonly used unsigned V16QI t.ii:7:25 size <integer_cst 0x7ffff6517fd8 128> unit-size <integer_cst 0x7ffff653d000 16> align:128 warn_if_not_align:0 context <function_decl 0x7ffff6687a00 f> arg-type <vector_type 0x7ffff6684bd0 __Int8x8_t>> returns clk_ordinary and thus convert_vector_to_array_for_subscript returns false. And that's because 214 case PARM_DECL: 215 case RESULT_DECL: 216 case PLACEHOLDER_EXPR: 217 return clk_ordinary; we wrap the PARM_DECL in a VIEW_CONVERT_EXPR but that just gets stripped here. So maybe convert_vector_to_array_for_subscript is wrong in just using lvalue_p? I've went here just tracing cp_build_array_ref, otherwise I know nothing about C++ or how the c-c++-common lvalue_p should behave here.