Patch Name: PHSS_13421 Patch Description: s700_800 10.X ANSI C compiler cumulative patch Creation Date: 97/12/06 Post Date: 98/01/02 Hardware Platforms - OS Releases: s700: 10.01 10.10 10.20 s800: 10.01 10.10 10.20 Products: C-ANSI-C B.10.03 B.10.03.10 C-Dev-Tools B.10.01 B.10.03.10 Auxiliary-Opt B.10.01 B.10.03.10 Filesets: C-ANSI-C.C,B.10.03,B.10.03.10 C-Dev-Tools.C-AUX,B.10.03,B.10.03.10 Auxiliary-Opt.LANG-AUX,B.10.01,B.10.03.10 Auxiliary-Opt.LANG-SMP,B.10.01,B.10.03.10 Automatic Reboot?: No Status: General Superseded Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHSS_13421 Symptoms: PHSS_13421: Optimizer fix:Memory leak problem and an abort at +O2 or higher in compiler optimizer Incorrect run time result when compiled "cc +u1 +O1/02" No lowlevel warning message when return not seen in conditional statements. PHSS_12676: Several Optimization bug fixes. Optimizer fix:Incorrect results for programs with while when compiled at +O3 or higher. High Level optimizer fix:Erroneously deleting store of constant into temporary variable. Compiler fails with the error number 6859 for optimized compiles. Wrong branch of if statementt taken in optimized code (+O2) Incorrect debug info at +O2 -g. PHSS_11518: Runtime optimizer fix. PHSS_10897: Compile time performace fix. PHSS_10261: Optimizer bug fixes: - Core dump when compiling with +I. - At +O2 or greater, looping code could produce incorrect results. - Other fixes with +Ooptions. - c89 was not delivered as part of C compiler patch. PHSS_9927: Optimizer bug fixes: - Optimizer problem when unsigned comparison instructions are generated for range checking. - Bad code for loop unrolle. - Long compile time for many loops with +Olimit. PHSS_9765: Optimizer bug fixes: - Incorrect results for programs with nested loops and compiled with +O2 or higher. - Run time memory fault when programs built with +DA2.0 +Odataprefetch at +O2 or higher. PHSS_9447: Several Optimization bug fixes. - DOC, +O2, PBO and loop optimization problems. PHSS_9138: Several bug fixes including: - Profile Based Optimization(PBO) bug fixes related to correctness problems - loop unrolling bug fix. PHSS_8870: Performance improvements and bug fixes. PHSS_8385: Performance improvements and several bug fixes. PHSS_7311: Problem with pragma HP_ALIGN NOPADDING with arrays Bad code for bit fields in static struct, address % 4 is 2 Problem with #pragma HP_ALIGN +O1 build of module gets into infinite loop in value numbering PHSS_6369: cpp.ansi out of dynamic memory PHSS_5743: SPEC95 performance enhancement. Defect Description: PHSS_13421: 1) Memory leak problem in compiler optimizer 2) compiled at +O2 or above, compiler aborts with internal panic 6904 3) cc +u1 +O1/02 possible optimizer problem 4) No low-level warning when a return is missing in conditional path. 5) ccom aborts after "error 1532: Reference through a non-pointer." PHSS_12676: 1) Incorrect results for programs with while when compiled at +O3 or higher. 2) Erroneously deleting store of constant into temporary variable. 3) Compiler fails with the error number 6859. 4) Wrong branch of if statementt taken in optimized code (+O2) 5) Incorrect code generation at +O2 and above for programs that make procedure calls with floating point arguments. 6) Incorrect debug info at +O2 -g. 7) incorrect results in procedures which have long calls. (long calls enable reaching from one place to another place in an extremely large file) 8) incorrect result when compiled at O2 9) incorrect PIC code generation for literals in code space. 10) wrong results when compiled with +O2 or igher for program passing floating point value to the library arguments. 11) Incorrect results for programs with while statements when compiled at +O3 or higher. 12) debug info is wrong for locals in nested procedures 13) compile time failures with bad fixup when compiled with +O4 14) Error 5172 on 6 byte aligned copy with +DA2.0 +O2 15) Error 6933 +DA2.0 -O on long double = unsigned long long PHSS_11518: 1) +ESlit doesn't put const pointers into $LIT$ subspace 2) Out of memory message (even if +Onolimit is not used) 3) At +O2 or higher, the backend optimizer may perform illegal optimization. 4) 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. 5) Compiler aborts at +O1 or above 6) The optimization takes too much time 7) Can't use +I (PBO) with multiple unnamed common block subprogram 8) +Olibcalls breaks a routine from SDRC Ideas. PHSS_10897: 1) C compiler for 10.20 much slower than previously PHSS_10261: 1) Core dump when compiling with +I 2) Error 6933: when compiling at +O2 or higher and not using +Onolimit 3) Casting a constant machine primitive (e.g. word, halfword) to a structure may result in incorrect copying at optimization levels +O1 or higher. 4) At +O2 or greater, looping code could produce incorrect results. 5) With +Odataprefetch & +O2 or higher, the optimizer could engender a floating point divide by 0. 6) When compiling a regular c file which calls a function with a large number of arguments (> 2000) the compiler fails. 7) Bad code when optimizing if address of static pointer taken 8) Patch installation scripts don't hard link c89 to cc PHSS_9927: 1) Problem with optimizer at level 2.when unsigned comparion instructions are generated for range checking. If the last value added to the minimum list is equal to the upper bound of the current item, this range checking can't be performed. 2) When while loops were being unrolled sometimes the trip counts would be negative. 3) Program's with many loops can take a long time to compile, even under +Olimit. PHSS_9765: 1) A runtime memory fault could occur for programs built with +DA2.0 +Odataprefetch at +O2 or higher. 2) Incorrect results could be produced for programs built with +O2 or higher, if they contain nested loops. 3) Assertion propagation was deleting a needed test as dead code. 4) The register allocator (ncolor) was losing the fact that the address register in a BLE/BLVE was live, even if it were a callee-save that one form of spill around a call might want to use. 5) Linker gets unsat for "__tp" 6) lint comment directive ARGSUSED doesn't work when used after function declaration. PHSS_9447: Compiler problems. 1) DOC problems in code with unrolled loops. 2) DOC problems in code with "assume size character strings" 3) DOC problem with hidden logicals incorrect code when the same procdure is called multiple times with slightly different parameter profiles 4) A runtime problem could occur at +O2 or greater, which is associated with a bad loop transformation. 5) Getting different results with +DA1.1 and +DA1.1c 6) error saying that STBYS is invalid inline assembly 7) An instruction was being incorrectly deleted during common subsxpression elimination causing incorrect results. 8) Problem is that large complex functions hold up +I builds pointlessly, as the extra instrumentation code slows down the optimization, while +Onolimit won't let the previous mplementation drop to +O1. 9) Bad code generated for floating-point arguments to similar calls. 10) incorrect code in programs that do extracts and deposits inside loops 12) incorrect code generation when ldil instructions are used with code symbols. 13) incorrect results and the following linker message: /usr/ccs/bin/ld: (Warning) Quadrant change in relocatable expression in subspace. PHSS_9138: Compiler problems. 1) Incorrect results in programs using programs with integer multipy inside loops. 2) Incorrect results when a program containing switch statements is compiled with PBO and PIC. 3) At +O2 or higher, unrolled loops may sometimes be miscompiled so that they contain a SUBT,TR instruction which causes a floating point exception at runtime. PHSS_8870: Compiler problems. 1) The compiler does not accept STWS as an inline assembly instruction. 2) At optimization level +O2 or higher,an extract of low order bits feeding an integer multiply by a constant value may be erroneously eliminated. 3) Loops which contain the closed form expression for a summation of a loop induction variable [e.g. i*(i-1)/2] may not compile correctly at +O2 or higher if the closed form expression is not executed in each iteration of the loop. 4) The compiler may abort at +O2 or higher. 5) Can't build large debuggable libraries Davis C compiler PHSS_8385: Compiler problems. 1) Problem with pragma HP_ALIGN NOPADDING with arrays 2) Compiler gets signal 11 3) Bad error 1647 with ? &x : NULL 4) Problem with #pragma HP_ALIGN 5) Error for "Tentative definition" using previously-undefined structure tag 6) Can't increment/decrement by large long long constant a += big 7) Nested switch doesn't find default case in 10.0 8) Error 1514 Illegal type for string initializer on string cast 9) typedef of struct tag confuses another struct and label PHSS_7311: Compiler problems. 1) Problems with pragma HP_ALIGN NOPADDING with arrays 2) Bad code for bit fields in static struct, address % 4 is 2 3) +O1 build of module gets into infinite loop in value numbering PHSS_6369: Compiler problems. 1) cpp.ansi requires much more heap space in preprocessing macros with lots of parameters than the original cpp.ansi. This results in running out of dynamic memory on systems with smaller amount of heap storage. PHSS_5743: Compiler and optimization problems cc patch for: 1) String initializer isn't put in $LIT$ space with +ESlit and +z 2) Invalid loader fixup with array of strings and +z 3) Problem with +O2 and arrays of structs with float 4) optimizer problem with array of struct 5) Program aborting at runtime with invalid fixup 6) cxref is generating incorrect info for initializer list 7) Ucode gets assert 199 while compiling nasa7 8) MLP: Backend Assert ** Symbol table entry of wrong class. (5172) 9) Bus error: Word load attempted on a static halfword variable 10) (PCXU) Ucode abort after COR 11) Load before store with +Oparallel FORTRAN pointer 12) ISTR floats above initialization of stored-through pointer (same as CLLbs02413) 13) Ucode leaks memory when invoked by ucomp 14) Backend assert SR: 1653238782 1653234013 4701368027 4701361436 4701366047 1653217802 4701358515 1653213033 4701356378 1653209916 4701352880 5003366302 5003363457 4701351288 5003346023 1653201673 5003327767 1653195735 5003291187 1653158535 1653143180 1653158154 5003305276 5003309930 5003285056 1653155895 1653147090 5003291187 1653159202 1653158154 5003268797 5003269993 5003269027 5003268797 4701363556 Patch Files: /opt/ansic/bin/cc /opt/ansic/bin/c89 /opt/ansic/lbin/ccom /opt/ansic/lib/nls/msg/C/cc.cat /opt/langtools/lbin/cpp.ansi /opt/langtools/lbin/cpp /opt/langtools/lib/nls/msg/C/cpp.cat /opt/langtools/lib/nls/msg/C/ucomp.cat.tmp /opt/langtools/lbin/ucomp.tmp /opt/langtools/lib/libmp.a.tmp /opt/langtools/lib/libp/libmp.a.tmp what(1) Output: /opt/ansic/bin/cc: LINT A.10.32.16 CXREF A.10.32.16 HP92453-01 A.10.32.16 HP C Compiler /usr/lib/libc: $Revision: 76.3 $ /opt/ansic/bin/c89: LINT A.10.32.16 CXREF A.10.32.16 HP92453-01 A.10.32.16 HP C Compiler /usr/lib/libc: $Revision: 76.3 $ /opt/ansic/lbin/ccom: LINT A.10.32.16 CXREF A.10.32.16 HP92453-01 A.10.32.16 HP C Compiler HP-UX SLLIC/OPTIMIZER UX.10.20.556 (DAVIS): 11/25/97 Ucode Code Generator - UX10.20.59 (PACG_UX10.MULTI_B L31) REV: HP SESD Code High Level Optimizer - UX.10.21.971124 (UX10.MULTI) [-DHLO_RELEASE +O3] - 03-Dec-97.12:01 /usr/lib/libc: $Revision: 76.3 $ /opt/ansic/lib/nls/msg/C/cc.cat: HP92453-01 A.10.32.16 HP C Compiler Copyright 1986, Hewlett-Packard Co. /opt/langtools/lbin/cpp.ansi: HP92453-01 A.10.32.16 HP C Preprocessor (ANSI) /usr/lib/libc: $Revision: 76.3 $ /opt/langtools/lbin/cpp: HP92453-01 A.10.32.16 HP C Preprocessor /usr/lib/libc: $Revision: 76.3 $ /opt/langtools/lib/nls/msg/C/cpp.cat: HP92453-01 A.10.32.16 HP C Preprocessor Copyright 19 85, Hewlett-Packard Co. /opt/langtools/lib/nls/msg/C/ucomp.cat.tmp: None /opt/langtools/lbin/ucomp.tmp: HP-UX UCOMP UX.10.20.311 (DAVIS): 11/25/97 HP-UX SLLIC/OPTIMIZER UX.10.20.556 (DAVIS): 11/25/97 Ucode Code Generator - UX10.20.59 (PACG_UX10.MULTI_B L31) High Level Optimizer - UX.10.21.971124 (UX10.MULTI) [-DHLO_RELEASE +O3] - 03-Dec-97.12:01 /usr/lib/libc: $Revision: 76.3 $ /opt/langtools/lib/libmp.a.tmp: Parallel Runtime Library - UX.10.20.970710 (UX10.MUL TI) [+O4] - 04-Dec-97.17:44 /opt/langtools/lib/libp/libmp.a.tmp: Parallel Runtime Library - UX.10.20.970710 (UX10.MUL TI) [+O4] - 04-Dec-97.17:44 cksum(1) Output: 1485213827 255206 /opt/ansic/bin/cc 1485213827 255206 /opt/ansic/bin/c89 1681079692 7157798 /opt/ansic/lbin/ccom 74937315 86313 /opt/ansic/lib/nls/msg/C/cc.cat 2262388529 267521 /opt/langtools/lbin/cpp.ansi 3462966806 259334 /opt/langtools/lbin/cpp 373769179 9800 /opt/langtools/lib/nls/msg/C/cpp.cat 2780041833 38214 /opt/langtools/lib/nls/msg/C/ucomp.cat.tmp 389771749 5539054 /opt/langtools/lbin/ucomp.tmp 3076413582 80172 /opt/langtools/lib/libmp.a.tmp 418309933 88892 /opt/langtools/lib/libp/libmp.a.tmp Patch Conflicts: None Patch Dependencies: s700: 10.01: PHSS_8555 PHSS_7505 s700: 10.10: PHSS_8555 PHSS_7505 s700: 10.20: PHSS_8555 s800: 10.01: PHSS_8555 PHSS_7505 s800: 10.10: PHSS_8555 PHSS_7505 s800: 10.20: PHSS_8555 Hardware Dependencies: None Other Dependencies: None Supersedes: PHSS_5743 PHSS_6369 PHSS_7311 PHSS_8385 PHSS_8870 PHSS_9138 PHSS_9447 PHSS_9765 PHSS_9927 PHSS_10261 PHSS_10897 PHSS_11518 PHSS_12676 Equivalent Patches: None Patch Package Size: 13590 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_13421 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHSS_13421.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_13421.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_13421. 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_13421.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_13421.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None