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

--- Comment #5 from JuzheZhong <juzhe.zhong at rivai dot ai> ---

Revise the testcase, it has a bug here:

void foo5_3 (int32_t * restrict in, int32_t * restrict out, size_t n, int cond)
  {
    vint8m1_t v = *(vint8m1_t*)in;
    *(vint8m1_t*)out = v;
    vbool8_t v3 = *(vbool8_t*)in;
    *(vbool8_t*)(out + 200) = v3;
    vbool16_t v4 = *(vbool16_t *)in;
    *(vbool16_t *)(out + 300) = v4;
  }

The second vlm.v for vbool16_t is missing which is incorrect codegen.
Confirm for vbool8/16/32/64 all have the same issue.

-fdump-tree-optimized can observe that:
They are all tied and consider as same in GIMPLE IR.

Reply via email to