https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114932
--- Comment #4 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
reduced more:
---
module brute_force
integer, parameter :: r=9
integer block(r, r, 0)
contains
subroutine brute
do
do
do
do
do
do
do i7 = l0, 1
select case(1 )
case(1)
block(:2, 7:, 1) = block(:2, 7:, i7) - 1
end select
do i8 = 1, 1
do i9 = 1, 1
if(1 == 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:
<Induction Vars>:
IV struct:
SSA_NAME: _1
Type: integer(kind=8)
Base: (integer(kind=8)) ((unsigned long) l0_19(D) * 81)
Step: 81
Biv: N
Overflowness wrto loop niter: Overflow
IV struct:
SSA_NAME: _20
Type: integer(kind=8)
Base: (integer(kind=8)) l0_19(D)
Step: 1
Biv: N
Overflowness wrto loop niter: No-overflow
IV struct:
SSA_NAME: i7_28
Type: integer(kind=4)
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=4) *
Base: (integer(kind=4) *) &block + ((sizetype) ((unsigned long) l0_19(D) *
324) + 36)
Step: 324
Object: (void *) &block
Biv: N
Overflowness wrto loop niter: No-overflow
bad:
<Induction Vars>:
IV struct:
SSA_NAME: _1
Type: integer(kind=8)
Base: (integer(kind=8)) l0_19(D) * 81
Step: 81
Biv: N
Overflowness wrto loop niter: No-overflow
IV struct:
SSA_NAME: _20
Type: integer(kind=8)
Base: (integer(kind=8)) l0_19(D)
Step: 1
Biv: N
Overflowness wrto loop niter: No-overflow
IV struct:
SSA_NAME: i7_28
Type: integer(kind=4)
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=4) *
Base: (integer(kind=4) *) &block + ((sizetype) ((integer(kind=8)) l0_19(D) *
81) + 9) * 4
Step: 324
Object: (void *) &block
Biv: N
Overflowness wrto loop niter: No-overflow