OSDN Git Service

a0f5fd17544e6c0f9330daacad8955b748e0305d
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g77.f-torture / compile / 19990826-3.f
1 * Date: Thu, 19 Aug 1999 10:02:32 +0200
2 * From: Frederic Devernay <devernay@istar.fr>
3 * Organization: ISTAR
4 * X-Accept-Language: French, fr, en
5 * To: gcc-bugs@gcc.gnu.org
6 * Subject: g77 2.95 bug (Internal compiler error in `final_scan_insn')
7 * X-UIDL: 08443f5c374ffa382a05573281482f4f
8
9 * Here's a bug that happens only when I compile with -O (disappears with
10 * -O2)
11
12 * > g77 -v --save-temps -O -c  pcapop.f
13 * g77 version 2.95 19990728 (release) (from FSF-g77 version 0.5.25
14 * 19990728 (release))
15 * Reading specs from
16 * /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95/specs
17 * gcc version 2.95 19990728 (release)
18 *  /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95/f771 pcapop.f -quiet
19 * -dumpbase pcapop.f -O -version -fversion -o pcapop.s
20 * GNU F77 version 2.95 19990728 (release) (sparc-sun-solaris2.6) compiled
21 * by GNU C version 2.95 19990728 (release).
22 * GNU Fortran Front End version 0.5.25 19990728 (release)
23 * pcapop.f: In subroutine `pcapop':
24 * pcapop.f:291: Internal compiler error in `final_scan_insn', at
25 * final.c:2920
26 * Please submit a full bug report.
27 * See <URL:http://egcs.cygnus.com/faq.html#bugreport> for instructions.
28
29 C* PCAPOP
30         SUBROUTINE PCAPOP(M1,M2,L1,L2,NMEM,N1,N2,IB,IBB,K3,TF,TS,TC,TTO)
31         DIMENSION NVA(6),C(6),I(6)
32 C
33 C CALCUL DES PARAMETRES OPTIMAUX N1 N2 IB IBB
34 C
35         TACC=.035
36         TTRANS=.000004
37         RAD=.000001
38         RMI=.000001
39         RMU=.0000015
40         RDI=.000003
41         RTE=.000003
42         REQ=.000005
43         VY1=3*RTE+RDI+8*REQ+3*(RAD+RMI+RMU)
44         VY2=REQ+2*RAD
45         AR2=M2*(2*(REQ+RMI)+3*RMU+M1*(2*RAD+REQ))
46 C     VARIATION DE L1,L2,
47 C
48         TTOTOP=1.E+10
49         N1CO=0
50         N2CO=0
51         IBCO=0
52         IBBCO=0
53         K3CO=0
54         TESOP=0.
55         TCOP=0.
56         TFOP=0.
57          INUN=7
58          INDE=7
59          IF(M1.LT.128)INUN=6
60          IF(M1.LT.64)INUN=5
61          IF(M1.LT.32)INUN=4
62          IF(M2.LT.128)INDE=6
63          IF(M2.LT.64)INDE=5
64          IF(M2.LT.32)INDE=4
65         DO 3 NUN =3,INUN
66         DO 3 NDE=3,INDE
67         N10=2**NUN
68         N20=2**NDE
69         NDIF=(N10-N20)
70         NDIF=IABS(NDIF)
71 C POUR AVOIR CES RESULTATS FAIRE TOURNER LE PROGRAMME VEFFT1
72          TCFFTU=0.
73         IF(N10.EQ.128.AND.N20.EQ.128)TCFFTU=3.35
74         IF(N10.EQ.64.AND.N20.EQ.64)TCFFTU=.70
75         IF(N10.EQ.32.AND.N20.EQ.32)TCFFTU=.138
76         IF(N10.EQ.16.AND.N20.EQ.16)TCFFTU=.0332
77         IF(N10.EQ.8.AND.N20.EQ.8)TCFFTU=.00688
78         IF(NDIF.EQ.64)TCFFTU=1.566
79         IF(NDIF.EQ.96)TCFFTU=.709
80         IF(NDIF.EQ.112)TCFFTU=.349
81         IF(NDIF.EQ.120)TCFFTU=.160
82         IF(NDIF.EQ.32)TCFFTU=.315
83         IF(NDIF.EQ.48)TCFFTU=.154
84         IF(NDIF.EQ.56)TCFFTU=.07
85         IF(NDIF.EQ.16)TCFFTU=.067
86         IF(NDIF.EQ.24)TCFFTU=.030
87         IF(NDIF.EQ.8)TCFFTU=.016
88         N30=N10-L1+1
89         N40=N20-L2+1
90         WW=VY1+N30*VY2
91         NDOU=2*N10*N20
92         IF((N10.LT.L1).OR.(N20.LT.L2)) GOTO 3
93         NB=NMEM-NDOU-N20*(L1-1)
94         NVC=2*N10*(N20-1)+M1
95         IF(NB.LT.(NVC)) GOTO 3
96         CALL VALENT(M1,N30,K1)
97         CALL VALENT(M2,N40,K2)
98         IS=K1/2
99         IF((2*IS).NE.K1)K1=K1+1
100             TFF=TCFFTU*K1*K2
101         CALL VALENT(M2,N40,JOFI)
102         IF(NB.GE.(K1*N20*N30+2*N20*(L1-1))) GOTO 4
103         TIOOP=1.E+10
104         IC=1
105 18    IB1=2*IC
106         MAX=(NB-2*N20*(L1-1))/(N20*N30)
107         IN=MAX/2
108         IF(MAX.NE.2*IN) MAX=MAX-1
109         K3=K1/IB1
110         IBB1=K1-K3*IB1
111         IOFI=M1/(IB1*N30)
112         IRZ=0
113         IF(IOFI*IB1*N30.EQ.M1) GOTO1234
114         IRZ=1
115         IOFI=IOFI+1
116         IF(IBB1.EQ.0) GOTO 1234
117         IF(M1.EQ.((IOFI-1)*IB1*N30+IBB1*N30)) GOTO 1233
118         IRZ=2
119         GOTO 1234
120 1233  IRZ=3
121 1234  IBX1=IBB1
122         IF(IBX1.EQ.0)IBX1=IB1
123         AR1=M2*(2*(RAD+RMI+RMU+REQ)+(M1-(IOFI-1)*IB1*N30)*2*(REQ+RAD))
124      %+M2*(3*(REQ+RMU+RAD)+4*RMI+(M1-(IOFI-1)*IB1*N30)*(2*RAD+REQ)
125      %+(IOFI-1)*IB1*N30*(2*RMI+REQ+RAD))
126         AR5=(JOFI-1)*(N20-L2)*(M1-(IOFI-1)*IB1*N30)*(2*(RAD+RMU)+REQ)
127      %*IOFI+(M2-(JOFI-1)*N40+L2-2)*(M1-(IOFI-1)*IB1*N30)*(2*(RAD+RMU
128      %)+REQ)*IOFI
129         WQ=((IOFI-1)*IB1+IBX1)*JOFI*WW
130         AT1=N20*WQ
131         AT2=N40*WQ
132         QW=JOFI*(VY1+VY2*IB1*N30)
133         AT3=IOFI*N40*QW
134         AT4=(IOFI-1)*N40*QW
135         AT5=JOFI*((IOFI-1)*N40*(IB1/IBX1)*(VY1+IBX1*N30*VY2)
136      %+N40*((IB1/IBX1)*(IOFI-1)+1)*(VY1+IBX1*N30*VY2))
137         AT6=JOFI*((IOFI-1)*N40*(IB1/2)*(VY1+2*N30*VY2)+N40*(
138      %IB1*(IOFI-1)/2+IBX1/2)*(VY1+2*N30*VY2))
139         T1=JOFI*N20*(L1-1)*REQ
140         T2=M1*(L2-1)*REQ
141         T3=JOFI*N20*IBX1*N30*(RAD+REQ)
142         T4=JOFI*((IOFI-1)*IB1*N30*N20*(2*RMI+REQ)+IBX1*N30*N20*(2*RMI+R
143      %EQ))
144         T5=JOFI*((IOFI-1)*IB1/2+IBX1/2)*N20*N30*(2*RAD+REQ)
145         T6=2*JOFI*(((IOFI-1)*IB1+IBX1)*N20)*((5*(RMI+RMU)+4*RAD
146      %)+(L1-1)*(2*RAD+REQ)+N30*(2*RAD+REQ))
147         T7=JOFI*2*((IOFI-1)*IB1+IBX1)*(L1-1)*(2*RAD+REQ)
148         T8=JOFI*N10*N20*((IOFI-1)*IB1/2+IBX1/2)*(3*REQ+9*RAD+4*RMU+RMI)
149         T9=N10*N20*JOFI*((IOFI-1)*IB1/2+IBX1/2)*(REQ+RMI)+M1*M2*(REQ+R
150      %DI+2*RAD)
151         T10=JOFI*((IOFI-1)*IB1/2+IBX1/2)*2*(3*RMU+2*(RMI+RAD)+N40*(3*RMI
152      %+4*RMU+3*(RAD+REQ)+N30*(2*RAD+REQ)))
153         POI=JOFI
154         IF(POI.LE.2)POI=2
155         TNRAN=(N40+(POI-2)*N20+(M2-(JOFI-1)*N40+L2-1))*(RMI+RMU+RAD
156      %+REQ+N30*(2*RAD+2*REQ)*(IB1*(IOFI-1)+IBX1))
157         IF(TNRAN.LT.0.)TNRAN=0.
158         TCPU=T1+T2+T3+T4+T5+T6+T7+T8+T9+T10+TNRAN
159         NVA(1)=N40
160         NVA(2)=N40
161         NVA(3)=N20
162         NVA(4)=N20
163         NVA(5)=M2-(JOFI-1)*N40
164         NVA(6)=NVA(5)
165         C(1)=FLOAT(IB1*N30)/FLOAT(M1)
166         C(2)=FLOAT(M1-(IOFI-1)*IB1*N30)/FLOAT(M1)
167         C(3)=C(1)
168         C(4)=C(2)
169         C(5)=C(1)
170         C(6)=C(2)
171         K=1
172         P1=FLOAT(NB)/FLOAT(M1)
173 10    IP1=P1
174         I(K)=1
175         IF(IP1.GE.NVA(K)) GOTO 7
176         P2=P1
177         IP2=P2
178 8     P2=P2-FLOAT(IP2)*C(K)
179         IP2=P2
180         IF(IP2.EQ.0) GOTO 3
181         IP1=IP1+IP2
182         I(K)=I(K)+1
183         IF(IP1.GE.NVA(K))GOTO 7
184         GOTO 8
185 7     IF(K.EQ.6) GOTO 11
186         K=K+1
187         GOTO 10
188 11    IP1=0
189         IP2=0
190         IP3=0
191         POFI=JOFI
192         IF(POFI.LE.2)POFI=2
193         TIOL=(I(2)+(IOFI-1)*I(1)+(POFI-2)*(IOFI-1)*I(3)+(POFI-
194      %2)*I(4)+(IOFI-1)*I(5)+I(6))*TACC+(IOFI*M1*N40+(POFI-2)*IOFI*
195      %M1*N20+(M2-(JOFI-1)*N40+L2-1)*M1*IOFI)*TTRANS
196         IF(IBB1.EQ.0) GOTO 33
197         IF(IB1.EQ.IBB1) GOTO 33
198         IF(IBB1.EQ.2)GOTO 34
199         IP3=1
200         INL=NMEM/((IOFI-1)*IB1*N30+IBB1*N30)
201 55    IF(INL.GT.N40)INL=N40
202         GOTO 35
203 33    IF(IB1.GT.2) GOTO 36
204         IF((M1-(IOFI-1)*IB1*N30).GE.N30) GOTO 36
205 34    IP1=1
206         INL=NMEM/(2*M1-(IOFI-1)*IB1*N30)
207         GOTO 55
208 36    IP2=1
209         INL=NMEM/(IOFI*IB1*N30)
210         IF(INL.GT.N40)INL=N40
211 35    CALL VALENT(N40,INL,KN1)
212         CALL VALENT(M2-(JOFI-1)*N40,INL,KN2)
213         CALL VALENT(INL*IBB1,IB1,KN3)
214         CALL VALENT((N40-(KN1-1)*INL)*IBB1,IB1,KN4)
215         IF((IP1+IP2+IP3).NE.1) CALL ERMESF(14)
216         TIO1=0.
217         IF(IP3.EQ.1)TIO1=N30*M2*TTRANS*(IB1*(IOFI-1)+IBB1)
218         IF(IP1.EQ.1)TIO1=M1*M2*TTRANS
219         IF(IP2.EQ.1) TIO1=(IB1*N30*M2*IOFI*TTRANS)
220         TTIO=2.*TIO1+(KN1*IOFI*(JOFI-1)+KN2*IOFI+(KN1-1)*(
221      %JOFI-1)+IOFI*(JOFI-1)+KN2-1.+IOFI+(KN1*(JOFI-1)+KN2))*TACC
222      %+M1*M2*TTRANS+TIOL
223         IF((IP1.EQ.1).AND.(IRZ.EQ.0))TCPU=TCPU+AT1+AT2+AT3
224         IF((IP1.EQ.1).AND.(IRZ.NE.0))TCPU=TCPU+AT1+AT2+AT4+AR1
225         IF((IP2.EQ.1).AND.(IRZ.EQ.0))TCPU=TCPU+AT1+AT2+AT3
226         IF((IP2.EQ.1).AND.(IRZ.NE.0))TCPU=TCPU+AT1+AT2+AT3+AR2
227         IFOIS=IB1/IBX1
228         IF((IP3.EQ.1).AND.(IFOIS*IBX1.EQ.IB1))TCPU=TCPU+AT1+AT2+AT5+AR2
229         IF((IP3.EQ.1).AND.(IFOIS*IBX1.NE.IB1))TCPU=TCPU+AT1+AT2+AT6+AR2
230         IF((IP1.EQ.1).AND.(IRZ.EQ.1))TCPU=TCPU+AR5
231         IF((IP1.EQ.1).AND.(IRZ.EQ.2))TCPU=TCPU+AR5
232         TTIOG=TTIO+TCPU
233         IF(TTIOG.LE.0.) GOTO 99
234         IF(TTIOG.GE.TIOOP) GOTO 99
235         IBOP=IB1
236         IBBOP=IBB1
237         K3OP=K3
238         TIOOP=TTIOG
239         TIOOP1=TTIO
240         TIOOP2=TCPU
241 99    IF(IB1.GE.MAX)GOTO17
242         IC=IC+1
243         GOTO 18
244 4     T1=JOFI*N20*(L1-1)*REQ
245         T2=M1*(L2-1)*REQ
246         T3=JOFI*N20*N30*(RAD+REQ)*K1
247         T4=JOFI*(K1*N30*N20*(2*RMI+REQ))
248         T5=JOFI*N20*N30*(2*RAD+REQ)*K1/2
249         T6=2*JOFI*(K1*N20)*((5*RMI+RMU)+4*RAD+(L1-1)*(2*RAD+REQ)+N30*2*
250      %RAD+REQ)
251         T7=JOFI*2*K1*(L1-1)*(2*RAD+REQ)
252         T9=JOFI*N10*N20*K1*(REQ+RMI)/2+M1*M2*(REQ+RDI+2*RAD)
253         T8=JOFI*N10*N20*K1*(3*REQ+9*RAD+4*RMU+RMI)/2
254         T10=JOFI*K1*(3*RMU+2*(RMI+RAD)+N40*(3*RMI
255      %+4*RMU+3*(RAD+REQ)+N30*(2*RAD+REQ)))
256         PIO=JOFI
257         IF(PIO.LE.2)PIO=2
258         TNR=(N40+(PIO-2)*N20+(M2-(JOFI-1)*N40+L2-1))*(RMU+RMI+RAD+REQ+
259      %N30*(2*RAD+2*REQ)*K1)
260         IF(TNR.LE.0.)TNR=0.
261         BT1=JOFI*N20*WW*K1
262         BT2=JOFI*N40*WW*K1
263         BT3=JOFI*N40*(VY1+K1*N30*VY2)
264         BR1=M2*(2*(RAD+RMI+RMU+REQ)+(M1*2*(REQ+RAD)))+M2*(3*(
265      $REQ+RAD+RMU)+4*(RMI)+M1*(2*(RAD)+REQ))
266         BR2=M2*(2*(REQ+RMI)+3*RMU+M1*(2*RAD+REQ))
267         TCPU=T1+T2+T3+T4+T5+T6+T7+T8+T9+T10
268         TCPU=TCPU+TNR+BT1+BT2
269         LIOF=M1/(N30)
270         IRZ=0
271         IF(LIOF*N30.EQ.M1) GOTO 2344
272         IRZ=1
273 2344  IF(IRZ.EQ.0)TCPU=TCPU+BT3
274         IF(IRZ.NE.0)TCPU=TCPU+BT3+BR2
275         TIOOP=2.*FLOAT(M1)*FLOAT(M2)*TTRANS+2.*FLOAT(K2)*TACC+TCPU
276         IBOP=1
277         IBBOP=0
278         K3OP=1
279         TIOOP2=TCPU
280         TIOOP1=TIOOP-TCPU
281 17    TTOT=TIOOP+TFF
282         IF(TTOT.LE.0.) GOTO 3
283         IF(TTOT.GE.TTOTOP)GOTO3
284         N1CO=N10
285         N2CO=N20
286         IBCO=IBOP
287         IBBCO=IBBOP
288         K3CO=K3OP
289         TTOTOP=TTOT
290         TESOP=TIOOP1
291         TCOP=TIOOP2
292         TFOP=TFF
293 3     CONTINUE
294  
295 C
296         N1=N1CO
297         N2=N2CO
298         TTO=TTOTOP
299         IB=IBCO
300         IBB=IBBCO
301         K3=K3CO
302         TC=TCOP
303         TS=TESOP
304         TF=TFOP
305            TT=TCOP+TFOP
306           TWER=TTO-TT
307         IF(N1.EQ.0.OR.N2.EQ.0) CALL OUTSTR(0,'PAS DE PLACE MEMOIRE SUFFISA
308      $NTE POUR UNE MISE EN OEUVRE PAR BLOCS$')
309          IF(IB.NE.1)RETURN
310          IHJ=(M1/(N1-L1+1))
311          IF(IHJ*(N1-L1+1).NE.M1)IHJ=IHJ+1
312           IHJ1=IHJ/2
313          IF(IHJ1*2.NE.IHJ)GOTO7778
314          IB=IHJ
315          IBB=0
316             RETURN
317 7778   IB=IHJ+1
318          IBB=0
319            RETURN
320          END