brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · a2ec113 Raw
307 lines · plain
1! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic2!3! C1120 -- DO variable (and associated expressions) must be INTEGER.4! This is extended by allowing REAL and DOUBLE PRECISION5!6! The standard requires the DO variable and the initial, final, and step7! expressions to be INTEGER. As an extension, we do however allow them to be8! REAL or DOUBLE PRECISION. This test turns on the option for standard9! conformance checking to test that we get portability warnings for these10! cases. We also check that other types, such as CHARACTER and LOGICAL, yield11! errors when used in the DO controls.12 13MODULE share14  INTEGER :: intvarshare15  REAL :: realvarshare16  DOUBLE PRECISION :: dpvarshare17END MODULE share18 19PROGRAM do_issue_45820  USE share21  IMPLICIT NONE22  INTEGER :: ivar23  REAL :: rvar24  DOUBLE PRECISION :: dvar25  LOGICAL :: lvar26  COMPLEX :: cvar27  CHARACTER :: chvar28  INTEGER, DIMENSION(3) :: avar29  TYPE derived30    REAL :: first31    INTEGER :: second32  END TYPE derived33  TYPE(derived) :: devar34  INTEGER, POINTER :: pivar35  REAL, POINTER :: prvar36  DOUBLE PRECISION, POINTER :: pdvar37  LOGICAL, POINTER :: plvar38  INTERFACE39    SUBROUTINE sub()40    END SUBROUTINE sub41    FUNCTION ifunc()42    END FUNCTION ifunc43  END INTERFACE44  PROCEDURE(ifunc), POINTER :: pifunc => NULL()45 46! DO variables47! INTEGER DO variable48  DO ivar = 1, 10, 349    PRINT *, "ivar is: ", ivar50  END DO51 52! REAL DO variable53!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]54  DO rvar = 1, 10, 355    PRINT *, "rvar is: ", rvar56  END DO57 58! DOUBLE PRECISISON DO variable59!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]60  DO dvar = 1, 10, 361    PRINT *, "dvar is: ", dvar62  END DO63 64! Pointer to INTEGER DO variable65  ALLOCATE(pivar)66  DO pivar = 1, 10, 367    PRINT *, "pivar is: ", pivar68  END DO69 70! Pointer to REAL DO variable71  ALLOCATE(prvar)72!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]73  DO prvar = 1, 10, 374    PRINT *, "prvar is: ", prvar75  END DO76 77! Pointer to DOUBLE PRECISION DO variable78  ALLOCATE(pdvar)79!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]80  DO pdvar = 1, 10, 381    PRINT *, "pdvar is: ", pdvar82  END DO83 84! CHARACTER DO variable85!ERROR: DO controls should be INTEGER86  DO chvar = 1, 10, 387    PRINT *, "chvar is: ", chvar88  END DO89 90! LOGICAL DO variable91!ERROR: DO controls should be INTEGER92  DO lvar = 1, 10, 393    PRINT *, "lvar is: ", lvar94  END DO95 96! COMPLEX DO variable97!ERROR: DO controls should be INTEGER98  DO cvar = 1, 10, 399    PRINT *, "cvar is: ", cvar100  END DO101 102! Derived type DO variable103!ERROR: DO controls should be INTEGER104  DO devar = 1, 10, 3105    PRINT *, "devar is: ", devar106  END DO107 108! Pointer to LOGICAL DO variable109  ALLOCATE(plvar)110!ERROR: DO controls should be INTEGER111  DO plvar = 1, 10, 3112    PRINT *, "plvar is: ", plvar113  END DO114 115! SUBROUTINE DO variable116!ERROR: DO control must be an INTEGER variable117  DO sub = 1, 10, 3118    PRINT *, "ivar is: ", ivar119  END DO120 121! FUNCTION DO variable122!ERROR: DO control must be an INTEGER variable123  DO ifunc = 1, 10, 3124    PRINT *, "ivar is: ", ivar125  END DO126 127! POINTER to FUNCTION DO variable128!ERROR: DO control must be an INTEGER variable129  DO pifunc = 1, 10, 3130    PRINT *, "ivar is: ", ivar131  END DO132 133! Array DO variable134!ERROR: Must be a scalar value, but is a rank-1 array135  DO avar = 1, 10, 3136    PRINT *, "plvar is: ", plvar137  END DO138 139! Undeclared DO variable140!ERROR: No explicit type declared for 'undeclared'141  DO undeclared = 1, 10, 3142    PRINT *, "plvar is: ", plvar143  END DO144 145! Shared association INTEGER DO variable146  DO intvarshare = 1, 10, 3147    PRINT *, "ivar is: ", ivar148  END DO149 150! Shared association REAL DO variable151!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]152  DO realvarshare = 1, 10, 3153    PRINT *, "ivar is: ", ivar154  END DO155 156! Shared association DOUBLE PRECISION DO variable157!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]158  DO dpvarshare = 1, 10, 3159    PRINT *, "ivar is: ", ivar160  END DO161 162! Initial expressions163! REAL initial expression164!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]165  DO ivar = rvar, 10, 3166    PRINT *, "ivar is: ", ivar167  END DO168 169! DOUBLE PRECISION initial expression170!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]171  DO ivar = dvar, 10, 3172    PRINT *, "ivar is: ", ivar173  END DO174 175! Pointer to INTEGER initial expression176  DO ivar = pivar, 10, 3177    PRINT *, "ivar is: ", ivar178  END DO179 180! Pointer to REAL initial expression181!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]182  DO ivar = prvar, 10, 3183    PRINT *, "ivar is: ", ivar184  END DO185 186! Pointer to DOUBLE PRECISION initial expression187!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]188  DO ivar = pdvar, 10, 3189    PRINT *, "ivar is: ", ivar190  END DO191 192! LOGICAL initial expression193!ERROR: DO controls should be INTEGER194  DO ivar = lvar, 10, 3195    PRINT *, "ivar is: ", ivar196  END DO197 198! COMPLEX initial expression199!ERROR: DO controls should be INTEGER200  DO ivar = cvar, 10, 3201    PRINT *, "ivar is: ", ivar202  END DO203 204! Derived type initial expression205!ERROR: DO controls should be INTEGER206  DO ivar = devar, 10, 3207    PRINT *, "ivar is: ", ivar208  END DO209 210! Pointer to LOGICAL initial expression211!ERROR: DO controls should be INTEGER212  DO ivar = plvar, 10, 3213    PRINT *, "ivar is: ", ivar214  END DO215 216! Invalid initial expression217!ERROR: Integer literal is too large for INTEGER(KIND=4)218  DO ivar = -2147483649_4, 10, 3219    PRINT *, "ivar is: ", ivar220  END DO221 222! Final expression223! REAL final expression224!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]225  DO ivar = 1, rvar, 3226    PRINT *, "ivar is: ", ivar227  END DO228 229! DOUBLE PRECISION final expression230!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]231  DO ivar = 1, dvar, 3232    PRINT *, "ivar is: ", ivar233  END DO234 235! Pointer to INTEGER final expression236  DO ivar = 1, pivar, 3237    PRINT *, "ivar is: ", ivar238  END DO239 240! Pointer to REAL final expression241!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]242  DO ivar = 1, prvar, 3243    PRINT *, "ivar is: ", ivar244  END DO245 246! Pointer to DOUBLE PRECISION final expression247!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]248  DO ivar = pdvar, 10, 3249    PRINT *, "ivar is: ", ivar250  END DO251 252! COMPLEX final expression253!ERROR: DO controls should be INTEGER254  DO ivar = 1, cvar, 3255    PRINT *, "ivar is: ", ivar256  END DO257 258! Invalid final expression259!ERROR: Integer literal is too large for INTEGER(KIND=4)260  DO ivar = 1, -2147483649_4, 3261    PRINT *, "ivar is: ", ivar262  END DO263 264! Step expression265! REAL step expression266!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]267  DO ivar = 1, 10, rvar268    PRINT *, "ivar is: ", ivar269  END DO270 271! DOUBLE PRECISION step expression272!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]273  DO ivar = 1, 10, dvar274    PRINT *, "ivar is: ", ivar275  END DO276 277! Pointer to INTEGER step expression278  DO ivar = 1, 10, pivar279    PRINT *, "ivar is: ", ivar280  END DO281 282! Pointer to REAL step expression283!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]284  DO ivar = 1, 10, prvar285    PRINT *, "ivar is: ", ivar286  END DO287 288! Pointer to DOUBLE PRECISION step expression289!PORTABILITY: DO controls should be INTEGER [-Wreal-do-controls]290  DO ivar = 1, 10, pdvar291    PRINT *, "ivar is: ", ivar292  END DO293 294! COMPLEX Step expression295!ERROR: DO controls should be INTEGER296  DO ivar = 1, 10, cvar297    PRINT *, "ivar is: ", ivar298  END DO299 300! Invalid step expression301!ERROR: Integer literal is too large for INTEGER(KIND=4)302  DO ivar = 1, 10, -2147483649_4303    PRINT *, "ivar is: ", ivar304  END DO305 306END PROGRAM do_issue_458307