aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/g77/19990826-3.f
blob: aeaf443999687879b78636aac4366250a3f7d4c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
c { dg-do compile }
* Date: Thu, 19 Aug 1999 10:02:32 +0200
* From: Frederic Devernay <devernay@istar.fr>
* Organization: ISTAR
* X-Accept-Language: French, fr, en
* To: gcc-bugs@gcc.gnu.org
* Subject: g77 2.95 bug (Internal compiler error in `final_scan_insn')
* X-UIDL: 08443f5c374ffa382a05573281482f4f

* Here's a bug that happens only when I compile with -O (disappears with
* -O2)

* > g77 -v --save-temps -O -c  pcapop.f
* g77 version 2.95 19990728 (release) (from FSF-g77 version 0.5.25
* 19990728 (release))
* Reading specs from
* /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95/specs
* gcc version 2.95 19990728 (release)
*  /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95/f771 pcapop.f -quiet
* -dumpbase pcapop.f -O -version -fversion -o pcapop.s
* GNU F77 version 2.95 19990728 (release) (sparc-sun-solaris2.6) compiled
* by GNU C version 2.95 19990728 (release).
* GNU Fortran Front End version 0.5.25 19990728 (release)
* pcapop.f: In subroutine `pcapop':
* pcapop.f:291: Internal compiler error in `final_scan_insn', at
* final.c:2920
* Please submit a full bug report.
* See <URL:http://egcs.cygnus.com/faq.html#bugreport> for instructions.

C* PCAPOP
	SUBROUTINE PCAPOP(M1,M2,L1,L2,NMEM,N1,N2,IB,IBB,K3,TF,TS,TC,TTO)
	DIMENSION NVA(6),C(6),I(6)
C
C CALCUL DES PARAMETRES OPTIMAUX N1 N2 IB IBB
C
	TACC=.035
	TTRANS=.000004
	RAD=.000001
	RMI=.000001
	RMU=.0000015
	RDI=.000003
	RTE=.000003
	REQ=.000005
	VY1=3*RTE+RDI+8*REQ+3*(RAD+RMI+RMU)
	VY2=REQ+2*RAD
	AR2=M2*(2*(REQ+RMI)+3*RMU+M1*(2*RAD+REQ))
C     VARIATION DE L1,L2,
C
	TTOTOP=1.E+10
	N1CO=0
	N2CO=0
	IBCO=0
	IBBCO=0
	K3CO=0
	TESOP=0.
	TCOP=0.
	TFOP=0.
	 INUN=7
	 INDE=7
	 IF(M1.LT.128)INUN=6
	 IF(M1.LT.64)INUN=5
	 IF(M1.LT.32)INUN=4
	 IF(M2.LT.128)INDE=6
	 IF(M2.LT.64)INDE=5
	 IF(M2.LT.32)INDE=4
	DO 3 NUN =3,INUN
	DO 3 NDE=3,INDE
	N10=2**NUN
	N20=2**NDE
	NDIF=(N10-N20)
	NDIF=IABS(NDIF)
C POUR AVOIR CES RESULTATS FAIRE TOURNER LE PROGRAMME VEFFT1
	 TCFFTU=0.
	IF(N10.EQ.128.AND.N20.EQ.128)TCFFTU=3.35
	IF(N10.EQ.64.AND.N20.EQ.64)TCFFTU=.70
	IF(N10.EQ.32.AND.N20.EQ.32)TCFFTU=.138
	IF(N10.EQ.16.AND.N20.EQ.16)TCFFTU=.0332
	IF(N10.EQ.8.AND.N20.EQ.8)TCFFTU=.00688
	IF(NDIF.EQ.64)TCFFTU=1.566
	IF(NDIF.EQ.96)TCFFTU=.709
	IF(NDIF.EQ.112)TCFFTU=.349
	IF(NDIF.EQ.120)TCFFTU=.160
	IF(NDIF.EQ.32)TCFFTU=.315
	IF(NDIF.EQ.48)TCFFTU=.154
	IF(NDIF.EQ.56)TCFFTU=.07
	IF(NDIF.EQ.16)TCFFTU=.067
	IF(NDIF.EQ.24)TCFFTU=.030
	IF(NDIF.EQ.8)TCFFTU=.016
	N30=N10-L1+1
	N40=N20-L2+1
	WW=VY1+N30*VY2
	NDOU=2*N10*N20
	IF((N10.LT.L1).OR.(N20.LT.L2)) GOTO 3
	NB=NMEM-NDOU-N20*(L1-1)
	NVC=2*N10*(N20-1)+M1
	IF(NB.LT.(NVC)) GOTO 3
	CALL VALENT(M1,N30,K1)
	CALL VALENT(M2,N40,K2)
	IS=K1/2
	IF((2*IS).NE.K1)K1=K1+1
	    TFF=TCFFTU*K1*K2
	CALL VALENT(M2,N40,JOFI)
	IF(NB.GE.(K1*N20*N30+2*N20*(L1-1))) GOTO 4
	TIOOP=1.E+10
	IC=1
18    IB1=2*IC
	MAX=(NB-2*N20*(L1-1))/(N20*N30)
	IN=MAX/2
	IF(MAX.NE.2*IN) MAX=MAX-1
	K3=K1/IB1
	IBB1=K1-K3*IB1
	IOFI=M1/(IB1*N30)
	IRZ=0
	IF(IOFI*IB1*N30.EQ.M1) GOTO1234
	IRZ=1
	IOFI=IOFI+1
	IF(IBB1.EQ.0) GOTO 1234
	IF(M1.EQ.((IOFI-1)*IB1*N30+IBB1*N30)) GOTO 1233
	IRZ=2
	GOTO 1234
1233  IRZ=3
1234  IBX1=IBB1
	IF(IBX1.EQ.0)IBX1=IB1
	AR1=M2*(2*(RAD+RMI+RMU+REQ)+(M1-(IOFI-1)*IB1*N30)*2*(REQ+RAD))
     %+M2*(3*(REQ+RMU+RAD)+4*RMI+(M1-(IOFI-1)*IB1*N30)*(2*RAD+REQ)
     %+(IOFI-1)*IB1*N30*(2*RMI+REQ+RAD))
	AR5=(JOFI-1)*(N20-L2)*(M1-(IOFI-1)*IB1*N30)*(2*(RAD+RMU)+REQ)
     %*IOFI+(M2-(JOFI-1)*N40+L2-2)*(M1-(IOFI-1)*IB1*N30)*(2*(RAD+RMU
     %)+REQ)*IOFI
	WQ=((IOFI-1)*IB1+IBX1)*JOFI*WW
	AT1=N20*WQ
	AT2=N40*WQ
	QW=JOFI*(VY1+VY2*IB1*N30)
	AT3=IOFI*N40*QW
	AT4=(IOFI-1)*N40*QW
	AT5=JOFI*((IOFI-1)*N40*(IB1/IBX1)*(VY1+IBX1*N30*VY2)
     %+N40*((IB1/IBX1)*(IOFI-1)+1)*(VY1+IBX1*N30*VY2))
	AT6=JOFI*((IOFI-1)*N40*(IB1/2)*(VY1+2*N30*VY2)+N40*(
     %IB1*(IOFI-1)/2+IBX1/2)*(VY1+2*N30*VY2))
	T1=JOFI*N20*(L1-1)*REQ
	T2=M1*(L2-1)*REQ
	T3=JOFI*N20*IBX1*N30*(RAD+REQ)
	T4=JOFI*((IOFI-1)*IB1*N30*N20*(2*RMI+REQ)+IBX1*N30*N20*(2*RMI+R
     %EQ))
	T5=JOFI*((IOFI-1)*IB1/2+IBX1/2)*N20*N30*(2*RAD+REQ)
	T6=2*JOFI*(((IOFI-1)*IB1+IBX1)*N20)*((5*(RMI+RMU)+4*RAD
     %)+(L1-1)*(2*RAD+REQ)+N30*(2*RAD+REQ))
	T7=JOFI*2*((IOFI-1)*IB1+IBX1)*(L1-1)*(2*RAD+REQ)
	T8=JOFI*N10*N20*((IOFI-1)*IB1/2+IBX1/2)*(3*REQ+9*RAD+4*RMU+RMI)
	T9=N10*N20*JOFI*((IOFI-1)*IB1/2+IBX1/2)*(REQ+RMI)+M1*M2*(REQ+R
     %DI+2*RAD)
	T10=JOFI*((IOFI-1)*IB1/2+IBX1/2)*2*(3*RMU+2*(RMI+RAD)+N40*(3*RMI
     %+4*RMU+3*(RAD+REQ)+N30*(2*RAD+REQ)))
	POI=JOFI
	IF(POI.LE.2)POI=2
	TNRAN=(N40+(POI-2)*N20+(M2-(JOFI-1)*N40+L2-1))*(RMI+RMU+RAD
     %+REQ+N30*(2*RAD+2*REQ)*(IB1*(IOFI-1)+IBX1))
	IF(TNRAN.LT.0.)TNRAN=0.
	TCPU=T1+T2+T3+T4+T5+T6+T7+T8+T9+T10+TNRAN
	NVA(1)=N40
	NVA(2)=N40
	NVA(3)=N20
	NVA(4)=N20
	NVA(5)=M2-(JOFI-1)*N40
	NVA(6)=NVA(5)
	C(1)=FLOAT(IB1*N30)/FLOAT(M1)
	C(2)=FLOAT(M1-(IOFI-1)*IB1*N30)/FLOAT(M1)
	C(3)=C(1)
	C(4)=C(2)
	C(5)=C(1)
	C(6)=C(2)
	K=1
	P1=FLOAT(NB)/FLOAT(M1)
10    IP1=P1
	I(K)=1
	IF(IP1.GE.NVA(K)) GOTO 7
	P2=P1
	IP2=P2
8     P2=P2-FLOAT(IP2)*C(K)
	IP2=P2
	IF(IP2.EQ.0) GOTO 3
	IP1=IP1+IP2
	I(K)=I(K)+1
	IF(IP1.GE.NVA(K))GOTO 7
	GOTO 8
7     IF(K.EQ.6) GOTO 11
	K=K+1
	GOTO 10
11    IP1=0
	IP2=0
	IP3=0
	POFI=JOFI
	IF(POFI.LE.2)POFI=2
	TIOL=(I(2)+(IOFI-1)*I(1)+(POFI-2)*(IOFI-1)*I(3)+(POFI-
     %2)*I(4)+(IOFI-1)*I(5)+I(6))*TACC+(IOFI*M1*N40+(POFI-2)*IOFI*
     %M1*N20+(M2-(JOFI-1)*N40+L2-1)*M1*IOFI)*TTRANS
	IF(IBB1.EQ.0) GOTO 33
	IF(IB1.EQ.IBB1) GOTO 33
	IF(IBB1.EQ.2)GOTO 34
	IP3=1
	INL=NMEM/((IOFI-1)*IB1*N30+IBB1*N30)
55    IF(INL.GT.N40)INL=N40
	GOTO 35
33    IF(IB1.GT.2) GOTO 36
	IF((M1-(IOFI-1)*IB1*N30).GE.N30) GOTO 36
34    IP1=1
	INL=NMEM/(2*M1-(IOFI-1)*IB1*N30)
	GOTO 55
36    IP2=1
	INL=NMEM/(IOFI*IB1*N30)
	IF(INL.GT.N40)INL=N40
35    CALL VALENT(N40,INL,KN1)
	CALL VALENT(M2-(JOFI-1)*N40,INL,KN2)
	CALL VALENT(INL*IBB1,IB1,KN3)
	CALL VALENT((N40-(KN1-1)*INL)*IBB1,IB1,KN4)
	IF((IP1+IP2+IP3).NE.1) CALL ERMESF(14)
	TIO1=0.
	IF(IP3.EQ.1)TIO1=N30*M2*TTRANS*(IB1*(IOFI-1)+IBB1)
	IF(IP1.EQ.1)TIO1=M1*M2*TTRANS
	IF(IP2.EQ.1) TIO1=(IB1*N30*M2*IOFI*TTRANS)
	TTIO=2.*TIO1+(KN1*IOFI*(JOFI-1)+KN2*IOFI+(KN1-1)*(
     %JOFI-1)+IOFI*(JOFI-1)+KN2-1.+IOFI+(KN1*(JOFI-1)+KN2))*TACC
     %+M1*M2*TTRANS+TIOL
	IF((IP1.EQ.1).AND.(IRZ.EQ.0))TCPU=TCPU+AT1+AT2+AT3
	IF((IP1.EQ.1).AND.(IRZ.NE.0))TCPU=TCPU+AT1+AT2+AT4+AR1
	IF((IP2.EQ.1).AND.(IRZ.EQ.0))TCPU=TCPU+AT1+AT2+AT3
	IF((IP2.EQ.1).AND.(IRZ.NE.0))TCPU=TCPU+AT1+AT2+AT3+AR2
	IFOIS=IB1/IBX1
	IF((IP3.EQ.1).AND.(IFOIS*IBX1.EQ.IB1))TCPU=TCPU+AT1+AT2+AT5+AR2
	IF((IP3.EQ.1).AND.(IFOIS*IBX1.NE.IB1))TCPU=TCPU+AT1+AT2+AT6+AR2
	IF((IP1.EQ.1).AND.(IRZ.EQ.1))TCPU=TCPU+AR5
	IF((IP1.EQ.1).AND.(IRZ.EQ.2))TCPU=TCPU+AR5
	TTIOG=TTIO+TCPU
	IF(TTIOG.LE.0.) GOTO 99
	IF(TTIOG.GE.TIOOP) GOTO 99
	IBOP=IB1
	IBBOP=IBB1
	K3OP=K3
	TIOOP=TTIOG
	TIOOP1=TTIO
	TIOOP2=TCPU
99    IF(IB1.GE.MAX)GOTO17
	IC=IC+1
	GOTO 18
4     T1=JOFI*N20*(L1-1)*REQ
	T2=M1*(L2-1)*REQ
	T3=JOFI*N20*N30*(RAD+REQ)*K1
	T4=JOFI*(K1*N30*N20*(2*RMI+REQ))
	T5=JOFI*N20*N30*(2*RAD+REQ)*K1/2
	T6=2*JOFI*(K1*N20)*((5*RMI+RMU)+4*RAD+(L1-1)*(2*RAD+REQ)+N30*2*
     %RAD+REQ)
	T7=JOFI*2*K1*(L1-1)*(2*RAD+REQ)
	T9=JOFI*N10*N20*K1*(REQ+RMI)/2+M1*M2*(REQ+RDI+2*RAD)
	T8=JOFI*N10*N20*K1*(3*REQ+9*RAD+4*RMU+RMI)/2
	T10=JOFI*K1*(3*RMU+2*(RMI+RAD)+N40*(3*RMI
     %+4*RMU+3*(RAD+REQ)+N30*(2*RAD+REQ)))
	PIO=JOFI
	IF(PIO.LE.2)PIO=2
	TNR=(N40+(PIO-2)*N20+(M2-(JOFI-1)*N40+L2-1))*(RMU+RMI+RAD+REQ+
     %N30*(2*RAD+2*REQ)*K1)
	IF(TNR.LE.0.)TNR=0.
	BT1=JOFI*N20*WW*K1
	BT2=JOFI*N40*WW*K1
	BT3=JOFI*N40*(VY1+K1*N30*VY2)
	BR1=M2*(2*(RAD+RMI+RMU+REQ)+(M1*2*(REQ+RAD)))+M2*(3*(
     $REQ+RAD+RMU)+4*(RMI)+M1*(2*(RAD)+REQ))
	BR2=M2*(2*(REQ+RMI)+3*RMU+M1*(2*RAD+REQ))
	TCPU=T1+T2+T3+T4+T5+T6+T7+T8+T9+T10
	TCPU=TCPU+TNR+BT1+BT2
	LIOF=M1/(N30)
	IRZ=0
	IF(LIOF*N30.EQ.M1) GOTO 2344
	IRZ=1
2344  IF(IRZ.EQ.0)TCPU=TCPU+BT3
	IF(IRZ.NE.0)TCPU=TCPU+BT3+BR2
	TIOOP=2.*FLOAT(M1)*FLOAT(M2)*TTRANS+2.*FLOAT(K2)*TACC+TCPU
	IBOP=1
	IBBOP=0
	K3OP=1
	TIOOP2=TCPU
	TIOOP1=TIOOP-TCPU
17    TTOT=TIOOP+TFF
	IF(TTOT.LE.0.) GOTO 3
	IF(TTOT.GE.TTOTOP)GOTO3
	N1CO=N10
	N2CO=N20
	IBCO=IBOP
	IBBCO=IBBOP
	K3CO=K3OP
	TTOTOP=TTOT
	TESOP=TIOOP1
	TCOP=TIOOP2
	TFOP=TFF
3     CONTINUE
 
C
	N1=N1CO
	N2=N2CO
	TTO=TTOTOP
	IB=IBCO
	IBB=IBBCO
	K3=K3CO
	TC=TCOP
	TS=TESOP
	TF=TFOP
	   TT=TCOP+TFOP
	  TWER=TTO-TT
	IF(N1.EQ.0.OR.N2.EQ.0) CALL OUTSTR(0,'PAS DE PLACE MEMOIRE SUFFISA
     $NTE POUR UNE MISE EN OEUVRE PAR BLOCS$')
	 IF(IB.NE.1)RETURN
	 IHJ=(M1/(N1-L1+1))
	 IF(IHJ*(N1-L1+1).NE.M1)IHJ=IHJ+1
	  IHJ1=IHJ/2
	 IF(IHJ1*2.NE.IHJ)GOTO7778
	 IB=IHJ
	 IBB=0
	    RETURN
7778   IB=IHJ+1
	 IBB=0
	   RETURN
	 END