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

--- Comment #18 from Richard Biener <rguenth at gcc dot gnu.org> ---
With -fipa-pta we add

+t.c:28:24: optimized: loop with 5 iterations completely unrolled (header
execution count 43151276)
+t.c:30:16: optimized: loop turned into non-loop; it never loops
...
-t.c:28:24: optimized: loop with 4 iterations completely unrolled (header
execution count 107374186)
+t.c:36:11: optimized: basic block part vectorized using 32 byte vectors
+t.c:36:11: optimized: basic block part vectorized using 8 byte vectors

the testcase still breaks when adding -fdisable-tree-cunroll
-fno-tree-loop-vectorize, then the only change is

+t.c:36:11: optimized: basic block part vectorized using 16 byte vectors
+t.c:36:11: optimized: basic block part vectorized using 8 byte vectors

when failing we have

t.c:36:11: missed:   can't determine dependence between *_65 and *ad_68
t.c:36:11: note:  removing SLP instance operations starting from: *_65 = _66;

w/o IPA PTA we have

  # PT = nonlocal escaped null
  _65 = a.6_13 + _64;
  # PT = nonlocal escaped
  ad_68 = ad_205 + 4;

with IPA PTA

  # PT = null { D.4063 D.4066 } (nonlocal, escaped, escaped heap)
  _65 = a.6_13 + _64;
  # PT = { D.4062 D.4065 } (nonlocal, escaped, escaped heap)
  ad_68 = ad_205 + 4;

Reply via email to