Le 16/03/2014 11:41, Thomas Koenig a écrit : > Hello world, > > the attached patch fixes PR 60522, a regresseion where temporary > variables were incorrectly introduced in a BLOCK within a WHERE > statement. > > Regression-tested on x86_64-unknown-linux-gnu. > > OK for trunk and the other open branches? > I have a testcase that I'm pretty sure you won't like. ;-)
I outputs with -ffrontend-optimize: 0 0 260 442 696 and without: 0 0 1468 8202 31260 Mikael program foo implicit none integer, parameter :: n = 5 integer :: i integer, dimension(n) :: a integer, dimension(n) :: b = (/ (i + 2, i=1,size(b)) /) integer, dimension(n) :: c = (/ (i*i, i=1,size(c)) /) integer, dimension(n) :: d d = 0 a = b where(c > b) a = c d = bar(a) + bar(a) end where print *, d contains pure function bar(x) integer, dimension(n), intent(in) :: x integer, dimension(n) :: bar bar = x * x * x + 5 end function bar end program foo