annotate gcc/testsuite/gfortran.dg/pr61335.f90 @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do run }
kono
parents:
diff changeset
2 ! { dg-require-visibility "" }
kono
parents:
diff changeset
3 ! { dg-additional-options "-fbounds-check" }
kono
parents:
diff changeset
4 MODULE cp_units
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 INTEGER, PARAMETER :: default_string_length=80, dp=KIND(0.0D0)
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 LOGICAL, PRIVATE, PARAMETER :: debug_this_module=.TRUE.
kono
parents:
diff changeset
9 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'cp_units'
kono
parents:
diff changeset
10 INTEGER, SAVE, PRIVATE :: last_unit_id=0, last_unit_set_id=0
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 INTEGER, PARAMETER, PUBLIC :: cp_unit_max_kinds=8, cp_unit_basic_desc_length=15,&
kono
parents:
diff changeset
13 cp_unit_desc_length=cp_unit_max_kinds*cp_unit_basic_desc_length, cp_ukind_max=9
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 CONTAINS
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 FUNCTION cp_to_string(i) RESULT(res)
kono
parents:
diff changeset
18 INTEGER, INTENT(in) :: i
kono
parents:
diff changeset
19 CHARACTER(len=6) :: res
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 INTEGER :: iostat
kono
parents:
diff changeset
22 REAL(KIND=dp) :: tmp_r
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 IF (i>999999 .OR. i<-99999) THEN
kono
parents:
diff changeset
25 tmp_r=i
kono
parents:
diff changeset
26 WRITE (res,fmt='(es6.1)',iostat=iostat) tmp_r
kono
parents:
diff changeset
27 ELSE
kono
parents:
diff changeset
28 WRITE (res,fmt='(i6)',iostat=iostat) i
kono
parents:
diff changeset
29 END IF
kono
parents:
diff changeset
30 IF (iostat/=0) THEN
kono
parents:
diff changeset
31 STOP 7
kono
parents:
diff changeset
32 END IF
kono
parents:
diff changeset
33 END FUNCTION cp_to_string
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 SUBROUTINE cp_unit_create(string)
kono
parents:
diff changeset
36 CHARACTER(len=*), INTENT(in) :: string
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 CHARACTER(len=*), PARAMETER :: routineN = 'cp_unit_create', &
kono
parents:
diff changeset
39 routineP = moduleN//':'//routineN
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 CHARACTER(default_string_length) :: desc
kono
parents:
diff changeset
42 CHARACTER(LEN=40) :: formatstr
kono
parents:
diff changeset
43 INTEGER :: i_high, i_low, i_unit, &
kono
parents:
diff changeset
44 len_string, next_power
kono
parents:
diff changeset
45 INTEGER, DIMENSION(cp_unit_max_kinds) :: kind_id, power, unit_id
kono
parents:
diff changeset
46 LOGICAL :: failure
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 failure=.FALSE.
kono
parents:
diff changeset
49 unit_id=0
kono
parents:
diff changeset
50 kind_id=0
kono
parents:
diff changeset
51 power=0
kono
parents:
diff changeset
52 i_low=1
kono
parents:
diff changeset
53 i_high=1
kono
parents:
diff changeset
54 len_string=LEN(string)
kono
parents:
diff changeset
55 i_unit=0
kono
parents:
diff changeset
56 next_power=1
kono
parents:
diff changeset
57 DO WHILE(i_low<len_string)
kono
parents:
diff changeset
58 IF (string(i_low:i_low)/=' ') EXIT
kono
parents:
diff changeset
59 i_low=i_low+1
kono
parents:
diff changeset
60 END DO
kono
parents:
diff changeset
61 i_high=i_low
kono
parents:
diff changeset
62 DO WHILE(i_high<=len_string)
kono
parents:
diff changeset
63 IF ( string(i_high:i_high)==' '.OR.string(i_high:i_high)=='^'.OR.&
kono
parents:
diff changeset
64 string(i_high:i_high)=='*'.OR.string(i_high:i_high)=='/') EXIT
kono
parents:
diff changeset
65 i_high=i_high+1
kono
parents:
diff changeset
66 END DO
kono
parents:
diff changeset
67 DO WHILE(.NOT.failure)
kono
parents:
diff changeset
68 IF (i_high<=i_low.OR.i_low>len_string) EXIT
kono
parents:
diff changeset
69 i_unit=i_unit+1
kono
parents:
diff changeset
70 IF (i_unit>cp_unit_max_kinds) THEN
kono
parents:
diff changeset
71 EXIT
kono
parents:
diff changeset
72 END IF
kono
parents:
diff changeset
73 power(i_unit)=next_power
kono
parents:
diff changeset
74 ! parse op
kono
parents:
diff changeset
75 i_low=i_high
kono
parents:
diff changeset
76 DO WHILE(i_low<=len_string)
kono
parents:
diff changeset
77 IF (string(i_low:i_low)/=' ') EXIT
kono
parents:
diff changeset
78 i_low=i_low+1
kono
parents:
diff changeset
79 END DO
kono
parents:
diff changeset
80 i_high=i_low
kono
parents:
diff changeset
81 DO WHILE(i_high<=len_string)
kono
parents:
diff changeset
82 IF ( string(i_high:i_high)==' '.OR.string(i_high:i_high)=='^'.OR.&
kono
parents:
diff changeset
83 string(i_high:i_high)=='*'.OR.string(i_high:i_high)=='/') EXIT
kono
parents:
diff changeset
84 i_high=i_high+1
kono
parents:
diff changeset
85 END DO
kono
parents:
diff changeset
86 IF (i_high<i_low.OR.i_low>len_string) EXIT
kono
parents:
diff changeset
87
kono
parents:
diff changeset
88 IF (i_high<=len_string) THEN
kono
parents:
diff changeset
89 IF (string(i_low:i_high)=='^') THEN
kono
parents:
diff changeset
90 i_low=i_high+1
kono
parents:
diff changeset
91 DO WHILE(i_low<=len_string)
kono
parents:
diff changeset
92 IF (string(i_low:i_low)/=' ') EXIT
kono
parents:
diff changeset
93 i_low=i_low+1
kono
parents:
diff changeset
94 END DO
kono
parents:
diff changeset
95 i_high=i_low
kono
parents:
diff changeset
96 DO WHILE(i_high<=len_string)
kono
parents:
diff changeset
97 SELECT CASE(string(i_high:i_high))
kono
parents:
diff changeset
98 CASE('+','-','0','1','2','3','4','5','6','7','8','9')
kono
parents:
diff changeset
99 i_high=i_high+1
kono
parents:
diff changeset
100 CASE default
kono
parents:
diff changeset
101 EXIT
kono
parents:
diff changeset
102 END SELECT
kono
parents:
diff changeset
103 END DO
kono
parents:
diff changeset
104 IF (i_high<=i_low.OR.i_low>len_string) THEN
kono
parents:
diff changeset
105 write(6,*) "BUG : XXX"//string//"XXX integer expected"
kono
parents:
diff changeset
106 STOP 1
kono
parents:
diff changeset
107 EXIT
kono
parents:
diff changeset
108 END IF
kono
parents:
diff changeset
109 END IF
kono
parents:
diff changeset
110 ENDIF
kono
parents:
diff changeset
111 END DO
kono
parents:
diff changeset
112 END SUBROUTINE cp_unit_create
kono
parents:
diff changeset
113
kono
parents:
diff changeset
114 END MODULE cp_units
kono
parents:
diff changeset
115
kono
parents:
diff changeset
116 USE cp_units
kono
parents:
diff changeset
117 CALL cp_unit_create("fs^-1")
kono
parents:
diff changeset
118 END