From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 643C6384AB58; Fri, 3 May 2024 08:41:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 643C6384AB58 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1714725680; bh=qdl7yieParTiImtAYGoJNNrgerJu8xaQ+CTJvd6chqY=; h=From:To:Subject:Date:In-Reply-To:References:From; b=yjbhXP3MCbq9bhWjkMm/juo/xziU889Q0A8HRPFuN+OoHkeum0OSFb6+WoBGk7cNO BP2Qh50rUqUJuWCn5ZnlqsRUEqvW4Ruon+nj8LjufP8ylX7pTzd882PGfY/HQAs5nT J0T+udJ35UcXXiKLZRv+lbTdEsvqjNfsebqMZoMA= From: "tnfchris at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/114932] Improvement in CHREC can give large performance gains Date: Fri, 03 May 2024 08:41:18 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: normal X-Bugzilla-Who: tnfchris at gcc dot gnu.org 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: Message-ID: In-Reply-To: References: 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 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D114932 --- Comment #4 from Tamar Christina --- reduced more: --- module brute_force integer, parameter :: r=3D9 integer block(r, r, 0) contains subroutine brute do do do do do do do i7 =3D l0, 1 select case(1 ) case(1) block(:2, 7:, 1) =3D block(:2, 7:, i7) - 1 end select do i8 =3D 1, 1 do i9 =3D 1, 1 if(1 =3D=3D 1) then call digits_20 end if end do end do end do end do end do end do end do end do end do end end --- I'll have to stop now till I'm back, but the main difference seems to be in: good: : IV struct: SSA_NAME: _1 Type: integer(kind=3D8) Base: (integer(kind=3D8)) ((unsigned long) l0_19(D) * 81) Step: 81 Biv: N Overflowness wrto loop niter: Overflow IV struct: SSA_NAME: _20 Type: integer(kind=3D8) Base: (integer(kind=3D8)) l0_19(D) Step: 1 Biv: N Overflowness wrto loop niter: No-overflow IV struct: SSA_NAME: i7_28 Type: integer(kind=3D4) Base: l0_19(D) + 1 Step: 1 Biv: Y Overflowness wrto loop niter: No-overflow IV struct: SSA_NAME: vectp.22_46 Type: integer(kind=3D4) * Base: (integer(kind=3D4) *) &block + ((sizetype) ((unsigned long) l0_19(D= ) * 324) + 36) Step: 324 Object: (void *) &block Biv: N Overflowness wrto loop niter: No-overflow bad: : IV struct: SSA_NAME: _1 Type: integer(kind=3D8) Base: (integer(kind=3D8)) l0_19(D) * 81 Step: 81 Biv: N Overflowness wrto loop niter: No-overflow IV struct: SSA_NAME: _20 Type: integer(kind=3D8) Base: (integer(kind=3D8)) l0_19(D) Step: 1 Biv: N Overflowness wrto loop niter: No-overflow IV struct: SSA_NAME: i7_28 Type: integer(kind=3D4) Base: l0_19(D) + 1 Step: 1 Biv: Y Overflowness wrto loop niter: No-overflow IV struct: SSA_NAME: vectp.22_46 Type: integer(kind=3D4) * Base: (integer(kind=3D4) *) &block + ((sizetype) ((integer(kind=3D8)) l0_= 19(D) * 81) + 9) * 4 Step: 324 Object: (void *) &block Biv: N Overflowness wrto loop niter: No-overflow=