Bug 12032 - [new-ra] ICE in select_spill
Summary: [new-ra] ICE in select_spill
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: rtl-optimization (show other bugs)
Version: 3.3.1
: P2 normal
Target Milestone: 3.4.0
Assignee: Michael Matz
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks: 13246
  Show dependency treegraph
 
Reported: 2003-08-22 08:00 UTC by Martin Häfele
Modified: 2004-08-15 03:45 UTC (History)
1 user (show)

See Also:
Host: i386-linux
Target: i386-linux
Build:
Known to work:
Known to fail:
Last reconfirmed: 2003-08-22 11:00:42


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Häfele 2003-08-22 08:00:06 UTC
hawk:[std]> g77 -v -save-temps -w -pipe -finit-local-zero -fnew-ra -Isource/sim/
misc -D__unix__ -Isource/mod/signal/saett/  -O3 -march=pentiumpro -funroll-loops
 -malign-double -falign-functions=4 -fexpensive-optimizations -fschedule-insns2 
-ffloat-store -fomit-frame-pointer -c -o obj/intel-linux-glibc2.1/opt-dab02i.o s
ource/mod/signal/saett/dab02i.f
g77: warning: -pipe ignored because -save-temps specified
Reading specs from /usr/lib/gcc-lib/i386-linux/3.3.1/specs
Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,ob
jc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info 
--with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib -
-enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gn
u --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc 
i386-linux
Thread model: posix
gcc version 3.3.1 20030626 (Debian prerelease)
 /usr/lib/gcc-lib/i386-linux/3.3.1/f771 source/mod/signal/saett/dab02i.f -quiet 
-dumpbase dab02i.f -march=pentiumpro -malign-double -auxbase-strip obj/intel-lin
ux-glibc2.1/opt-dab02i.o -O3 -w -version -finit-local-zero -fnew-ra -funroll-loo
ps -falign-functions=4 -fexpensive-optimizations -fschedule-insns2 -ffloat-store
 -fomit-frame-pointer -Isource/sim/misc -Isource/mod/signal/saett/ -o dab02i.s
GNU F77 version 3.3.1 20030626 (Debian prerelease) (i386-linux)
        compiled by GNU C version 3.3.1 20030626 (Debian prerelease).
GGC heuristics: --param ggc-min-expand=42 --param ggc-min-heapsize=23893
source/mod/signal/saett/dab02i.f:1: internal compiler error: in select_spill, at
 ra-colorize.c:1002



