1! { dg-do run }
2
3program 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)
16  if (any (tmp(:) .ne. 3.5)) call abort
17end
18
19subroutine 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
38end subroutine buggy
39