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.

Reply via email to