Patch-ID# 102934-10 Keywords: C++ 4.1 SC4.0 SPARC Synopsis: SPARCompiler 4.0: Patch for C++ 4.1 on Solaris 2.x Date: May/13/97 Solaris Release: 2.3 2.4 2.5 SunOS Release: 5.3 5.4 5.5 Unbundled Product: SPARCompilers C++ Unbundled Release: 4.1 Relevant Architectures: sparc BugId's fixed with this patch: 1226522 1227358 1222655 1224115 1224620 1224648 1225605 1228409 1228905 1235082 1234253 1233117 1234256 1235257 1235548 1236931 1222588 1223494 1239102 1241450 1243099 1243872 1239885 1244459 1240427 1182572 1215408 1223150 1227133 1228791 1234253 1239249 1240555 1241209 1243278 1243311 1245226 1247567 1247609 1243691 1246357 1247503 1249422 1247609 1248851 1249530 1250039 1253124 1256287 1256450 1257276 1257761 1258108 1241169 1249437 1249530 1252133 1253162 1254431 1254473 1254898 1256287 1259124 1259493 1260259 1265054 1265545 1266434 1264715 4008948 4009400 4005681 1252155 1253454 1260259 1263726 4016549 4022750 Changes incorporated in this version: 1252155 1253454 1260259 1262279 1263726 4016549 4022750 Patches accumulated and obsoleted by this patch: Patches which conflict with this patch: Patches required with this patch: Obsoleted by: Files included with this patch: bin/dem bin/tdb_link bin/ccfe bin/c++filt bin/iropt bin/cg lib/libdem.a lib/libC.a lib/libcomplex.a lib/libcomplex.so lib/libcomplex.so.5 lib/libtask.a lib/libcx.a lib/libp/libcx.a Problem Description: (Rev 10) 1252155 small program crashes/loops compiler when inlining enabled 1253454 wrong code generated for inline function with deeply nested if stmt 1260259 Bug with coverting 4 byte code to 2 bytes. 1262279 code generator branches past statement after conditional test 1263726 Compiler runs out of memory when compiling large source file 4016549 program crashes 4.1 compiler with -O0 or -fast 4022750 C++ multi-threaded code generates a signal fault in critical section (Rev 9) 1266434 C++ compiler generates wrong error message and stops 1264715 delay (0) from libtask.a fails to schedule the new task 4008948 compiles w/-P and intermediate files produces multiple defs 4009400 C++ silently truncates huge macro 4005681 C++ compiler may not generate code for def constructor (Rev 8) 1241169 Undefined symbols for re-used templates 1249437 C++ 4.1 template dependencies not resolved correctly 1249530 4.0.1 -> 4.1 binary compatibility broken 1252133 C++ 4.1 cannot find template instantiations 1253162 virtual base in a class with complicated 1254431 Compiler failed if Templates.DB remain on C++4.1 1254473 inline functions with nested if statements 1254898 C++4.1 generates invalid stabs 1256287 C++ 4.0.1, with 101914-16, gives signal 11 1259124 C++4.1 is generating too many destructor calls 1259493 Cust. is wondering why his code works fine with C 1260259 Bug with coverting 4 byte code to 2 bytes. 1265054 Using C++4.1 on 2.5 strstream gets premature EOF 1265545 C++ 4.1 optimiser occasionally produces bogus code. (Rev 7) 1247609 compiler aborts due to a Signal 11 errorSALOMON 1248851 Memory leak caused by inlining bug in C++ 4.1 1249530 C++ 4.0.1 -> 4.1 binary compatibility broken 1250039 C++ 4.1 compiler has a memory leak when a ctor is thrown, operator overloaded. 1253124 C++ 4.1 memory corruption instantiating with virtual inheritance. 1256287 C++ 4.0.1, with 101914-16, gives signal 11 1256450 Getting anachronism messages when using STL s set 1257276 member enum value not correct for instantiation. 1257761 C++: Large inline function with exceptions causes destructor problems. 1258108 inline member template does not get inline (Rev 6) 1182572 dynamic_cast cannot recognize the reference type 1215408 C++ templates truncated when stored in a library with ar 1223150 Inlined member function with multiple returns in if block is incorrect 1227133 Program compiling fine with +d fails to compile with inlining turned on. 1228791 Compiler fails to compile inline function, works fine w.o. inlining 1234253 prog doesn't call destructor routine but reuses memory calling prog to core dump 1239249 Performance of executables built by C++ 4.0.1 is worse than those built by 3.0.1 1240555 Wrong symbolic link was created in template database by patch 1241209 Program gets seg fault when not compiled with -g option 1243278 C++ compiler dies during link if ptrepository is locked by another user 1243311 C++ program core dumps with inlining enabled 1245226 Unnecessary re-instantiations taking place 1247567 -xarch not getting passed to cg correctly 1247609 code causes compiler to crash 1249422 4.1 C++ compiler core dumps on particular input file (from cg updates) 1243691: C++ 4.1 (SC4.0) cg dumps core 1246357: -dalign, -O2, and -KPIC create bug for Dassault 1247503: cg behaves differently for different optimization levels - fails on 0 3 and 04. (Rev 5) 1243872 program using libtask coredumps 1223494 severe performance degradation caused by new() 1239102 Limit on number of #define s in C++ 1222588 destructor is not called for object instantiated 1241450 code compiled if LANG is set to other value than C 1243099 Compiler generates incorrect results in sv locale (iropt fixes) 1239885,1244459 iropt SEG FAULT at x04. 1240427: option -x04 produces incorrect code. (Rev 4) 1235548 C++ 4.0.1 codes has memory leak with -g0 option 1234256 inline bug with compile errors 1236931 demangler coredumps demangling mangled template name 1235257 Compiled fine on sc3.0.1; now c++ sc4.0 produces a signal 11 (Rev 3) 1235082 C++ program fails with an assertion error in prepexpression.cc at line 3 9 1234253 prog doesn't call destructor routine but reuses memory calling prog to core dump 1233117 C++ 4.x problem with inline functions under extern C function (Rev 1) 1222655 cg: cannot calculate difference between symbol ".LL4" and symbol "progra m" 1224115 A float argument has its value changed during an objectiveC method 1224620 Objective-C compiler generates incorrect constant NSStrings when 0 is em bedded 1224648 Objective-C compiler is too picky about "@class" predeclaration 1225605 chained message invocations aren't properly type checked 1226522 cg gives unnecessary warnings on lduha and sta instructions 1227358 cg gives an incorrect assertion and dies. 1228409 1228905 The compiler would sometimes crash attempting overload resolution when both operands of an operator are acceptable to a built-in operator, but both were not acceptable together. For example, if one operand is a char* and the other is of a class type that can be converted to a char*. For the bug to be manifest, there should also be a user-defined operator that makes the operation legal. Patch Installation Instructions: -------------------------------- Refer to the Install.info file for instructions on using the generic 'installpatch' and 'backoutpatch' scripts provided with each patch. Any other special or non-generic installation instructions should be described below as special instructions. Special Install Instructions: ----------------------------- None.