Patch Name: PHSS_12694 Patch Description: s700_800 10.10-20 UCOMP/LIBMP patch Creation Date: 97/10/16 Post Date: 97/10/20 Hardware Platforms - OS Releases: s700: 10.10 10.20 s800: 10.10 10.20 Products: C ANSI/C ANSI C++ FORTRAN Softbench COBOL/UX PASCAL C++ Filesets: Auxiliary-Opt.LANG-AUX Auxiliary-Opt.LANG-STARTUP Auxiliary-Opt.LANG-SMP OS-Core.CORE-SHLIBS Automatic Reboot?: No Status: General Superseded Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHSS_12694 Symptoms: PHSS_12694: 1. aCC: field referenced pulled out of loop, made uninitialized. 2. sanity-checker failure with +O4 on aC++ test 3. Compiler Internal Error (7108) w/ +O2 +autodbl +DA2.0 4. Incorrect results for programs with while when compiled at +O3 or higher. 5. C++ programs compile slowly and use lots of memory. 6. Out of memory message (even if +Onolimit is not used) 7. Bad code with -O and loops 8. At +O2 or higher, the optimizer may perform the an illegal optimization. 9. Compiler aborts with error 6859. 10. Procedures with large numbers of ASSIGNs and ASSIGNed GOTOs may take a long time to compile with +I. 11. COBOL programs get error 153 12. incorrect code with -O in loop with break exit 13. New f77 patch. wrong answers with +Olibcalls +O2 14. Random test fail with 'F' long calls option 15. inline asm LDW does not work 16. B.11.27: Subprogram compiled to snt fails with rts 153; okay as int 17. wrong answer with +O2 +Olibcalls 18. Failure in logical/character comparison in MULTI 19. ISVRAMP: Fully bound 32bit Oracle core dumps on hp-ux 11.0 IC 15A 64 bit 20. OpenGL source file incorrectly compiled with +O2 optimization 21. Errors in DOC debug symbol table 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_12694: 1. aCC: field referenced pulled out of loop, made uninitialized. 2. SC Failure in main: Bad resources, opcode = 5. ucomp : Warning in procedure main : Optimization aborted in function main. At tempting compilation unit again but unoptimized. Please report this warning and error 6933 to HP. (6099) 3. external subroutine SORTQS *Compiler Internal Error* : 7108 The value 0x10001 did not fit into a signed 14 bit field at offset 0x18 (op coe - LDI) (7108) 4. Incorrect results for programs with while when compiled at +O3 or higher. 5. C++ programs compile slowly and use lots of memory. 6. Out of memory message (even if +Onolimit is not used) 7. Bad code with -O and loops 8. At +O2 or higher, the backend optimizer may perform the following illegal optimization: for (i = ...) { for (i = ...) { t = A[i] ... A[i] ... ... t ... if (...) ++i; ---> if (...) ++i; ... A[i-1] ... ... t ... } } 9. Files compiled at +O0 or +O1 (or files compiled with +Olimit which drop to +O1 due to resource constraints) may cause the compiler to abort with error 6859, particularly if they include a mixture of single- and double- precision floating point operations. 10. Procedures with large numbers of ASSIGNs and ASSIGNed GOTOs may take a long time to compile with +I. 11. COBOL programs get errors such as: Object Code error : file 'tigd87a_err.snt' error code: 153, pc=C1802EF3, call=2, seg=0 153 Subscript out of range 12. incorrect result when compiled at O2 13. wrong results when compiled with +O2 or higher for program passing floating point value to the library arguments. 14. incorrect results in procedures which have long calls. (long calls enable reaching from one place to another place in an extremely large file) 15. the compiler aborts at +O0 or +O1 for programs with the following inline assembly instruction: (void) _asm("LDW", 0, 0, pp, 0); 16. incorrect PIC code generation for literals in code space. 17. Wrong branch of if statement taken in optimized code 18. At +O3 or higher, incorrect result is generated when testing the equivalence a variable of type Logical*2 to a variable of type char*1 for Fortran program 19. Program compiled at +O2 or higher on 10.20 system runs incorrectly on 11.x 64-bit system 20. Incorrect code generation at +O2 and above for programs that make procedure calls with floating 21. Incorrect debug info at +O2 -g. 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 correct 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 1653217802 4701358515 1653213033 4701361436 4701366047 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.308 (DAVIS): 09/29/97 HP-UX SLLIC/OPTIMIZER UX.10.20.554 (DAVIS): 09/29/97 Ucode Code Generator - UX10.20.56 (PACG_UX10.MULTI_B L29) High Level Optimizer - UX.10.21.970930 (UX10.MULTI) [-DHLO_RELEASE +O3] - 01-Oct-97.02:04 /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: 265338172 5534949 /opt/langtools/lbin/ucomp.tmp 2780041833 38214 /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 PHSS_10878 Equivalent Patches: None Patch Package Size: 5730 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_12694 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHSS_12694.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_12694.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_12694. 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_12694.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_12694.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None