Patch 2810 : MIPSpro 7.2 Compiler Back-end #3 : [IRIX 6.4 6.3 6.2]
INDEX
RELATIONS
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.base1.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> quit1.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:
DOWNLOAD PATCH
|
||||||||||||||||||||||||||||||||||||
Document Id: 20021117071219-IRIXPatch-1180
|