16c1ac141SIvan Zhechev! RUN: %python %S/test_errors.py %s %flang_fc1 264ab3302SCarolineConcatto! C1121 -- any procedure referenced in a concurrent header must be pure 364ab3302SCarolineConcatto 464ab3302SCarolineConcatto! Also, check that the step expressions are not zero. This is prohibited by 564ab3302SCarolineConcatto! Section 11.1.7.4.1, paragraph 1. 664ab3302SCarolineConcatto 764ab3302SCarolineConcattoSUBROUTINE do_concurrent_c1121(i,n) 864ab3302SCarolineConcatto IMPLICIT NONE 964ab3302SCarolineConcatto INTEGER :: i, n, flag 1064ab3302SCarolineConcatto !ERROR: DO CONCURRENT mask expression may not reference impure procedure 'random' 1164ab3302SCarolineConcatto DO CONCURRENT (i = 1:n, random() < 3) 1264ab3302SCarolineConcatto flag = 3 1364ab3302SCarolineConcatto END DO 1464ab3302SCarolineConcatto 1564ab3302SCarolineConcatto CONTAINS 1664ab3302SCarolineConcatto IMPURE FUNCTION random() RESULT(i) 1764ab3302SCarolineConcatto INTEGER :: i 1864ab3302SCarolineConcatto i = 35 1964ab3302SCarolineConcatto END FUNCTION random 2064ab3302SCarolineConcattoEND SUBROUTINE do_concurrent_c1121 2164ab3302SCarolineConcatto 2264ab3302SCarolineConcattoSUBROUTINE s1() 2364ab3302SCarolineConcatto INTEGER, PARAMETER :: constInt = 0 2464ab3302SCarolineConcatto 2564ab3302SCarolineConcatto ! Warn on this one for backwards compatibility 26*93dca9fbSEmil Kieri !WARNING: DO step expression should not be zero 2764ab3302SCarolineConcatto DO 10 I = 1, 10, 0 2864ab3302SCarolineConcatto 10 CONTINUE 2964ab3302SCarolineConcatto 3064ab3302SCarolineConcatto ! Warn on this one for backwards compatibility 31*93dca9fbSEmil Kieri !WARNING: DO step expression should not be zero 3264ab3302SCarolineConcatto DO 20 I = 1, 10, 5 - 5 3364ab3302SCarolineConcatto 20 CONTINUE 3464ab3302SCarolineConcatto 3564ab3302SCarolineConcatto ! Error, no compatibility requirement for DO CONCURRENT 3664ab3302SCarolineConcatto !ERROR: DO CONCURRENT step expression may not be zero 3764ab3302SCarolineConcatto DO CONCURRENT (I = 1 : 10 : 0) 3864ab3302SCarolineConcatto END DO 3964ab3302SCarolineConcatto 4064ab3302SCarolineConcatto ! Error, this time with an integer constant 4164ab3302SCarolineConcatto !ERROR: DO CONCURRENT step expression may not be zero 4264ab3302SCarolineConcatto DO CONCURRENT (I = 1 : 10 : constInt) 4364ab3302SCarolineConcatto END DO 4464ab3302SCarolineConcattoend subroutine s1 45