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

Reply via email to