[LoopReroll] Add an extra defensive check to avoid SCEV assertion.
[llvm-project.git] / flang / test / Semantics / data06.f90
blob953da87e97819dc95f050fd18c3e0e47e8c38fe4
1 ! RUN: %S/test_errors.sh %s %t %flang_fc1
2 ! REQUIRES: shell
3 ! DATA statement errors
4 subroutine s1
5 type :: t1
6 integer :: j = 666
7 end type t1
8 type(t1) :: t1x
9 !ERROR: Default-initialized 't1x' must not be initialized in a DATA statement
10 data t1x%j / 777 /
11 integer :: ja = 888
12 !ERROR: Default-initialized 'ja' must not be initialized in a DATA statement
13 data ja / 999 /
14 integer :: a1(10)
15 !ERROR: DATA statement set has more values than objects
16 data a1(1:9:2) / 6 * 1 /
17 integer :: a2(10)
18 !ERROR: DATA statement set has no value for 'a2(2_8)'
19 data (a2(k),k=10,1,-2) / 4 * 1 /
20 integer :: a3(2)
21 !ERROR: DATA statement implied DO loop has a step value of zero
22 data (a3(j),j=1,2,0)/2*333/
23 integer :: a4(3)
24 !ERROR: DATA statement designator 'a4(5_8)' is out of range
25 data (a4(j),j=1,5,2) /3*222/
26 interface
27 real function rfunc(x)
28 real, intent(in) :: x
29 end function
30 end interface
31 real, pointer :: rp
32 !ERROR: Procedure 'rfunc' may not be used to initialize 'rp', which is not a procedure pointer
33 data rp/rfunc/
34 procedure(rfunc), pointer :: rpp
35 real, target :: rt
36 !ERROR: Data object 'rt' may not be used to initialize 'rpp', which is a procedure pointer
37 data rpp/rt/
38 !ERROR: Initializer for 'rt' must not be a pointer
39 data rt/null()/
40 !ERROR: Initializer for 'rt' must not be a procedure
41 data rt/rfunc/
42 integer :: jx, jy
43 !WARNING: DATA statement value initializes 'jx' of type 'INTEGER(4)' with CHARACTER
44 data jx/'abc'/
45 !ERROR: DATA statement value could not be converted to the type 'INTEGER(4)' of the object 'jx'
46 data jx/t1()/
47 !ERROR: DATA statement value could not be converted to the type 'INTEGER(4)' of the object 'jx'
48 data jx/.false./
49 !ERROR: DATA statement value 'jy' for 'jx' is not a constant
50 data jx/jy/
51 end subroutine