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.