Patch Name: PHSS_9927 Patch Description: s700_800 10.X ANSI C compiler cumulative patch Creation Date: 97/01/25 Post Date: 97/02/04 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_9927 Symptoms: 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_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: 5003327767 1653195735 5003291187 1653158535 1653143180 1653158154 5003305276 5003309930 5003285056 1653155895 1653147090 5003291187 1653159202 1653158154 5003268797 5003269993 5003269027 5003268797 Patch Files: /opt/ansic/bin/cc /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.10 CXREF A.10.32.10 HP92453-01 A.10.32.10 HP C Compiler /usr/lib/libc: $Revision: 76.3 $ /opt/ansic/lbin/ccom: LINT A.10.32.10 CXREF A.10.32.10 HP92453-01 A.10.32.10 HP C Compiler HP-UX SLLIC/OPTIMIZER UX.10.20.378 (DAVIS): 01/23/97 Ucode Code Generator - UX.10.20.12 (BCK_UX10.MULTI_B L17) REV: HP SESD Code High Level Optimizer - UX.10.20.961121 (MULTI) [UX10 .MULTI -DHLO_RELEASE +O3] - 21-Nov-96.13:48 /usr/lib/libc: $Revision: 76.3 $ /opt/ansic/lib/nls/msg/C/cc.cat: HP92453-01 A.10.32.10 HP C Compiler Copyright 1986, Hewlett-Packard Co. /opt/langtools/lib/nls/msg/C/ucomp.cat.tmp: None /opt/langtools/lbin/cpp.ansi: HP92453-01 A.10.32.10 HP C Preprocessor (ANSI) /usr/lib/libc: $Revision: 76.3 $ /opt/langtools/lbin/cpp: HP92453-01 A.10.32.10 HP C Preprocessor /usr/lib/libc: $Revision: 76.3 $ /opt/langtools/lib/nls/msg/C/cpp.cat: HP92453-01 A.10.32.10 HP C Preprocessor Copyright 19 85, Hewlett-Packard Co. /opt/langtools/lbin/ucomp.tmp: HP-UX UCOMP UX.10.20.149 (DAVIS): 01/23/97 HP-UX UCOMP UX.10.20.149 (DAVIS): 01/23/97 HP-UX SLLIC/OPTIMIZER UX.10.20.378 (DAVIS): 01/23/97 Ucode Code Generator - UX.10.20.12 (BCK_UX10.MULTI_B L17) High Level Optimizer - UX.10.20.961121 (MULTI) [UX10 .MULTI -DHLO_RELEASE +O3] - 21-Nov-96.13:48 /usr/lib/libc: $Revision: 76.3 $ /opt/langtools/lib/libmp.a.tmp: Parallel Runtime Library - UX.10.20.960329 (DAVIS) [ +O4] - 04-Nov-96.12:22 /opt/langtools/lib/libp/libmp.a.tmp: Parallel Runtime Library - UX.10.20.960329 (DAVIS) [ +O4] - 04-Nov-96.12:22 cksum(1) Output: 1149993151 255198 /opt/ansic/bin/cc 2754532110 6651951 /opt/ansic/lbin/ccom 2896194096 83432 /opt/ansic/lib/nls/msg/C/cc.cat 2638737307 267521 /opt/langtools/lbin/cpp.ansi 3252824919 259319 /opt/langtools/lbin/cpp 4064033471 9800 /opt/langtools/lib/nls/msg/C/cpp.cat 2288211346 35513 /opt/langtools/lib/nls/msg/C/ucomp.cat.tmp 1721554496 5107113 /opt/langtools/lbin/ucomp.tmp 3980455590 79564 /opt/langtools/lib/libmp.a.tmp 180668891 88476 /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 Equivalent Patches: None Patch Package Size: 12660 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_9927 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHSS_9927.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_9927.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_9927. 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_9927.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_9927.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None