https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102384
Bug ID: 102384 Summary: Missing optimization for pcom after enable O2 vectorization Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: crazylht at gmail dot com Target Milestone: --- Host: x86_64-pc-linux-gnu testcase is from gcc.dg/tree-ssa/predcom-dse-3.c void __attribute__((noinline)) foo4 (int *a) { int i; for (i = 0; i < 100; i++) { a[i] = 0; a[i + 3] = -1; } } novectorize vs vectorize dump @@ -1576,111 +1576,86 @@ void foo3 (int * a) ;; Function foo4 (foo4, funcdef_no=4, decl_uid=2022, cgraph_uid=5, symbol_order=12) Processing loop 1 -Creating dr for *_3 ...skipping... - _5 = _4 * 4; - _6 = a_10(D) + _5; - i_13 = i_17 + 1; - ivtmp_15 = ivtmp_16 - 1; - if (ivtmp_15 != 0) - goto <bb 5>; [98.99%] + vect_cst__14 = { 0, 0 }; + vect_cst__22 = { -1, -1 }; + vectp_a.59_23 = a_10(D) + 12; + + <bb 3> [local count: 536870800]: + # vectp_a.56_19 = PHI <vectp_a.56_20(5), a_10(D)(2)> + # vectp_a.58_24 = PHI <vectp_a.58_25(5), vectp_a.59_23(2)> + # ivtmp_27 = PHI <ivtmp_28(5), 0(2)> + MEM <vector(2) int> [(int *)vectp_a.56_19] = vect_cst__14; + MEM <vector(2) int> [(int *)vectp_a.58_24] = vect_cst__22;---- this is bad + vectp_a.56_20 = vectp_a.56_19 + 8; + vectp_a.58_25 = vectp_a.58_24 + 8; + ivtmp_28 = ivtmp_27 + 1; + if (ivtmp_28 < 50) + goto <bb 5>; [98.00%] else - goto <bb 4>; [1.01%] + goto <bb 4>; [2.00%] - <bb 5> [local count: 1052266996]: + <bb 5> [local count: 526133384]: goto <bb 3>; [100.00%] <bb 4> [local count: 10737416]: - MEM[(int *)a_10(D) + 400B] = -1; ---- this is good - MEM[(int *)a_10(D) + 404B] = -1; - MEM[(int *)a_10(D) + 408B] = -1; return;