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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rsandifo at gcc dot gnu.org

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
So it looks like load/store-lanes has actual (aggregate) memory references as
arguments:

# .MEM_209 = VDEF <.MEM_84>
vect_array.27 = .LOAD_LANES (MEM <real(kind=8)[4]> [(real(kind=8) *)&z]);

but then it doesn't expect those to be expanded to a register - but here
we get

(gdb) p debug_rtx (mem)
(reg/v:OI 110 [ z ])

there's nothing in the GIMPLE IL forcing the argument to be addressable
and I guess it's too late to do anything about this in
expand_load_lanes_optab_fn.

There's discover_nonconstant_array_refs (a hack, IMHO) which could be
(ab-)used to handle this case (mark .LOAD_LANES args and .STORE_LANES
destination as TREE_ADDRESSABLE).

Richard?

Reply via email to