1! { dg-do compile } 2! { dg-options "-O -Warray-temporaries" } 3! PR 45744 - this used to ICE because of type mismatch 4! in the generated temporary. 5MODULE m 6CONTAINS 7 FUNCTION rnd(n) 8 INTEGER, INTENT(in) :: n 9 REAL(8), DIMENSION(n) :: rnd 10 CALL RANDOM_NUMBER(rnd) 11 END FUNCTION rnd 12 13 SUBROUTINE GeneticOptimize(n) 14 INTEGER :: n 15 LOGICAL :: mask(n) 16 REAL(8) :: popcross=0 17 REAL(4) :: foo(n) 18 real(4) :: a(n,n), b(n,n) 19 real(8) :: c(n,n) 20 integer(4) :: x(n,n) 21 integer(8) :: bar(n) 22 mask = (rnd(n) < popcross) ! { dg-warning "Creating array temporary" } 23 foo = rnd(n) ! { dg-warning "Creating array temporary" } 24 bar = rnd(n) ! { dg-warning "Creating array temporary" } 25 c = matmul(a,b) ! { dg-warning "Creating array temporary" } 26 x = matmul(a,b) ! { dg-warning "Creating array temporary" } 27 END SUBROUTINE GeneticOptimize 28END MODULE m 29