PROBLEM: (CLD HPAQ76CC9) (Patch ID: OSF405-400091) ******** The cc compiler would hang when trying to compile a file containing many thousands of "#line" directives. The compiler now compiles such files without hanging. PROBLEM: (QAR 45667) (Patch ID: OSF405-400091) ******** This fixes a problem in which the compiler would return 8 bytes of code (4 bytes of data plus 4 bytes of zeros), for routines which are defined to return 4-byte structures. The extra 4 bytes of zeros would corrupt the next variable on the stack. This problem only occurs in applications which are built with DEC C++ V5.1 or earlier which make calls to such routines. PROBLEM: (QAR 46728) (Patch ID: OSF405-400091) ******** A non-standard use of the __builtin_va_start compiler builtin was causing the compiler to crash. PROBLEM: (QAR 47664) (Patch ID: OSF405-400091) ******** The compiler preprocessor was incorrectly issuing a warning diagnostic on the use of an octal constant. PROBLEM: (QAR 48122) (Patch ID: OSF405-400091) ******** The compiler was not issuing a diagnostic for the use of the "long double" datatype. A warning is issued now. PROBLEM: (QAR 49944) (Patch ID: OSF405-400149) ******** This patch fixes a compiler problem where the DEC C compiler will generate incorrect code for switch statements whose expression is of type short or type char. The problem occurs at all optimization levels. This problem can be identified by running the following test program. % cat a.c main() { short step = 1; do { switch (step++) { case 1 : printf("step = 1\n"); break; case 2 : printf("step = 2\n"); break; } } while (step <= 2); } # The incorrect program output is: % cc a.c ; a.out step = 1 # The correct program output is: % cc a.c ; a.out step = 1 step = 2 The version of this fixed compiler is "DEC C V5.2-035". PROBLEM: (QAR 51448) (Patch ID: OSF405-400187) ******** This patch fixes a crash in the DEC C compiler that occurs when compiling a structure whose tag is longer than 256 characters. The problem occurs only when compiling with debug symbols (-g). Below is an example of a program that will cause this crash. % cat test.c #define a(x) x##x##x##x##x##x##x##x##x##x##x##x##x##x##x##x struct a(XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX); % cc -g test.c cc: Fatal: A memory access violation (bus error or segmentation fault) has occurred. Please submit a problem report. PROBLEM: (Patch ID: OSF405-400257) ******** Fixes "Assertion failure: Compiler internal error" compiler crash that occurred when compiling xemacs editor. The compiler would crash in certain cases where one expression is an lvalue and the other an rvalue. The workaround was to use "cc -oldc". PROBLEM: (Patch ID: OSF405-400257) ******** Fixes "Invalid expression" compiler error with valid token-pasting macro that occurred when compiling a public domain calc program. PROBLEM: (QAR 51915, QAR 47301) (Patch ID: OSF405-400257) ******** Fixes "Fatal: memory access violation" compiler crash that occurred when the left side of a structure pointer operator (->) was not an lvalue. This case should produce a compilation error and not a compiler crash. PROBLEM: (OSF_QAR 57232/CLD HPAQB11) (Patch ID: OSF405-400473) ******** A compiler code generation problem that caused incorrect code for a left shift operation on a signed int in ANSI (-std/-std1) compilation modes. PROBLEM: (OSF_QAR 57443) (Patch ID: OSF405-400473) ******** A structure-return temporary was not preserved until later used in an enclosing function call. This was originally reported in the comp.unix.osf.osf1 newgroup. PROBLEM: (DECC 2212) (Patch ID: OSF405-400473) ******** A "GEM ASSERTION, Compiler internal error" problem when compiling a complex conditional expression with -O0. This compiler problem did not occur at other optimization levels.