SGI Logo
 
 

Patch 2810 : MIPSpro 7.2 Compiler Back-end #3 : [IRIX 6.4 6.3 6.2]
INDEX

  • Relations
  • Release Notes
  • Inst Subsystem Requirements
  • Inst Subsystem Checksums
  • Inst Subsystem File Listings
  • Download Patch


    RELATIONS

    This patch replaces the following patches:
    2418, 2687

    This patch has no known incompatiblities with other patches.

    This patch fixes the following bugs:
    500655 - APP CATIA "-force_load" ld option does not work in n32 through CC
                    drive

    524374 - sendmail on fido: SMTP-VRFY: died on signal 11
    524653 - -O3 causes proopt to incorrectly propagate variable across call
    524677 - -pfa fails in some cases with nested procedures
    526428 - SPEC95 compress benchmark fails intermittently
    537859 - Wrong answers -O2 with F90 ptrs & common (fixed in 7.2+, 7.3)
    538334 - Exception handling seems to be broken for some cases.
    538500 - Bad value for variable live in catch handler
    554985 - PTC: seg fault in be
    560948 - PTC: library should satisfy objectlist for mongoose compiler driver


    RELEASE NOTES

    1. Patch SG0002810 Release Note

           This release note describes patch SG0002810 to MIPSpro 7.2
           Compiler Back-end #3.  This replaces patchSG0002418 and
           patchSG0002687.
    
           Problems with these previous patches will not allow you to
           return to the base software if you were to remove
           patchSG0002810.
    
           You must first remove patchSG0002418 or patchSG0002687 and
           re-install compiler_dev.sw.base from the MIPSpro 7.2
           Developer's Foundation to return to the base 7.2 version.
    
    
    1.1 Supported Hardware Platforms
           This patch contains bug fixes for all platforms.  The
           software cannot be installed on other configurations.
    
    
    1.2 Supported Software Platforms
           This patch contains bug fixes to the MIPSpro 7.2 Compiler
           Back-end on a system running IRIX 6.2, 6.3 and 6.4.  The
           software cannot be installed on other configurations.
    
    
    1.3 Bugs Fixed by Patch SG0002810
           This patch contains fixes for the following bugs in the 7.2
           Compiler Back-end.  Bug numbers from Silicon Graphics bug
           tracking system are included for reference.
    
              o Driver should treat -force_load as object in link line
                (Bug #500655).
    
              o Under certain circumstances programs compiled under the
                -O2 (-O) optimization level will abort due to an
                illegal instance of NULL pointer speculation.  (Bug
                #524374)
    
              o A bug that can arise only in the presence of Fortran-90
                internal procedures and equivalences between variables,
                under the following conditions:
    
                   o There exist two variables equivalenced to each
                     other, and
    
                   o an internal procedure refers to exactly one of the
                     two, and
    
    
                   o the containing procedure refers only to the other
                     one.
    
                Under those conditions, the 7.2MR compiler without the
                patch may optimize the code for the containing
                procedure as if a call to the internal procedure could
                not read or write the equivalenced variables, when in
                fact it can. Here is an example program demonstrating
                the failure (taken from the bug report):
    
                program test4
                   integer     i,k
                   equivalence (i,k)
                   i = 1
                   call s
                   if (i .eq. 5) then
                       print *, 'pass'
                       call exit (0)
                   else
                       print *, 'fail', i
                       call exit (1)
                   endif
                contains
                   subroutine s
                      k = 5
                   end subroutine s
                end program  test4
    
                For this example program, the failure occurred only at
                the -O3 optimization level, but in principle it could
                arise at -O2 as well. (Bug #524653)
    
              o -O3 and/or -pfa fail in a few cases where nested f90
                procedures refer to local arrays from the parent
                procedure. (Bug #524677)
    
              o SPEC95 compress benchmark fails intermittently when
                compiling with the following flags:  -n32 -mips4
                -Ofast=ip27 -IPA:use_intrinsic -fb_create
                /tmp/FBDIR/compress95.mips4 -o compress95.mips4 *.o.
                This has been fixed. (Bug #526428)
    
              o Wrong answers -O2 with F90 ptrs & common. (Bug #537859)
    
                The following test case would produce incorrect results
                at runtime when compiled at optimization level -O2 and
                higher.
    
    
                PROGRAM MAIN
                   interface
                      SUBROUTINE SUB1( OVER1 )
                         !USE TYPES
                         INTEGER, POINTER::  OVER1
                      end SUBROUTINE SUB1
                   end interface
                   !USE TYPES
                   INTEGER ,TARGET :: INT2
                   COMMON /WHATEVER/ INT2
    
                   !
                   INTEGER, POINTER :: OVER1
    
                   INT2 = -7
                   OVER1 => INT2
    
                   CALL SUB1( OVER1)
    
                end PROGRAM MAIN
                !***********************************************************************
                SUBROUTINE SUB1( OVER1 )
                   !USE TYPES
                   INTEGER, POINTER::  OVER1
                   INTEGER ,TARGET :: INT2
                   COMMON /WHATEVER/ INT2
                   !
                   !  Should be able to change INT2 using the OVER2%UNDER1 pointer
                   OVER1 = 123
                   IEXPECT = 123
                   IF( INT2 .NE. IEXPECT ) THEN
                       WRITE(6, '(" Test case 1.13 int pointer failed, expected ",I10, ",&
                            & got ", I10 )' ) IEXPECT,int2
                   ENDIF
                   print *,'done'
                end subroutine SUB1
    
                This has been fixed.
    
              o Exception handling seems to be broken for some cases.
                (Bug #538334)
    
                Under certain circumstances programs that use exception
                handling would produce incorrect results when compiled
                -n32 and -O2 (and higher).  See the bug below. This has
                been fixed.
    
              o Bad value for variable live in catch handler. (Bug
                #538500)
    
    
                The following program would produce incorrect results
                when compiled at optimization level -O2 and higher.
    
                void foo() {throw 1;}
    
                int main()
                {
                  int x = 1;
    
                  try {
                    foo();
                  }
    
                  catch (float) {}
                  catch (int) {printf("x = %d0, x);}
                }
    
                This has been fixed.
    
              o PTC: seg fault in be (Bug #554985)
    
              o Driver should treat library as object in link line (Bug
                #560948).  This allows something like "cc -n32 -lfoo"
                to compile okay.
    
    
    1.4 Subsystems Included in Patch SG0002810
           This patch release includes these subsystems:
    
              o patchSG0002810.compiler_dev_sw.base
    
    
    1.5 Installation Instructions
           Because you want to install only the patches for problems
           you have encountered, patch software is not installed by
           default.  After reading the descriptions of the bugs fixed
           in this patch (see Section 1.3), determine the patches that
           meet your specific needs.
    
           If, after reading Sections 1.1 and 1.2 of these release
           notes, you are unsure whether your hardware and software
           meet the requirements for installing a particular patch, run
           inst.  The inst program does not allow you to install
           patches that are incompatible with your hardware or
           software.
    
           Patch software is installed like any other Silicon Graphics
           software product.  Follow the instructions in your Software
           Installation Administrator's Guide to bring up the miniroot
           form of the software installation tools.
    
    
           Follow these steps to select a patch for installation:
    
             1.  At the Inst> prompt, type
    
                 install patchSGxxxxxxx
    
                 where xxxxxxx is the patch number.
    
             2.  Initiate the installation sequence. Type
    
                 Inst> go
    
             3.  You may find that two patches have been marked as
                 incompatible.  (The installation tools reject an
                 installation request if an incompatibility is
                 detected.)  If this occurs, you must deselect one of
                 the patches.
    
                 Inst> keep patchSGxxxxxxx
    
                 where xxxxxxx is the patch number.
    
             4.  After completing the installation process, exit the
                 inst program by typing
    
                 Inst> quit
    
    
    1.6 Patch Removal Instructions
           To remove a patch, use the versions remove command as you
           would for any other software subsystem.  The removal process
           reinstates the original version of software unless you have
           specifically removed the patch history from your system.
    
           versions remove patchSGxxxxxxx
    
           where xxxxxxx is the patch number.
    
           To keep a patch but increase your disk space, use the
           versions removehist command to remove the patch history.
    
           versions removehist patchSGxxxxxxx
    
           where xxxxxxx is the patch number.
    
    
    
    1.7 Known Problems
    
    
    INST SUBSYSTEM REQUIREMENTS
    No Requirements Information Available.
    

    INST SUBSYSTEM CHECKSUMS

    These checksums help to provide a 'signature' for the patch inst image which can be used to authenticate other inst images. You can obtain this kind of output by running sum -r on the image (from the command line):

    58011      2   patchSG0002810
    11026  18188   patchSG0002810.compiler_dev_sw
    31365      4   patchSG0002810.idb
    

    INST SUBSYSTEM FILE LISTINGS

    The following lists the files which get installed from each subsystem in the patch:

    patchSG0002810.compiler_dev_sw.base
    usr/lib32/cmplrs/be
    usr/lib32/cmplrs/be.so
    usr/lib32/cmplrs/cg.so
    usr/lib32/cmplrs/driver
    usr/lib32/cmplrs/ipa.so
    usr/lib32/cmplrs/ipacom
    usr/lib32/cmplrs/lno.so
    usr/lib32/cmplrs/wopt.so
    usr/relnotes/patchSG0002810/TC
    usr/relnotes/patchSG0002810/ch1.z


    DOWNLOAD PATCH
    Download Server File Name Date Added Size Download
    download.sgi.com patchSG0002810.tar 15-Apr-1998 8.9 Mb FTP HTTP Add to download cart 
    download.sgi.com patchSG0002810.tardist 15-Apr-1998 8.9 Mb FTP HTTP
     
    FTP = download using FTP protocol
    HTTP = download using HTTP protocol
    Add to shopping list= store in your basket for downloading later
  •  


    Document Id: 20021117071219-IRIXPatch-1180