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

--- Comment #23 from Yuri Rumyantsev <ysrumyan at gmail dot com> ---
OK. I will try to prepare the second part of patch.
Few comments about vect-simd-clone-5.c test failure.
1. This loop is marked with safelen=MAX_INT.
2. It contains the following stmt's:
D.3301 = foo.simdclone.1 (vect_vec_iv_.25_12, 123, _17);
    # VUSE <.MEM_39>
    _22 = MEM[(vector(2) long long int[2] *)&D.3301];
    # VUSE <.MEM_39>
    _23 = MEM[(vector(2) long long int[2] *)&D.3301 + 16B];
    # .MEM_40 = VDEF <.MEM_39>
    D.3301 ={v} {CLOBBER};
    vect__3.28_24 = VEC_PACK_TRUNC_EXPR <_22, _23>;
 and fuction ref_indep_Loop_p_1 checks that references
 MEM[(vector(2) long long int[2] *)&D.3301]
and
MEM[(vector(2) long long int[2] *)&D.3301 + 16B]
are independent.
We can avoid such bad behavior of safelen-check (1) put restriction that loop
does not contain non-analyzed references; (2) add additional check that
reference does not have operands defined inside loop (D.3301 in our case).

What approach is more profitable for you?

Reply via email to