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