1! { dg-do run } 2! Tests the fix for PR35743 and PR35745. 3! 4! Contributed by Dick Hendrickson <dick.hendrickson@gmail.com> 5! 6program try_rg0025 7 logical lda(5) 8 lda = (/(i/2*2 .ne. I, i=1,5)/) 9 call PR35743 (lda, 1, 2, 3, 5, 6, -1, -2) 10 CALL PR34745 11end program 12 13! Previously, the negative mask size would not be detected. 14SUBROUTINE PR35743 (LDA,nf1,nf2,nf3,nf5,nf6,mf1,mf2) 15 type unseq 16 real r 17 end type unseq 18 TYPE(UNSEQ) TDA1L(6) 19 LOGICAL LDA(NF5) 20 TDA1L(1:6)%r = 1.0 21 WHERE (LDA(NF6:NF3)) 22 TDA1L(MF1:NF5:MF1) = TDA1L(NF6:NF2) 23 ENDWHERE 24END SUBROUTINE 25 26! Previously, the expression in the WHERE block would be evaluated 27! ouside the loop generated by the where. 28SUBROUTINE PR34745 29 INTEGER IDA(10) 30 REAL RDA(10) 31 RDA = 1.0 32 nf0 = 0 33 WHERE (RDA < -15.0) 34 IDA = 1/NF0 + 2 35 ENDWHERE 36END SUBROUTINE 37