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