|
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.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:
DOWNLOAD PATCH
|
||||||||||||||||||||||||||||||||||||
Document Id: 20021117071219-IRIXPatch-1180
|
||||||||||||||||||||||||||||||||||||