https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107920
--- Comment #11 from prathamesh3492 at gcc dot gnu.org --- Created attachment 53992 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53992&action=edit untested fix Thanks for the suggestions. The attached patch uses gsi_replace_with_seq_vops for preserving VUSE, which prevents the issue and results in following dump for fre: <bb 2> : # VUSE <.MEM_2(D)> _5 = MEM <vector(16) signed char> [(signed char * {ref-all})x_3(D)]; _4 = VEC_PERM_EXPR <_5, _5, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ... }>; # VUSE <.MEM_2(D)> return _4; and following code-gen: test_s8: ldr q0, [x0] dup z0.q, z0.q[0] ret I am not sure tho if using update_ssa in the patch is ideal. If not, could you please suggest a better alternative ? Thanks, Prathamesh