---------------------
Here goes the source (I did not find a place where to upload a zipped version of it)
---------------------


        SUBROUTINE DAB02I(PLANT,VERNR,BNAME,BNR, 
     #                   X,XMIN,XMAX,XABS,CX,
     1                   CU,
     #                   PHIERR,CPHI,
     #                   NX,NU,NY,NPHI,
     #                   IOUT, CY,
     #                   RPAR,CRPAR,NRP,IPAR,CIPAR,LIPAR,NIP,CPAR,CCPAR,
     #                   NCP,RWORK,NRW,IWORK,NIW,CWORK,NCW,
     #                   ICFX,IRFX,NFX,
     #                   ICFU,IRFU,NFU,
     #                   ICB,IRB,NB,
     #                   ICBX,IRBX,NBX,
     #                   ICBU,IRBU,NBU,
     #                   IDUM1,IDUM2,IDUM3,IDUM4,IDUM5,IDUM6,IDUM7,
     #                   IDUM8,IDUM9,IDUM10,IDUM11,IDUM12,IDUM13,
     #                   IDUM14, 
     #                   MESID, MESTXT, SEVRTY) 
C
      IMPLICIT NONE
C
C***********************************************************************
C                                                  DIVA V3
C  File  :  DAB02I.FOR
C  Autor :  T.Obertopp
C  Datum :  20-September-1991
C
C  Datum     Bearbeiter    Kommentar
C  15.02.93  G. Hutzl      alternative Return-Anweisung entfernt
C                          (in der Parameterklammer und beim Ruecksprung)
C
C***********************************************************************
C<FF>
C     Aufgabe des Programms:
C     ----------------------
C
C       Initialisierung eines DIVA-Grundelement zu einen eindeutigen
C       Block in einer Anlage.
C
C***********************************************************************
C<FF>
C       Benoetigte Unterprogramme:
C
C       DSSPAT      Stoffdateninitialisierung (Belegung der Parameter-
C                   klammer siehe Programmieranleitung)
C                          
C
C***********************************************************************
C
C       Definition der Variablen    > Eingangsvariable
C                                   < Ausgangsvariable
C                                   * Ein- und Ausgangsvariable
C                                   - Groesse wird nicht benoetigt
C                                   L lokale Variable
C                                   C.Variable eines COMMON-Blocks
C
C************************************************************************
C     VARIABLE:
C--------------
      CHARACTER*(*)    BNAME
C                              > Name des Blocks in der Anlage
      CHARACTER*10     CDUM
C                              L Dummy
      CHARACTER*(*)    DNAME   
C                              L DIVA-Name des Blocks, benannte Konstante
      CHARACTER*(*)    MESTXT
C                              > Klartext oder Parameter f"ur Message
      CHARACTER*(*)    PLANT
C                              > Name der Anlage 

      INTEGER          BUFLEN
C                              l Ben"otigte L"ange von DATBUF
      INTEGER          BNR
C                              > Blocknummer; von DIVA erzeugt
      INTEGER          DNIP
C                              > Arbeitsvariable fuer IPAR
      INTEGER          IDUM1,IDUM2,IDUM3,IDUM4,IDUM5,IDUM6,IDUM7,
     #                 IDUM8,IDUM9,IDUM10,IDUM11,IDUM12,IDUM13,
     #                 IDUM14
C                              - dummy input variables, they must not be
C                                referenced within this program
      INTEGER          JDUM1,JDUM2,JDUM3,JDUM4,JDUM5,JDUM6,JDUM7,
     #                 JDUM8,JDUM9,JDUM10,JDUM11,JDUM12,JDUM13,
     #                 JDUM14,JDUM15,JDUM16,JDUM17,JDUM18,JDUM19,
     #                 JDUM20,JDUM21,JDUM22,JDUM23,JDUM24,JDUM25,
     #                 JDUM26,JDUM27,JDUM28,JDUM29,JDUM30,I
C                              - Dummy-Variablen            
      INTEGER          KEYLEN
C                              L Anzahl der Proz.gr. 
      INTEGER          MESID
C                              * Nummer der Message und des
C                                Messageformats 
      INTEGER          MAXSTA
C                              L max. Anzahl von STates in Proz.gr.
      INTEGER          MNB
C                              L Arbeitsvariable f"ur NB
      INTEGER          MNBU
C                              L Arbeitsvariable f"ur NBU
      INTEGER          MNBX
C                              L Arbeitsvariable f"ur NBX
      INTEGER          MNCP      
C                              L Arbeitsvariable f"ur NCP
      INTEGER          MNCW
C                              L Arbeitsvariable f"ur NCW        
      INTEGER          MNFU
C                              L Arbeitsvariable f"ur NFU         
      INTEGER          MNFX
C                              L Arbeitsvariable f"ur NFX       
      INTEGER          MNIP
C                              L Arbeitsvariable f"ur NIP         
      INTEGER          MNIW
C                              L Arbeitsvariable f"ur NIW        
      INTEGER          MNPHI   
C                              L Arbeitsvariable f"ur NPHI
      INTEGER          MNRP
C                              L Arbeitsvariable f"ur NRP        
      INTEGER          MNRW
      SAVE             MNRW
C                              L Arbeitsvariable f"ur NRW        
      INTEGER          MNU     
C                              L Arbeitsvariable f"ur NU
      INTEGER          MNX
C                              L Arbeitsvariable f"ur NX
      INTEGER          MNY
C                              L Arbeitsvariable f"ur NY  
      INTEGER          NB
C                              *>noch freie Länge für Matrix B
C                               <tatsächlich benötigte Länge für B
      INTEGER          NBU
C                              *>noch freie Länge für Matrix dbeta/du
C                               <tatsächlich benötigte Länge dbeta/du
      INTEGER          NBX
C                              *>noch freie Länge für Matrix dbeta/deta
C                               <tatsächlich benötigte Länge dbeta/deta
      INTEGER          NCP
C                              *>noch freie Länge für Character-Parameter
C                               <tatsächlich benötigte Anz. Char.-Par.
      INTEGER          NCW
C                              > Länge des Character-Arbeitsfeld
C                                (DARF NICHTR VERÄNDERT WERDEN!)                
      INTEGER          NFU
C                              *>noch freie Länge für Matrix df/du
C                               <tatsächlich benötigte Länge df/du
      INTEGER          NFX
C                              *>noch freie Länge für Matrix df/deta
C                               <tatsächlich benötigte Länge df/deta
      INTEGER          NIP
C                              *>noch freie Länge für Integer-Parameter
C                               <tatsächlich benötigte Anz. Integer-Par.
      INTEGER          NISP
C                              L Anzahl der Strukturparameter     
      INTEGER          NIW
C                              > Länge des Integer-Arbeitsfeld
C                                (DARF NICHTR VERÄNDERT WERDEN!)                
      INTEGER          NPHI
C                              *>noch freie Länge für Eventvektor PHI
C                               <tatsächlich benötigte Länge PHI
      INTEGER          NRP
C                              *>noch freie Länge für REAL-Parameter
C                               <tatsächlich benötigte Anz. REAL-Par.
      INTEGER          NRW
C                              > max. Länge des REAL-Arbeitsfeldes
C                                (DARF NICHTR VERÄNDERT WERDEN!)                
      INTEGER          NU
C                              *>noch freie Länge für Eingangsvektor
C                               <tatsächlich benötigte Länge Eingangsv.
      INTEGER          NX 
C                              *>noch freie Länge für Zustandsvektor
C                               <tatsächlich benötigte Länge Zustandsv.
      INTEGER          NY
C                              *>noch freie Länge für Ausgangsvektor
C                               <tatsächlich benötigte Länge Ausgangsv.
C
      INTEGER          OFFH1, OFFH2, OFFH3
C
C
      INTEGER          SEVRTY
C                              * Severitycode der Mesage und Fehlerflag
C                                f"ur die Ausf"uhrung des Programms.
C                               Bei Aufruf:
C                                = 0 normale Initialisierung
C                                < 0 nur Feldlängenübergabe; keine
C                                    "Anderung von SEVRTY!
C                               Bei R"ucksprung:
C                                = 0 Initialisierung ohne Fehler
C                                # 0 Initialisierung mit Fehler oder
C                                    Error oder SEVRTY < 0 bei Aufruf.
      INTEGER          SPACEX, SPACEY, SPACEZ
C                              L Stuetzstellenzahl 
      INTEGER          STAPPG
C                              L States pro Proz.gr.
      INTEGER          VERNR
C                              > Versionsnummer der Anlage
***********************************************************************
C    Felder:
C-----------
      CHARACTER*(*)    CCPAR(1)
C                              < Name der Character-Parameter
      CHARACTER*(*)    CIPAR(1)
C                              < Name der Integer-Parameter
      CHARACTER*(*)    CPAR(1)
C                              < Character-Parameter
      CHARACTER*(*)    CPHI(1)
C                              < Name der Eventfunktionen
      CHARACTER*(*)    CWORK(NCW)
C                              > Character-Arbeitsfeld
      CHARACTER*(*)    CRPAR(1)
C                              < Name der Real-Parameter
      CHARACTER*(*)    CU(1)
C                              < Name der Eingangsgr"o"sen
      CHARACTER*(*)    CX(1)
C                              < Name der Zustandsgr"o"sen
      CHARACTER*(*)    CY(1)
C                              < Name der Ausgangsgr"o"sen
      DOUBLE PRECISION PHIERR(1)
C                              < abs. Breite des Schaltbereichs der
C                                Eventfunktionen
      DOUBLE PRECISION RPAR(1)
C                              < Real-Parameter
      DOUBLE PRECISION RWORK(1)
C                              > Real-Arbeitsfeld
      DOUBLE PRECISION X(1)
C                              < Zustandsvektor
      DOUBLE PRECISION XABS(1)
C                              < abs. Fehler der Zustände
      DOUBLE PRECISION XMAX(1)
C                              < Maximalwert der Zustände
      DOUBLE PRECISION XMIN(1)
C                              < Minimalwert der Zustände
      INTEGER          FBLO(1)
C                              > Nr. der Gleichung in der Stoffdaten-
C                                einflussmatrix (Arbeitsfeld)
      INTEGER          ICB(1)
C                              < Spaltennr. der Elemente der Matrix B
      INTEGER          ICBU(1)
C                              < Spaltennr. der Elemente der Matrix
C                                dbeta/du
      INTEGER          ICBX(1)
C                              < Spaltennr. der Elemente der Matrix
C                                dbeta/deta
      INTEGER          ICFU(1)
C                              < Spaltennr. der Elemente der Matrix
C                                df/du
      INTEGER          ICFX(1)
C                              < Spaltennr. der Elemente der Matrix
C                                df/deta
      INTEGER          IOUT(1)
C                              < Zuordnung der Zustände zu Ausgängen
      INTEGER          IPAR(1)
C                              < Integer-Parameter
      INTEGER          IRB(1)
C                              < Zeilennr. der Elemente der Matrix B
      INTEGER          IRBU(1)
C                              < Zeilennr. der Elemente der Matrix
C                                dbeta/du
      INTEGER          IRBX(1)
C                              < Zeilennr. der Elemente der Matrix
C                                dbeta/deta
      INTEGER          IRFU(1)
C                              < Zeilennr. der Elemente der Matrix
C                                df/du
      INTEGER          IRFX(1)
C                              < Zeilennr. der Elemente der Matrix
C                                df/deta
      INTEGER          IWORK(1)
C                              > Integer-Arbeitsfeld
      LOGICAL          LIPAR(1)
C                                < .TRUE.  f"ur Strukturparameter
C                                  .FALSE. f"ur Integerparameter
C**********************************************************************
      EXTERNAL DSESLE
      INTEGER  DSESLE
C**********************************************************************
C
C  Parameter:
C------------
      PARAMETER        (DNAME='DAB02')
C
C**********************************************************************
C  >> Zuweisung f"ur ben"otigte Anzahl an Strukturparametern
C      
      NISP = 0      
C
C
C  >> Zuweisungen f"ur ben"otigte Feldl"angen
C
C   > Anlagenvektoren
C
      MNX   = 1
      MNU   = 1
      MNY   = 1
      MNPHI = 2
C
C   > Parameterfelder
C  
      MNRP = 4
      MNIP = 1
      MNCP = 0          
C
C   > Matrizen
C
      MNB  = 0
      MNBX = 0
      MNBU = 0
      MNFX = 1
      MNFU = 1
C
      MNCW = 3 + 3 + 3 + 3 * 4
C
C
      MNIW = 0
      MNRW = 0
      JDUM1 = 0
      JDUM2 = 0
      JDUM3 = 0
      JDUM4 = 0
      JDUM5 = 0
      JDUM6 = 0
      JDUM7 = 0
      JDUM8 = 0
      JDUM9 = 0
      JDUM10= 0
      JDUM11= 0
      JDUM12= 0
C
C  >> Vergleich zwischen ben"otigten und freien L"angen
C
      CALL DSEMCK (SEVRTY,BNAME,DNAME,BNR                          
     #            ,NX,NU,NY,NPHI,NRP,NIP,NCP,NRW,NIW                
     #            ,NCW,NFX,NFU,NB,NBX,NBU                           
     #            ,JDUM1,JDUM2,JDUM3,JDUM4,JDUM5                    
     #            ,MNX,MNU,MNY,MNPHI,MNRP,MNIP,MNCP,MNRW,MNIW       
     #            ,MNCW,MNFX,MNFU,MNB,MNBX,MNBU                     
     #            ,JDUM6,JDUM7,JDUM8,JDUM9,JDUM10,JDUM11,JDUM12)


C  >> Belegung des ben"otigten Platzes                       
C
      CALL DSEMST (NX,NU,NY,NPHI,NRP,NIP,NCP
     #             ,JDUM13,JDUM14,JDUM15
     #             ,NFX,NFU,NB,NBX,NBU
     #             ,JDUM16,JDUM17,JDUM18,JDUM19,JDUM20
     #             ,MNX,MNU,MNY,MNPHI,MNRP,MNIP,MNCP
     #             ,JDUM21,JDUM22,JDUM23
     #             ,MNFX,MNFU,MNB,MNBX,MNBU
     #             ,JDUM24,JDUM25,JDUM26,JDUM27,JDUM28,JDUM29,JDUM30)
C
C
      IF (SEVRTY .LT. 0) THEN
        RETURN
      ENDIF
C
C
C Der Integer-Parameter wird lediglich fuer die Uebergabe der aktuellen
C Modellnummer zwischen F- und P-Programm benoetigt:
      DNIP = 0
C
C  >> Blockdaten einlesen 
C
      CALL PARWER (PLANT,VERNR,BNAME,CX,NX,X,XMIN,XMAX,XABS,
     *             CU,NU,CY,NY,CPHI,PHIERR,NPHI,CRPAR,NRP,RPAR,
     *             CIPAR(NISP+1),DNIP,IPAR(NISP+1),CCPAR,NCP,CPAR,
     *             MESID,MESTXT)
C
C
C MSH \/\/\/\/ MSH
        DO 1234 I = DNIP+1, NIP
           WRITE(CDUM,'(I10)') (I-DNIP-1)
           print *,'CDUM: ',CDUM
           CALL DELBLA(CDUM)
           WRITE(CIPAR(I),'(A10,A)') '_CGH HELP',CDUM(1:DSESLE(CDUM))
 1234   CONTINUE
C MSH /\/\/\/\ MSH

      IF (MESID .NE. 0) THEN
        RETURN
      ENDIF
C
C
C  >> Belegen von Teilstrukturen des Patterns von Matrizen
C
      ICFX(1) = 1
      IRFX(1) = 1
      ICFU(1) = 1
      IRFU(1) = 1
C
C
C  >> Zuordnung des Zustands zum Ausgang
C
      IOUT(1) = 1
C
C
C  >> Schreibschl"ussel definieren
C
      KEYLEN    = 3
      CWORK(1)(1:10) = BNAME(1:5)//CX(1)(1:5)
      CWORK(2)(1:10) = BNAME(1:5)//CU(1)(1:5)
      CWORK(3)(1:10) = BNAME(1:5)//CY(1)(1:5)

      DO 2000 I = 1,3
         IWORK(I)  = 1
 2000 CONTINUE


      DO 400 I=1,3*KEYLEN
        IWORK(3+I) = 1
400   CONTINUE

C 1.Proze"sgr"o"se
      CWORK(4)(1:10) = CX(1)(6:15)

C 2.Proze"sgr"o"se
      CWORK(5)(1:10) = CU(1)(6:15)

C 3.Proze"sgr"o"se
      CWORK(6)(1:10) = CY(1)(6:15)

C     Adressrechnung der zus"atzlich ben"otigten Hilfsfelder
        MAXSTA = 1
        OFFH1  = 7
        OFFH2  = OFFH1 + KEYLEN*MAXSTA
        OFFH3  = 3 + 3*KEYLEN + 1

      CALL DSEDIW (BNAME, KEYLEN, CWORK(1), IWORK(1),
     *             IWORK(4), IWORK(4+KEYLEN), IWORK(4+2*KEYLEN),
     *             CWORK(4), BUFLEN,
     *             CWORK(OFFH1),CWORK(OFFH2),IWORK(OFFH3),MAXSTA,
     *             MESID, MESTXT, SEVRTY)
            
C----FORMATE-------------------------------------------------------------
C
C************************************************************************
C     End of file DAB02I.FOR
         RETURN
      END
Comment 1 Andrew Pinski 2003-08-22 11:00:42 UTC
I can confirm this in 3.3.1 (20030707) but on the mainline (20030821) it does not ICE but most 
likely the mainline does not ICE because the RTL is different.
Most likely the same bug as bug 8479.
Comment 2 The gcc-bugs mailing list 2004-01-23 17:36:46 UTC
Suspending until either new-regalloc branch is merged to mainline, or bug is rechecked against 
new-regalloc branch.
Comment 3 Andrew Pinski 2004-08-15 03:45:54 UTC
Closing this one as fixed as I said it was fixed on the mainline (back when it was 3.4.0).