From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 81155385841D; Fri, 17 Sep 2021 02:35:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 81155385841D From: "crazylht at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/102383] New: Missing optimization for PRE after enable O2 vectorization Date: Fri, 17 Sep 2021 02:35:02 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 12.0 X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: normal X-Bugzilla-Who: crazylht at gmail dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status keywords bug_severity priority component assigned_to reporter target_milestone cf_gcchost cf_gcctarget Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Sep 2021 02:35:02 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D102383 Bug ID: 102383 Summary: Missing optimization for PRE 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 Target: x86_64-*-* i?86-*-* testcase is form gcc.dg/tree-ssa/predcom-1.c void abort (void); unsigned fib[1000]; __attribute__ ((noinline)) void count_fib(void) { int i; fib[0] =3D 0; fib[1] =3D 1; for (i =3D 2; i < 1000; i++) fib[i] =3D (fib[i-1] + fib[i - 2]) & 0xffff; } git diff novectorize vectorize dump diff --git a/../novectorize/predcom-1.c.248t.optimized b/./predcom-1.c.248t.optimized index 9e4783d..7846af6 100644 --- a/../novectorize/predcom-1.c.248t.optimized +++ b/./predcom-1.c.248t.optimized @@ -5,53 +5,57 @@ Removing basic block 5 __attribute__((noinline)) void count_fib () { - sizetype ivtmp.13; + sizetype ivtmp.16; + unsigned int fib_I_lsm1.6; unsigned int fib_I_lsm0.5; int i; - unsigned int _2; - unsigned int _4; unsigned int _5; unsigned int _6; - unsigned int prephitmp_21; - unsigned int prephitmp_24; - unsigned int _41; + unsigned int _19; + unsigned int _20; + unsigned int _21; + unsigned int _37; + int _38; + unsigned int _46; unsigned int _47; - unsigned int _48; - unsigned int _59; - int _65; - unsigned int pretmp_66; + int _54; + unsigned int _55; + unsigned int _56; + unsigned int _57; [local count: 10737416]: - MEM [(unsigned int *)&fib] =3D 4294967296; + MEM [(unsigned int *)&fib] =3D { 0, 1 }; [local count: 10737417]: - # prephitmp_21 =3D PHI <1(2), _48(3)> - # prephitmp_24 =3D PHI <0(2), _6(3)> - # fib_I_lsm0.5_38 =3D PHI <1(2), _48(3)> - # ivtmp.13_7 =3D PHI <4(2), ivtmp.13_8(3)> - _5 =3D prephitmp_21 + prephitmp_24; + # fib_I_lsm0.5_32 =3D PHI <0(2), _6(3)> + # fib_I_lsm1.6_33 =3D PHI <1(2), _47(3)> + # ivtmp.16_11 =3D PHI <4(2), ivtmp.16_10(3)> + _5 =3D fib_I_lsm0.5_32 + fib_I_lsm1.6_33; _6 =3D _5 & 65535; - MEM[(unsigned int *)&fib + -8B + ivtmp.13_7 * 4] =3D _6; - _47 =3D _6 + fib_I_lsm0.5_38; - _48 =3D _47 & 65535; - MEM[(unsigned int *)&fib + -4B + ivtmp.13_7 * 4] =3D _48; - ivtmp.13_8 =3D ivtmp.13_7 + 2; - if (ivtmp.13_8 !=3D 1000) + MEM[(unsigned int *)&fib + -8B + ivtmp.16_11 * 4] =3D _6; + _46 =3D _6 + fib_I_lsm1.6_33; + _47 =3D _46 & 65535; + MEM[(unsigned int *)&fib + -4B + ivtmp.16_11 * 4] =3D _47; + ivtmp.16_10 =3D ivtmp.16_11 + 2; + if (ivtmp.16_10 !=3D 1000) goto ; [98.00%] else goto ; [2.00%] [local count: 10737416]: - i_51 =3D (int) ivtmp.13_7; - _41 =3D _6 + _48; - _59 =3D _41 & 65535; - fib[i_51] =3D _59; - i_61 =3D i_51 + 1; - _65 =3D i_51 + -1; - pretmp_66 =3D fib[_65]; - _2 =3D _59 + pretmp_66; - _4 =3D _2 & 65535; - fib[i_61] =3D _4; + i_50 =3D (int) ivtmp.16_11; + _38 =3D i_50 + -1; + _37 =3D fib[_38]; ----- missing optimization here + _54 =3D i_50 + -2; + _55 =3D fib[_54]; ----- and here. + _56 =3D _37 + _55; + _57 =3D _56 & 65535; + fib[i_50] =3D _57; + i_59 =3D i_50 + 1; + _19 =3D fib[_38]; + _20 =3D _19 + _57; + _21 =3D _20 & 65535; + fib[i_59] =3D _21; return; }=