Patch Name: PHSS_10878 Patch Description: s700_800 10.20 ucomp/libmp.a patch Creation Date: 97/06/02 Post Date: 97/06/04 Hardware Platforms - OS Releases: s700: 10.20 s800: 10.20 Products: C ANSI/C ANSI C++ FORTRAN Softbench COBOL/UX PASCAL C++ Filesets: Auxiliary-Opt.LANG-AUX,B.10.20 Auxiliary-Opt.LANG-STARTUP,B.10.20 Auxiliary-Opt.LANG-SMP,B.10.20 OS-Core.CORE-SHLIBS,B.10.20 Automatic Reboot?: No Status: General Superseded Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHSS_10878 Symptoms: PHSS_10878: This patch includes support for the the PA-8200 workstations and servers and improved optimization for programs compiled with +O4 or +P. Additionally, this patch contains fixes for the following defects. 1. SR 5003362103: At +O3 the compiler backend is performing an illegal control flow transformation that results in incorrect user program behavior. 2. DTS CHFts22427: At +O3 or +O4, the compiler may abort for programs that use exception handling. 3. DTS CLLbs08798: When the number of parameters of a function is greater than 255, incorrect results may be produced. 4. DTS CHFts22308: Poor runtime performance when a program containing pragma HP_NO_RELOCATION is compiled at +O3. 5. DTS CHFts22406: Linker produces unsats for programs compiled at +O3 or higher. 6. DTS CLLbs10013: Compiler may abort for aCC programs compiled with +DA2.0N 7. DTS CLLbs10051: aC++ programs may go into an infinite loop 8. DTS CHFts22519: Compiler may abort at +O3 or +O4 for programs containing loops 9. DTS CLLbs09833: Compiler sometimes produces error 6150 for large programs compiled with +Onolimit +DA1.1 10. DTS CLLbs09836: Fortran programs abort with error 7825 11. DTS CLLbs09920: Performance degradations 12. DTS CLLbs09978: Compiler may incorrectly optimize loops containing "array(i)**2" 13. DTS CLLbs10041: PBO may degrade performance for long running programs 14. DTS CLLbs10086: Abort in aC++ exception-handling runtime library 15. DTS CLLbs10149: Incorrect results with OGL and +z 16. DTS CLLbs10155: Compiler aborts for aC++ programs that use exception handling and are compiled at +O2 or higher 17. DTSCHFts22607: certain floating point expressions produce different results for +O3 +Onofltacc 18. DTS CLLbs10084: At +O2 or higher, compiler may produce incorrect results for loops containing conditional increments of scalar variables 19. DTS CLLbs10291: With +O2/PBO, runtime error/incorrect results could occur. 20. DTS CLLbs09731: Procedures with large numbers of ASSIGNs and ASSIGNed GOTOs may take a long time to compile with +I. PHSS_7816: Code compiled without the +DA/+DS options on some of the newer PA-RISC machines may be optimized for an older architecture, resulting in degraded performance of optimized code. This occurs on all series 700 PA-8000 workstations and some series 800 PA-8000 servers. 1) SR 4701329003 / DTS CLLbs06089: See above Defect Description: PHSS_10878: 1. SR 5003362103: At +O3 the compiler backend performed an illegal control flow transformation 2. DTS CHFts22427: A routine from a module that supported exception handling was inlined into module that doesn't. 3. DTS CLLbs08798: Backend assumes that procedures have at most 255 parameters. 4. DTS CHFts22308: There was a loophole in tracking parameter relocation information for indirect calls 5. DTS CHFts22406: The stack pointer attribute on a variable was not copied when it was cloned. 6. DTS CLLbs10013: Front-end generated intermediate code that the back-end didn't understand 7. DTS CLLbs10051: A misaligned load was generated for programs which contain functions that assign values to bit fields via pointers. 8. DTS CHFts22519: Compiler was confused by geometric induction variables 9. DTS CLLbs09833: Defect in the register spilling algorithm 10. DTS CLLbs09836: Compiler was confused by some unreachable instructions. 11. DTS CLLbs09920: A post-davis optimization was degrading performance 12. DTS CLLbs09978: An incorrect transformation was performed on a loop with a recurrent expression 13. DTS CLLbs10041: PBO information was being stored in integers, which overflowed. 14. DTS CLLbs10086: Unsafe optimizations were performed on aC++ programs with exception handling 15. DTS CLLbs10149: Conflict between code generation of OGL code and PIC code 16. DTS CLLbs10155: An assert was being triggered incorrectly. 17. DTS CHFts22607: Internal floating point optimizations were not using the correcnt accuracy 18. DTS CLLbs10084: Scalar replacement was applied when it was not safe to do so. 19. DTS CLLbs10291: phase ordering problem between the phases in the back-end optimizer 20. DTS CLLbs09731: Arcs of ASSIGNs and ASSIGNed GOTOs were being instrumented, although we do not use the PBO information for these arcs. PHSS_7816: The sched.models file was not updated to include entries for the newer systems. Hence, when a program is compiled without the +DA/+DS options on one of these newer systems the optimizer is unable to determine the architecture of the system and defaults to the PA7100 architecture (+DA1.1 +DS1.1b). This can greatly impact the performance of PA8000 systems, for the compiler employs several optimizations that are unique to the PA8000. 1) SR 4701329003 / DTS CLLbs06089: See above SR: 5003362103 4701329003 Patch Files: /opt/langtools/lbin/ucomp.tmp /opt/langtools/lib/nls/msg/C/ucomp.cat /opt/langtools/lib/sched.models /opt/langtools/lib/libmp.a.tmp /usr/lib/nls/msg/C/libmp.cat /opt/langtools/lib/libp/libmp.a.tmp what(1) Output: /opt/langtools/lbin/ucomp.tmp: HP-UX UCOMP UX.10.20.302 (DAVIS): 05/20/97 HP-UX SLLIC/OPTIMIZER UX.10.20.549 (DAVIS): 05/20/97 Ucode Code Generator - UX10.20.50 (PACG_UX10.GAMMA_9 70508) High Level Optimizer - UX.10.20.970520 (UX10.GAMMA) [-DHLO_RELEASE +O3] - 20-May-97.20:14 /usr/lib/libc: $Revision: 76.3 $ /opt/langtools/lib/nls/msg/C/ucomp.cat: None /opt/langtools/lib/sched.models: None /opt/langtools/lib/libmp.a.tmp: Parallel Runtime Library - UX.10.20.970520 (UX10.GAM MA) [+O4] - 21-May-97.02:00 /usr/lib/nls/msg/C/libmp.cat: None /opt/langtools/lib/libp/libmp.a.tmp: Parallel Runtime Library - UX.10.20.970520 (UX10.GAM MA) [+O4] - 21-May-97.02:00 cksum(1) Output: 4093584240 5506081 /opt/langtools/lbin/ucomp.tmp 232102657 38093 /opt/langtools/lib/nls/msg/C/ucomp.cat 4117687804 3100 /opt/langtools/lib/sched.models 1730740325 80096 /opt/langtools/lib/libmp.a.tmp 4029562728 1423 /usr/lib/nls/msg/C/libmp.cat 3774484326 88808 /opt/langtools/lib/libp/libmp.a.tmp Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHSS_7816 Equivalent Patches: None Patch Package Size: 5700 Kbytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHSS_10878 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHSS_10878.depot 5b. For a homogeneous NFS Diskless cluster run swcluster on the server to install the patch on the server and the clients: swcluster -i -b This will invoke swcluster in the interactive mode and force all clients to be shut down. WARNING: All cluster clients must be shut down prior to the patch installation. Installing the patch while the clients are booted is unsupported and can lead to serious problems. The swcluster command will invoke an swinstall session in which you must specify: alternate root path - default is /export/shared_root/OS_700 source depot path - /tmp/PHSS_10878.depot To complete the installation, select the patch by choosing "Actions -> Match What Target Has" and then "Actions -> Install" from the Menubar. 5c. For a heterogeneous NFS Diskless cluster: - run swinstall on the server as in step 5a to install the patch on the cluster server. - run swcluster on the server as in step 5b to install the patch on the cluster clients. By default swinstall will archive the original software in /var/adm/sw/patch/PHSS_10878. If you do not wish to retain a copy of the original software, you can create an empty file named /var/adm/sw/patch/PATCH_NOSAVE. Warning: If this file exists when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. It is recommended that you move the PHSS_10878.text file to /var/adm/sw/patch for future reference. To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHSS_10878.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None