111
|
1 ! { dg-do run }
|
|
2
|
|
3 program bug
|
|
4 ! Bug triggered with at least three elements
|
|
5 integer, parameter :: asize = 3
|
|
6
|
|
7 double precision,save :: ave(asize)
|
|
8 double precision,save :: old(asize)
|
|
9 double precision,save :: tmp(asize)
|
|
10
|
|
11 ave(:) = 10.d0
|
|
12 old(:) = 3.d0
|
|
13 tmp(:) = 0.d0
|
|
14
|
|
15 call buggy(2.d0,asize,ave,old,tmp)
|
131
|
16 if (any (tmp(:) .ne. 3.5)) STOP 1
|
111
|
17 end
|
|
18
|
|
19 subroutine buggy(scale_factor, asize, ave, old, tmp)
|
|
20
|
|
21 implicit none
|
|
22 ! Args
|
|
23 double precision scale_factor
|
|
24 integer asize
|
|
25 double precision ave(asize)
|
|
26 double precision old(asize)
|
|
27 double precision tmp(asize)
|
|
28
|
|
29 ! Local
|
|
30 integer i
|
|
31
|
|
32 do i = 1, asize
|
|
33 tmp(i) = ave(i) - old(i)
|
|
34 old(i) = ave(i)
|
|
35 tmp(i) = tmp(i) / scale_factor
|
|
36 end do
|
|
37
|
|
38 end subroutine buggy
|