https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117140
Tamar Christina <tnfchris at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Last reconfirmed| |2024-10-15
Assignee|unassigned at gcc dot gnu.org |tnfchris at gcc dot
gnu.org
Status|UNCONFIRMED |ASSIGNED
--- Comment #5 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
Ok, mine then.
It looks like it's this loop:
int n_3_TYPE1_int64_t = 32;
int32_t x_3_int32_t = 233;
int32_t x2_3_int32_t = 78;
int64_t y_3_int64_t = 1234;
int32_t f_3_int32_t[33 * 2 + 1] = { 0 };
int64_t d_3_int64_t[33] = { 0 };
test_1_TYPE1_int64_t (f_3_int32_t, d_3_int64_t, x_3_int32_t, x2_3_int32_t,
y_3_int64_t, n_3_TYPE1_int64_t);
for (int i = 0; i < n_3_TYPE1_int64_t; ++i)
{
if (f_3_int32_t[i * 2 + 0] != x_3_int32_t)
__builtin_abort ();
if (f_3_int32_t[i * 2 + 1] != x2_3_int32_t)
__builtin_abort ();
if (d_3_int64_t[i] != y_3_int64_t)
__builtin_abort ();
}
the first two exits vectorize fine, the third one is vectorized but the
statement never gets replaced:
;; basic block 7, loop depth 1, count 32534376 (estimated locally, freq
1.0000), maybe hot
;; prev block 19, next block 32, flags: (NEW, REACHABLE, VISITED)
;; pred: 5 [always] count:32534376 (estimated locally, freq 1.0000)
(FALSE_VALUE,EXECUTABLE)
_73 = loop_len_64 / 2;
_75 = loop_len_65 / 2;
if (_21 != 0)
goto <bb 32>; [0.00%]
else
goto <bb 9>; [100.00%]
Looking into why the last update didn't happen. I think I just need to get cc1
working so will try to build an rv32 cross.