[Bug target/81496] AVX load from adjacent memory location followed by concatenation

crazylht at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Aug 19 06:23:02 GMT 2021


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

--- Comment #7 from Hongtao.liu <crazylht at gmail dot com> ---
  we have plenty of such issues which are related to ABI and middle-end, when
pass/return struct/complex/int128 as parameter and middle-end will push them to
stack and load it back, but the problem is that either the data is stored on
the stack with a large size and then loaded back with multiple small sizes, or
stored on the stack with multiple small sizes and then loaded back with a large
size, because the store size and load size are not the same, so cse cannot
eliminate these redundancies, and neither can combine, but in fact if there is
vec_set/vec_extract on the back end, these spill/reloads can be completely
replaced.
  I'm wondering whether cse can be extend to handle such partial extract/set
stuff, or we should avoid spill to stack in the first place.


More information about the Gcc-bugs mailing list