home *** CD-ROM | disk | FTP | other *** search
/ IBM Presents OS/2 Software Hits 1995 / OS-2_SW_HITS_2ND_EDITION_1995.ISO / i17 / ctc0011.doc < prev    next >
Text File  |  1995-01-04  |  90KB  |  1,434 lines

  1.                         C Set ++ Compiler Version 2.0
  2.                                  Fixes List
  3.                         -----------------------------
  4. This package includes the following files:
  5.  
  6.     CTC0010 ZIP15BL4 - Zipped file
  7.     CTC0010 DOC15BL4 - Document for v2.0 libraries
  8.  
  9. The file once downloaded with the binary option, needs to be
  10. unpacked using PKUNZIP2 onto the system disk.
  11.  
  12.  
  13.  
  14. ************************************************************************
  15. *                                                                      *
  16. * This CSD contains fixes that are common to C/C++ Tools Version 2.0   *
  17. * and Version 2.01.  Not with standing the version  statements         *
  18. * contained in the files of this CSD, this is not an upgrade of        *
  19. * Version 2.0 to Version 2.01.                                         *
  20. *                                                                      *
  21. * The code to which you have access is determined by the version of    *
  22. * the software to which you are licensed.                              *
  23. *                                                                      *
  24. ************************************************************************
  25. ========================================================================
  26.                     CTC0011 is informal Corrective Service
  27. ************************************************************************
  28. FIX/APAR  COMPONENT  PROBLEM DESCRIPTION
  29. ------------------------------------------------------------------------
  30. QUAL-IMP  BE         Compiling a module without a main() function
  31.                      using the /O /Ol /Gu options result a compile-
  32.                      time trap.
  33.  
  34. ------------------------------------------------------------------------
  35. QUAL-IMP  BE         When the multiplication of char or short constants
  36.                      results in an overflow, incorrect code may be
  37.                      generated if the results of the multiply is used
  38.                      in a comparison.
  39.  
  40. -----------------------------------------------------------------------
  41. QUAL-IMP  BE         An internal problem could result in a compile-time
  42.                      exception when compiling a switch with /O+ /Ti+.
  43.  
  44. ------------------------------------------------------------------------
  45. QUAL-IMP  BE         In rare cases, stack space allocated by _alloca()
  46.                      could become corrupted when using auto-inlining.
  47.  
  48. ------------------------------------------------------------------------
  49. QUAL-IMP  BE         Fixed an internal problem which in rare
  50.                      circumstances could cause incorrect code generation
  51.  
  52. ------------------------------------------------------------------------
  53. PJ15990   BE         ICL: When compiling with /Fw to generate
  54.                      intermediate files, a bug in the ICL could result
  55.                      in the incorrect intermediate files which causes
  56.                      the compiler backend to trap.
  57.  
  58. ------------------------------------------------------------------------
  59. PJ16021   BE         Defining an uninitialized variable of type double
  60.                      in more than one module results in a LINK386 L2025
  61.                      error (symbol defined more that once).
  62.  
  63. ------------------------------------------------------------------------
  64. PJ15991   BE         ICL: A bug in the ICL could cause a compile-time
  65.                      trap in the compiler back end when the /Ol+ option
  66.                      is used.
  67.  
  68. ------------------------------------------------------------------------
  69. PJ15987   BE         An internal problem occurring during register
  70.                      assignment could cause a compile-time exception.
  71.  
  72. ------------------------------------------------------------------------
  73. PJ16024   BE         Fixes a problem where the epilog of a function could
  74.                      be incorrect if the function contains a call to
  75.                      _alloca.
  76.  
  77. ------------------------------------------------------------------------
  78. PJ15881   BE         Statements of the form "x ? INT_MAX : INT_MIN;"
  79.                      could be optimized incorrectly.
  80.  
  81. ------------------------------------------------------------------------
  82. PJ15876   BE         The last compare and jump in strncat() should be
  83.                      unsigned rather that signed.
  84.  
  85. ------------------------------------------------------------------------
  86. PJ15882   BE         Fixed a problem where compiling with /Gr and then
  87.                      running at ring 0 causes a Stack Segment Overrun
  88.                      trap.
  89.  
  90. ------------------------------------------------------------------------
  91. PJ15880   BE         Incorrect code may be generated when a conditional
  92.                      expression is logically negated and used as the test
  93.                      expression within an if statement.
  94.  
  95. ------------------------------------------------------------------------
  96. PJ15894   BE         The conversion from a segmented pointer to a flat
  97.                      pointer may not occur if the _Seg16 pointer is cast
  98.                      to an int.
  99.  
  100. ------------------------------------------------------------------------
  101. PJ15935   BE         Fixes a register assigning problem which could
  102.                      cause a run-time trap when calling a function via
  103.                      a pointer.
  104.  
  105. ------------------------------------------------------------------------
  106. PJ16023   BE         Fixes a problem where compiling with /Ti+ causes
  107.                      the compiler to create a huge temporary file.
  108.  
  109. ------------------------------------------------------------------------
  110. PJ15986   BE         A problem occurring while trying to optimize the
  111.                      usage of registers could result in incorrect code
  112.                      generation.
  113.  
  114. ------------------------------------------------------------------------
  115. PJ15883   BE         In rare cases, the generated code for the builtin
  116.                      version of strcmp could be incorrect when one of
  117.                      it's parameters is a function.
  118.  
  119. ------------------------------------------------------------------------
  120. PJ15993   BE         Consecutive / and % operators with identical
  121.                      operands inside simple loops could be compiled
  122.                      incorrectly.
  123.  
  124. ------------------------------------------------------------------------
  125. PJ15869   BE         Compiling an "if" that contains a negated ternary
  126.                      expression could cause a compile-time trap.
  127.  
  128. ------------------------------------------------------------------------
  129. QUAL-IMP  BE         Using #pragma alloc_text() to place a function
  130.                      in  the default code segment (CODE32) may result
  131.                      in a run-time exception since two CODE32 segments
  132.                      may be created.
  133.  
  134. ------------------------------------------------------------------------
  135. PJ15872   BE         Fixed an internal problem that could cause a
  136.                      compile-time trap when compiling an simple "if"
  137.                      containing the logical negation of a floating-
  138.                      point variable.
  139.  
  140. ------------------------------------------------------------------------
  141. QUAL-IMP  BE         Incorrect debug information generated which could
  142.                      cause IPMD to fail.
  143.  
  144. -------------------------------------------------------------------------
  145. QUAL-IMP  BE         When using the /Gt option, static arrays of the
  146.                      same type could be mapped on top of each other
  147.                      in rare cases.
  148.  
  149. ------------------------------------------------------------------------
  150. PJ16038   BE         Fixes a register assigner bug that could cause
  151.                      incorrect register spills/reloads of 8 or 16 bit
  152.                      values.
  153.  
  154. ------------------------------------------------------------------------
  155. PJ15870   BE         In rare cases, the code generated for the builtin
  156.                      version of memchr could be incorrect when using
  157.                      the /G5 option.
  158.  
  159. ------------------------------------------------------------------------
  160. PJ15994   BE         Instruction scheduling could cause code containing
  161.                      consecutive memsets to fail.
  162.  
  163. ------------------------------------------------------------------------
  164. PJ15996   BE         An internal problem occurring during loop unrolling
  165.                      could result in a compile-time exception.
  166.  
  167. ------------------------------------------------------------------------
  168. PJ15933   BE         An illegal MOV instruction could be generated when
  169.                      converting a 32-bit value to an 8-bit value.
  170.  
  171. ------------------------------------------------------------------------
  172. PJ15934   BE         An internal problem occurring while handling
  173.                      floating-point parameters in registers could cause
  174.                      a compile-time trap.
  175.  
  176. ------------------------------------------------------------------------
  177. PJ16313   BE         Incorrect code may be generated when converting an
  178.                      integer value to a floating-point value if the
  179.                      integer variable is used after the conversion.
  180.  
  181. ------------------------------------------------------------------------
  182. PJ16037   C++FE      In some rare cases, compiler might corrupt
  183.           CFE        identifier names that are also macro names not
  184.                      eligible for macro expansion.
  185.                      e.g., #define max(a,b) (((a) > (b)) ? (a) : (b))
  186.                            int max;
  187.                                       ! -> max here could be corrupted
  188.  
  189. ------------------------------------------------------------------------
  190. QUAL-IMP  CFE        Compiler is not generating correct code for the side
  191.                      effect in the following 'if' statement:
  192.                        if (*++p == '-0' && ]1) ;
  193.                      'p' does not get incremented as expected.
  194.  
  195. -------------------------------------------------------------------------
  196. QUAL-IMP  CFE        Compiler is not correctly recognizing that
  197.                      statements in a 'switch' before any 'case' or
  198.                      'default' are unreachable.
  199.  
  200. -------------------------------------------------------------------------
  201. PJ15888   CFE        Declaration of function returning pointer to array
  202.                      of unsigned int without 'int' specifier is
  203.                      misinterpreted.
  204.                        i.e.,  (*foo())-| {}
  205.                      causes the compiler to generate erroneous error
  206.                      message.  It should be accepted in the same way
  207.                      as:
  208.                        int (*foo())-| {}
  209.  
  210. -----------------------------------------------------------------------
  211. PJ15887   CFE        Compiler incorrectly issues error message for the
  212.                      following correct code segment:
  213.                        char * const kpz;
  214.                        kpzφ0∙ = '-0';
  215.  
  216. ------------------------------------------------------------------------
  217. QUAL-IMP  CFE        Compiler hangs when compiling source code with
  218.                      comment on the last line and the comment exceeds the
  219.                      right margin.
  220.  
  221. ------------------------------------------------------------------------
  222. PJ16029   CFE        Calling from 16 bit to 32 bit, and passing a pointer
  223.                      does not result in the pointer being automatically
  224.                      thunked.
  225.  
  226. -------------------------------------------------------------------------
  227. PJ16028   CFE        When ICC is invoked to compile a large number of
  228.                      files in a command line or a response file, ICC
  229.                      fails with message "Severe Error: Unable to retrieve
  230.                      messages from message file."
  231.  
  232. ------------------------------------------------------------------------
  233. PJ16027   CRT        If the result from internal function called by
  234.                      strtod() would cause underflow exception, it is
  235.                      rounded to zero, with proper error signaling.
  236.  
  237. ------------------------------------------------------------------------
  238. PJ15886   CRT        strdup() allocates memory with malloc(), so it
  239.                      cannot be freed in a program that was compiled
  240.                      with /Gt+.  Changes to the heap algorithm now permit
  241.                      any type of memory (normal, tiled, or debug) to be
  242.                      passed to any kind of free() or realloc() function.
  243.                      In the case of realloc(), the resulting memory will
  244.                      be of the same type as the original.
  245.  
  246. -----------------------------------------------------------------------
  247. PJ15885   CRT        _LHUGE_VAL is a macro that is defined in math has
  248.                      being a reference to an external variable.  The
  249.                      variable was notbeing exported from the library
  250.                      DLL. This has been corrected.
  251.  
  252. ------------------------------------------------------------------------
  253. PJ15884   CRT        Floating point number formatting has been changed
  254.                      to better handle any precision for floating point
  255.                      numbers.
  256.  
  257. ------------------------------------------------------------------------
  258. PJ16026   CRT        tmpnam() used to produce the same name in the first,
  259.                      tenth hundreth call. It is guaranteed that it
  260.                      will now make TMP_MAX unique names.
  261.  
  262. -------------------------------------------------------------------------
  263. PJ16273   CRT        getcwd() and getdcwd() library functions will fail
  264.                      on OS/2 Warp if the caller does not specify a
  265.                      buffer.
  266.  
  267. ------------------------------------------------------------------------
  268. PJ16025   BE         In case of running out of file handles, tempnam()
  269.                      will increase the number of allowable file handles
  270.                      and try again.
  271.  
  272. ------------------------------------------------------------------------
  273. QUAL-IMP  DLLRNAME   DLLRNAME may not be able to handle renaming DDE4SBS.
  274.                      DLL in the current directory.
  275.  
  276. ------------------------------------------------------------------------
  277. PJ16030   DLLRNAME   Attempting to rename a DLL in another directory            ME
  278.                      with DLLRNA results in the renamed DLL being left
  279.                      in the current directory.
  280.  
  281. ------------------------------------------------------------------------
  282. PJ16031   CPPFILT    CPPFILT has been modified so that it doesn't use
  283.                      CMD.EXE to invoke a sub-program.
  284.  
  285. -------------------------------------------------------------------------
  286. PJ16057   C++FE      The compiler was issuing an incorrect error for the
  287.                      conversion of a pointer to a pointer to member of
  288.                      the same type.
  289.  
  290. ------------------------------------------------------------------------
  291. PJ16083   C++FE      The compiler was generating an error for a user
  292.                      defined postfix increment operator for an enum.
  293.  
  294. ------------------------------------------------------------------------
  295. PJ16055   C++FE      The value oxFFFFFFFF was not being accepted as a
  296.                      valid enum value.  It's size was also being set
  297.                      to the wrong size.
  298.  
  299. ------------------------------------------------------------------------
  300. QUAL-IMP  C++FE      Mysterious external variables ___nnn being generated
  301.                      with the /O+ compile option.
  302.  
  303. ------------------------------------------------------------------------
  304. PJ16056   C++FE      #pragma export of an overloaded const and non-const
  305.                      function was generating an error, and only one
  306.                      function was being exported.
  307.  
  308. ------------------------------------------------------------------------
  309. QUAL-IMP  C++FE      New "#pragma defineonly" to match the AIX C Set++
  310.                      compiler
  311.  
  312. ------------------------------------------------------------------------
  313. PJ15905   C++FE      The compiler was trapping when it tried to issue
  314.                      an error message for the invalid use of extern "C++"
  315.                      as a function parameter.
  316.  
  317. ------------------------------------------------------------------------
  318. PJ15930   C++FE      The compiler displayed 65536 as the column number
  319.                      when the source file is a precompiled header file.
  320.                      This cause a problem  when trying to invoke an
  321.                      editor automatically under the WorkFrame.  The fix
  322.                      is to display 1 as the column number when the source
  323.                      file is a precompiled header.
  324.  
  325. ------------------------------------------------------------------------
  326. PJ15931   C++FE      In an array of dimension N containing pointers to
  327.                      memeber, and with M initializers where M < N, the
  328.                      remaining N-M members should be initialized to zero.
  329.                      Instead, they were being left uninitalized and the
  330.                      first N-M were being zeroed.
  331.  
  332. -------------------------------------------------------------------------
  333. PJ16032   C++FE      Fixed problem with accessing base classes in
  334.                      hierarchies containing virtual base classes.
  335.  
  336. ------------------------------------------------------------------------
  337. PJ16275   C++FE      In some cases, temporary objects were being
  338.                      destructed twice.  In some other cases, objects
  339.                      caught in a catch clause were not being destructed
  340.                      at all.
  341.  
  342. ------------------------------------------------------------------------
  343. QUAL-IMP  Samples    PMLINES sample program in SAMPLE1A used the
  344.                      WinPeekMsg() API incorrectly, causing the sample to
  345.                      fail on OS/2 Warp.
  346.  
  347. **********************************************************************
  348.                CTC0010 is informal Corrective Service
  349. **********************************************************************
  350. FIX/APAR  COMPONENT  PROBLEM_DESCRIPTION
  351. -----------------------------------------------------------------------
  352. PJ14307   BE         A dangling assignment to a floating point
  353.                      parameter inside a function can cause a
  354.                      floating point stack overflow if called
  355.                      often enough
  356. -----------------------------------------------------------------------
  357. PJ14318   BE         This fix will correct a boundary problem that
  358.                      occurs often compiling with option /Gt+ if
  359.                      your program contains static data objects
  360.                      exactly equal to 64K in Size.  the problem
  361.                      does not occur when option /Gt- is specified.
  362. -----------------------------------------------------------------------
  363. PJ14309   BE         Fixed a register problem that may occur when
  364.                      using _allocate with optimization.
  365. -----------------------------------------------------------------------
  366. PJ14310   BE         A floating-point parameter for a function call
  367.                      could be set up incorrectly if the call is
  368.                      the last operation in a function (the tail
  369.                      call optimization).
  370. -----------------------------------------------------------------------
  371. PJ14311   BE         Storing a char into an int and then later
  372.                      storing the back into the char could, in very
  373.                      rare circumstances, produce incorrect code.
  374. -----------------------------------------------------------------------
  375. PJ14312   BE         Nested for loops in which the iteration
  376.                      variables are members of the same structure
  377.                      may cause incorrect code generation.
  378. -----------------------------------------------------------------------
  379. PJ14313   BE         Floating-point parameters may be left on the
  380.                      NPX register stack if there is an "if {...}"
  381.                      immediately above a "for (;;)" loop near the
  382.                      start of a function. This can later result in
  383.                      a floating point stack overflow exception.
  384. -----------------------------------------------------------------------
  385. PJ14314   BE         An internal problem could result in a compile-
  386.                      time exception when processing a function
  387.                      with floating-point parameters.
  388. -----------------------------------------------------------------------
  389. PJ14315   BE         Calling a function with two or more similar
  390.                      aggregate parameters could result in incorrect
  391.                      code generation.
  392. -----------------------------------------------------------------------
  393. PJ14316   BE         Incorrect code could be generated for 16-bit
  394.                      operation that use the BP register when optim-
  395.                      izing code without the /Op- compile parameter
  396.                      also specified.
  397. -----------------------------------------------------------------------
  398. PJ14317   BE         If a conditional break inside an infinite
  399.                      loop jumps to a return, static variables used
  400.                      in the loop may not be correct at the return.
  401. -----------------------------------------------------------------------
  402. QUAL-IMP  BE         Accessing an int as a bitfield structure has
  403.                      undefined behaviour according to the ANSI C
  404.                      standard.  However, the behaviour has been
  405.                      changed so that it is more in line with
  406.                      "intuitively obvious" behaviour.
  407. ---------------------------------------------------------------------
  408. PJ14424   BE         In very rare circumstances, incorrect code
  409.                      may be generated when the only use of a
  410.                      parameter ia a copy to a local variable.
  411. ----------------------------------------------------------------------
  412. QUAL-IMP  BE         Division and remainder operations that
  413.                      conditionally execute within a loop could be
  414.                      moved outside of the loop, perhaps causing
  415.                      unexpected divide-by-zero exceptions. (a result
  416.                      of the invariant code motion optimizations)
  417. -----------------------------------------------------------------------
  418. PJ14579   BE         Under rare circumstances, due to an internal
  419.                      problem, compiling a large C++ module with
  420.                      /O+ /Ti+ can cause a compile-time exception.
  421. -----------------------------------------------------------------------
  422. QUAL-IMP  C++FE      The compiler was not restricting the change
  423.                      of char to signed or unsigned char during
  424.                      integral promotions only.
  425.                      They are three distinct types.
  426.                       Note:  This fix may cause code that previously
  427.                      compiled cleanly to produce errors.  It is
  428.                      simply the compiler detecting an error that it
  429.                      wasn't detecting previously.
  430. -----------------------------------------------------------------------
  431. PJ14428   C++FE      When a variable is initialized , any temporaries
  432.                      that are created in the initializer expression
  433.                      should have their destruction delayed until
  434.                      the end of the block.  For a reference variable
  435.                      to a ternary expression this is not the case
  436.                      and the destructors are being called too soon.
  437. ------------------------------------------------------------------------
  438. PJ14431   C++FE      Compiler traps while generating a message
  439.                      for an inaccessible constant expression in
  440.                      a switch statement
  441. ------------------------------------------------------------------------
  442. QUAL-IMP  C++FE      Compiler may trap when generating the error
  443.                      message EDC3004:  "{" statement is not allowed
  444.                      in this scope.
  445. ------------------------------------------------------------------------
  446. QUAL-IMP  C++FE      The compiler issues an invalid error message
  447.                      for an unrecognized type when the symbol is
  448.                      actually a template argument T.
  449. ------------------------------------------------------------------------
  450. QUAL-IMP  C++FE      The compiler generates an error when trying
  451.                      to pass a array argument to a class template
  452.                      that takes a char * arg.
  453. ------------------------------------------------------------------------
  454. QUAL-IMP  C++FE      A declaration without a type specification
  455.                      causes the C++ compiler front end to trap
  456.                      when generating an error message.
  457. ----------------------------------------------------------------------
  458. QUAL-IMP  C++FE      The C++ compiler front end traps when compi-
  459.                      ling a statement of the form:
  460.                       <function typedef> <_Optlink specifier>
  461.                      <functin name> (<empty argument list>)
  462. -----------------------------------------------------------------------
  463. PJ14433   C++FE      The C++ compiler is restricting the use of:
  464.                         #pragma comment(user,"..")
  465.                      It can only occur once in a source file and
  466.                      must appear before any C++ statements.
  467. ------------------------------------------------------------------------
  468. PJ14434   C++FE      The compiler is not generating a temp when
  469.                      passing an array to a function that takes a
  470.                      const char  * const & argument.  This results
  471.                      in a bad address being passed to the function.
  472. -----------------------------------------------------------------------
  473. QUAL-IMP  C++FE      When a nested type that is a typedef is used
  474.                      as a base class the compiler checks the access
  475.                      of the target of the typedef instead of the
  476.                      typedef name and an invalid access error is
  477.                      generated.
  478. ------------------------------------------------------------------------
  479. QUAL-IMP  C++FE      The C++ language specifies that for non-mem-
  480.                      ber operator functions, at least one of the
  481.                      arguments must be of class type, reference
  482.                      to class, enum type, or reference to enum.
  483.                      The compiler is generating an error for the
  484.                      definition of a operator + function that
  485.                      takes an enum and an int as parameters.
  486. ------------------------------------------------------------------------
  487. QUAL-IMP  C++FE      Initialization of static reference variables
  488.                      is happening at runtime static initialization
  489.                      instead of at compile time.
  490. ------------------------------------------------------------------------
  491. PJ14445   C++FE      The preprocessor may generate the invalid error:
  492.                      "The suffix for the floating point constant
  493.                      is not valid."
  494.                      when concatenating two valid tokens together
  495.                      to form a floating point constant.
  496. ------------------------------------------------------------------------
  497. QUAL-IMP  C++RT      A program that supplies its own version of
  498.                      delete may have had the compiler supplied
  499.                      version called instead of the user version
  500.                      when linking dynamically.
  501. QUAL-IMP  C++RT      Fixed problem where a duplicate symbol error
  502.                      wasd generated by the linker when a user provi-
  503.                      ded global new() was linked into a program
  504.                      that also called set_new_handler().
  505. ------------------------------------------------------------------------
  506. PJ14347   CFE        If a variable is first declared as 'static'
  507.                      variable in file scope, then declaration of
  508.                      the same variable name in function scope
  509.                      should refer to the same variable.  This
  510.                      linkage of identifiers does not work properly
  511.                      when /Ti+ is not specified.
  512. -----------------------------------------------------------------------
  513. PJ14346   CFE        Compiler generated segmented to flat pointer
  514.                      conversion is missing for the following code
  515.                      segment:
  516.                        char * fp;
  517.                        unsigned long l = 0;
  518.                        fp = l < 0
  519.                             ? 0
  520.                             : (char* _Seg16)(void*)(void* _Seg16)l;
  521. ------------------------------------------------------------------------
  522. PJ14343   CFE        Compiler internal error occurs compiling unu-
  523.                      sually large program with optimization turned
  524.                      on.
  525. ------------------------------------------------------------------------
  526. PJ14345   CFE        #pragma margins and /Sg options causes errone-
  527.                      eous /Wppc info message when the line ends at
  528.                      the right margin.
  529. ------------------------------------------------------------------------
  530. PJ14325   CFE        After Invoking the compiler from a network
  531.                      drive with preload (/Tl) enabled, the network
  532.                      drive stays locked.
  533. ------------------------------------------------------------------------
  534. PJ14329   CFE        In macro expansion, preprocessor mistreats
  535.                      two dots followed by any character as an
  536.                      elipsis.
  537.                        #define test left..right
  538.                       test is expanded to left..right
  539. ------------------------------------------------------------------------
  540. QUAL-IMP  CFE        Some #line directives with file names specified
  541.                      are not processed properly by the compiler.
  542. -----------------------------------------------------------------------
  543. QUAL-IMP  CFE        The compiler is failing to provide a closing
  544.                      double quote (") on the executable name when
  545.                      calling LINK386.  This does not cause a prob-
  546.                      lem with LINK386.EXE, but could cause problems
  547.                      with other linkers.
  548. -----------------------------------------------------------------------
  549. QUAL-IMP  CFE        When ICC is compiling TEMPINC files, it is
  550.                      possible that compiling one TEMPINC file will
  551.                      update another one an make it out of date.
  552.                      ICC needs to loop doing TEMPINC compiles
  553.                      until all objects are up to date.
  554. -----------------------------------------------------------------------
  555. PJ14445   CFE        The preprocessor erroneous issues an error
  556.                      message for the following legal macro expansion:
  557.                       #define MAKEHEX(a) 0x##a
  558.                       float j = MAKEHEX(2e);
  559. ------------------------------------------------------------------------
  560. PJ14454   CFE        The C compiler generates incorrect code when
  561.                      evaluating the address of an array of array
  562.                      of structure members within another structure,
  563.                      with array index of 0. e.g for the following
  564.                      structure, the values of
  565.                      &s2.s1û1σû0σ.j and &s2.s1û1σ->j are not
  566.                      evaluated properly:
  567.                        struct {
  568.                           int i;
  569.                           struct {
  570.                              int j;
  571.                           } s1û2σû3σ;
  572.                        } s2;
  573. -----------------------------------------------------------------------
  574. PJ14279   CRT        getcwd() fails intermittently, returning an
  575.                      OS/2 error.
  576. ------------------------------------------------------------------------
  577. PJ14281   CRT        The spawnx() and execx() families of funct-
  578.                      ions sometimes pass a incorrect parameter
  579.                      list to the child process.
  580. -----------------------------------------------------------------------
  581. PJ14308   CRT        When a file is opened for low level I/O in
  582.                      text mode, and the last character read from
  583.                      the file is a carriage return ('\r'), the
  584.                      _read() function moves the file pointer back
  585.                      by 1. This causes incorrect results only if
  586.                      the next operation on the file is write()
  587.                      or _tell().
  588. -----------------------------------------------------------------------
  589. PJ14456   CRT        The TZ variable in the environment does not
  590.                      support timezones which are not an integral
  591.                      number of hours different from GMT.  The
  592.                      format of the TZ variable has been changed
  593.                      to support this now.  The format is now:
  594.                       SSSû+|-σhhû:mmû:ssσσDDDû,sm,sw,st,em,ew,ed,
  595.                       et,shiftσûσ indicates optional parameters.
  596.                       Note the addition of the minutes and seconds
  597.                      to the offset.
  598. ------------------------------------------------------------------------
  599. PJ14455   CRT        On OS/2 2.11, the DosKillThread API cannot
  600.                      kill C library routines that get input from
  601.                      the keyboard.  This works on OS/2 2.0 and 2.1,
  602.                      although it has unpredictable side effects.
  603.                      The library has been changed to allow this
  604.                      particular use of DosKillThread() to work
  605.                      safely on OS/2 2.11.  Using the DosKillThread()
  606.                      API still has unpredictable side effects on
  607.                      OS/2 2.0 and 2.1 (an OS limitation).
  608. ------------------------------------------------------------------------
  609. QUAL-IMP  SCL        A bug in ostrstream causes program to trap.
  610.                      The actual bug is inside streambuf's sync().
  611.                      It tries to put the end of line chrarcter
  612.                      into an empty stream buffer.
  613. ------------------------------------------------------------------------
  614. PJ14427   SCL        Memory is allocated by the iostream library
  615.                      during static initialization, but is not being
  616.                      freed during termination.
  617.                      This causes a memory leak if the iostream
  618.                      functins are statically linked to a DLL which
  619.                      is dynamically loaded and unloaded.
  620. ------------------------------------------------------------------------
  621. ========================================================================
  622.                CTC0009 is formal Corrective Service
  623. The following fixes are provided in Compiler CS CTC0009
  624. *************************************************************************
  625. FIX/APAR    COMPONENT     PROBLEM_DESCRIPTION
  626. -----------------------------------------------------------------------
  627. PJ13703     CFE           Defining the first token in a program as
  628.                           a character string with the /D option
  629.                           causes an internal compiler error
  630. -----------------------------------------------------------------------
  631. QUAL-IMP    CFE           Label not found message does not
  632.                           indicate which label is not found.
  633. -----------------------------------------------------------------------
  634. QUAL-IMP    CFE           Internal compiler error while generating
  635.                           /Wenu messages for program with 'case'
  636.                           statement outside 'switch' scope.
  637. -----------------------------------------------------------------------
  638. PJ13705     BE            Fixed a parameter passing problem that
  639.                           occurs when the last statement of a
  640.                           function is to a _Pascal function.
  641. -----------------------------------------------------------------------
  642. QUAL-IMP    BE            Allow the optimizer to assign registers
  643.                           a little more efficiently in certain
  644.                           circumstances.
  645. -----------------------------------------------------------------------
  646. PJ13706     BE            A loop that contains a goto to a return
  647.                           could, in rare cases, cause incorrect
  648.                           code generation.
  649. -----------------------------------------------------------------------
  650. PJ12329     CRT           A 16-bit function will get a protection
  651.                           exception if the function has a large
  652.                           automatic storage area.  This problem
  653.                           occurs on secondary threads, and happens
  654.                           because the stack is not committed when
  655.                           the thread begins execution and the
  656.                           16-bit code does not have stack probes.
  657.                           The compiler runtime code that sets up
  658.                           the 16bit stack needs to commit it.
  659. -----------------------------------------------------------------------
  660. PJ13704     CRT           Compiling 16-32 callback funtions with
  661.                           static link results in duplicate references
  662.                           when linking.
  663.                           Reference APAR PJ12507
  664. -----------------------------------------------------------------------
  665. QUAL-IMP    CRT           Now checking if a destructor exists
  666.                           during error recovery in __vec__copy().
  667.                           May have caused traps
  668. =========================================================================
  669.                CTC0008 is informal Corrective Service
  670. The following fixes are provided in Compiler CS CTC0008
  671. *************************************************************************
  672. FIX/APAR      COMPONENT     PROBLEM DESCRIPTION
  673. -----------------------------------------------------------------------
  674. PJ12307          BE         Cannot access local variables of callback
  675.                             functions within the Debugger.
  676. -----------------------------------------------------------------------
  677. PJ12325          BE         Incorrect code may be generated for a
  678.                             conditional increment or decrement if the
  679.                             comparison is signed.
  680. -----------------------------------------------------------------------
  681. PJ12340          BE         The conversion of an address to a segmented
  682.                             address may be incorrectly done if the
  683.                             address involves an index calculation
  684.                             (ie: &array{i-1})
  685. -----------------------------------------------------------------------
  686. PJ12341          BE         A register used by strncat() could be
  687.                             clobbered under rare circumstances and
  688.                             cause incorrect behaviour.
  689. -----------------------------------------------------------------------
  690. PJ12376          BE         Fixed an internal problem with the handling
  691.                             of conditional increments with side effects.
  692. -----------------------------------------------------------------------
  693. PJ12431          BE         Incorrect register selection could cause
  694.                             incorrect results when performing a bitwise
  695.                             AND (&) with a constant.
  696. -----------------------------------------------------------------------
  697. PJ12507        BE & CRT     Compiling 16 to 32 callback functions with
  698.                             /Gh+ causes a run-time trap.
  699. -----------------------------------------------------------------------
  700. QUAL-IMP         BE         Incorrect register selection could lead to
  701.                             traps or unexpected results with 32 to 16 to
  702.                             16 to 32 code.
  703. -----------------------------------------------------------------------
  704. QUAL-IMP         BE         Fixed a problem similarto PJ11975 for
  705.                             conditional decrements.
  706. -----------------------------------------------------------------------
  707. PJ12567          CRT        Exception handler was not deregistered within
  708.                             heap_check when using /TM+
  709. -----------------------------------------------------------------------
  710. PJ12326          CFE        If listing is enabled (/Ls, /Li, or /Lj) and
  711.                             the source code contains nested #if, #elif
  712.                             and #ifdef, the compiler might fail with
  713.                             unexpected compiler error.
  714. -----------------------------------------------------------------------
  715. PJ12327      CFE & C++FE    After compiling programs with preload turned
  716.                             on, sometimes the front-end traps after the
  717.                             compilation is completed.
  718. -----------------------------------------------------------------------
  719.  PJ12477         CFE        The compiler was not checking against
  720.                             possible errors reading the source and
  721.                             header files.
  722. -----------------------------------------------------------------------
  723.  PJ12490         CFE        ICC will be changed to ignore /Si+ option
  724.                             when /Fb+ option is specified.
  725. -----------------------------------------------------------------------
  726. QUAL-IMP         CFE        Pre-load program was not checking the return
  727.                             codes from some API calls.
  728. -----------------------------------------------------------------------
  729. QUAL-IMP         CFE        If the compiler is first invoked from a
  730.                             directory with preload option enabled, while
  731.                             the compiler stays loaded, the user is
  732.                             prevented from removing the directory.
  733.                             This is inconvenient for the user.
  734. -----------------------------------------------------------------------
  735. QUAL-IMP         CFE        Compiling program with function calls with
  736.                             very large number of arguments causes
  737.                             compiler to trap.
  738. -----------------------------------------------------------------------
  739. PJ12378          C++FE      If a class is _Exported, then a member
  740.                             function is subsequently defined to be
  741.                             "inline", the compiler still tells the linker
  742.                             to export the function.  This causes an
  743.                             "undefined external" linker error.
  744. -----------------------------------------------------------------------
  745. PJ12388          C++FE      A C++ program compiled with optimization
  746.                             will cause the front-end to trap if a "const
  747.                             int" static class data member is referenced
  748.                             with explicit class qualification.
  749. -----------------------------------------------------------------------
  750. PJ12427          C++FE      Erroneous conversion error between typedefs,
  751.                             friend functions and the use of the friend
  752.                             function.
  753. -----------------------------------------------------------------------
  754. PJ12445          C++FE      Compiler trap processing declaration of const
  755.                             var symbol previously used without being
  756.                             declared.
  757. ------------------------------------------------------------------------
  758. PJ12479          C++FE      Preprocessor trap when processing a macro
  759.                             defined to NULL
  760. ------------------------------------------------------------------------
  761. PJ12492          C++FE      When one anonymous union is nested inside
  762.                             another in a C++ program, incorrect addresses
  763.                             are generated for the union members.
  764. ------------------------------------------------------------------------
  765. QUAL-IMP         C++FE      Fixed #pragma page() and #pragma skip() so
  766.                             that a listing file will not be generated if
  767.                             the listing option is not activated on the
  768.                             command line.
  769. ------------------------------------------------------------------------
  770. QUAL-IMP         C++FE      If the argument list of a macro is supplied
  771.                             via another macro, the macro might not be
  772.                             expanded as expected.
  773.                             Note: Corresponding CFE fix was implemented
  774.                                   in CTC0006 as PJ11929
  775. ------------------------------------------------------------------------
  776. QUAL-IMP         C++FE      Wrapper <demangle.h> with #pragma pack
  777. ------------------------------------------------------------------------
  778. PJ12328          UTIL       When a new C Set++ project (ie. no compiler
  779.                             options have been set), is invoked under the
  780.                             build action on the WorkFrame, the compiler
  781.                             DLL will return the default action.  The
  782.                             default action is not to generate any .W
  783.                             files.
  784. ------------------------------------------------------------------------
  785. PJ12522          UTIL       Munch was giving the error "assert
  786.                             <line_number> invalid object record." This
  787.                             error was incorrectly being produced for
  788.                             valid object record formats.
  789. ========================================================================
  790.                CTC0007 is informal Corrective Service
  791. The following fixes are provided in Compiler CS CTC0007 and later CS
  792. *************************************************************************
  793. FIX/APAR      COMPONENT     PROBLEM DESCRIPTION
  794. ------------------------------------------------------------------------
  795.  PJ11951       BE & CFE     The optimizer misses a chance to inline
  796.                             certain C++ functions.
  797. ------------------------------------------------------------------------
  798.  PJ11979         CFE        In source code:
  799.                             int main (void) {
  800.                                 int a, b; b = 1; a = 2; return 0;
  801.                             }
  802.                             The symbols for a and b are generated in a
  803.                             different order depending on whether /Ti is
  804.                             on.  They should be generated in the same
  805.                             way no matter what the /Ti setting is.
  806. ------------------------------------------------------------------------
  807. QUAL-IMP         CFE        When /La compiler option is used, some of the
  808.                             structures and unions are incorrectly shown
  809.                             in the listing
  810. ------------------------------------------------------------------------
  811. PJ12108          CRT        Library fixes made to solve problems when
  812.                             debug allocated objects were freed with
  813.                             non-debug routines and vice-versa.
  814.                             In addition the environment variable
  815.                             DDE4_HEAP_SKIP was added whereby the user can
  816.                             skip the _heap_check that occur when debug
  817.                             routines are invoked. The syntax is as
  818.                             follows:
  819.  
  820.                             set DDE4_HEAP_SKIP=increment,starting
  821.  
  822.                             where: 'increment' is how often a
  823.                             heap_check will be invoked, and 'starting'
  824.                             (which is optional) is how many calls to
  825.                             debug memory routines must occur before
  826.                             heap_checks are done.
  827.  
  828.                             Example: DDE4_HEAP_SKIP=100,1000
  829.                             will perform a heap_check after 1000 debug
  830.                             memory routines have been called and on every
  831.                             100 calls after that.
  832.  
  833.                             Example: DDE4_HEAP_SKIP=50
  834.                             will perform a heap_check on every 50 calls
  835.                             made to a debug memory routine
  836.  
  837.                             Note: If DDE4_HEAP_SKIP is not set in the
  838.                             environment then the default will be to
  839.                             invoke heap_check on every call to a debug
  840.                             memory routine.
  841. ========================================================================
  842.                CTC0006 is informal Corrective Service
  843. The following fixes are provided in Compiler CS CTC0006 and later CS
  844. *************************************************************************
  845. FIX/APAR      COMPONENT     PROBLEM DESCRIPTION
  846. -------------------------------------------------------------------------
  847. PJ11896          BE         Optimization Problem: A for loop that
  848.                             functions like a memcpy() could be
  849.                             incorrectly optimized if the source of the
  850.                             copy is a struct member.
  851. -------------------------------------------------------------------------
  852. PJ11952          BE         Optimization Problem: An internal problem
  853.                             with expression simplification could result
  854.                             in incorrect code generation.
  855. -------------------------------------------------------------------------
  856. PJ11953          BE         Optimization Problem: Within an inner switch
  857.                             of nested switches, a goto jumping to a break
  858.                             for the outer switch could be turned into a
  859.                             break for the inner switch.
  860. -------------------------------------------------------------------------
  861. PJ11975          BE         Optimization Problem: Statements of the form:
  862.                             "if (f1 < f2) i++", where f1 and f1 have
  863.                             floating-point datatypes, could cause a
  864.                             compile-time exception in the BE.
  865. -------------------------------------------------------------------------
  866. QUAL-IMP         BE         Optimization Problem: MOD operations could
  867.                             generate results of the wrong sign if both
  868.                             operands are negative.  Similar results could
  869.                             occur for MOD and DIV by a negative power of
  870.                             2.
  871. -------------------------------------------------------------------------
  872. QUAL-IMP         BE         Fixed a small problem with the generated
  873.                             assembler listing file - an incorrect symbol
  874.                             could be used.
  875. -------------------------------------------------------------------------
  876. PJ11872          C++FE      Fixed a trap in the C++ frontend.  The trap
  877.                             occurred when we tried to compile a source
  878.                             file that contained a class that had 2
  879.                             declarations of the same friend function and
  880.                             a typedef for that function.
  881. -------------------------------------------------------------------------
  882. PJ11887          C++FE      Fixed a trap when compiling code with a
  883.                             definition of a function with _Far16 _Pascal
  884.                             linkage.
  885. -------------------------------------------------------------------------
  886. PJ11981          C++FE      If a conversion function yields a reference
  887.                             to a class with constructors, and a temporary
  888.                             is built from the result of that conversion,
  889.                             the temporary is initialized by bitwise
  890.                             copying instead of by calling its copy
  891.                             constructor.
  892. -------------------------------------------------------------------------
  893. PJ11982        C++FE      The compiler will deliberately not inline
  894.                             some functions if doing so would break C++
  895.                             exception handling.  However, when exception
  896.                             handling is disabled by /Gx+, the compiler
  897.                             still fails to inline those functions.
  898. -------------------------------------------------------------------------
  899. PJ11983          C++FE      A complex expression containing more than one
  900.                             conditional subexpression (i.e. the  x ? y :
  901.                             z construct) may be generated such that the
  902.                             subexpressions are evaluated in the wrong
  903.                             order.
  904. -------------------------------------------------------------------------
  905. PJ11984          C++FE      An inline function consisting of a single
  906.                             return statement that returns a
  907.                             type-converted parameter may be incorrectly
  908.                             inlined.
  909. -------------------------------------------------------------------------
  910. PJ11881          CFE        Sizeof typedef within sizeof sometimes
  911.                             returns arbitrary value.
  912. -------------------------------------------------------------------------
  913. PJ11929          CFE        If the argument list of a macro is supplied
  914.                             via another macro, the macro might not be
  915.                             expanded as expected.
  916. -------------------------------------------------------------------------
  917. PJ11889          CRT        If the function that executes when a thread
  918.                             begins execution calls 16-bit code, then
  919.                             EDCThunkProlog is called from within the
  920.                             function prolog.  EDCThunkProlog tries to
  921.                             access data that is outside the stack frame,
  922.                             and since this is the first frame on the
  923.                             stack, that storage is not allocated to the
  924.                             stack.  A protection exception occurs.
  925. =========================================================================
  926.                CTC0005 is informal Corrective Service
  927. The following fixes are provided in Compiler CS CTC0005 and later CS
  928. *************************************************************************
  929. FIX/APAR      COMPONENT     PROBLEM DESCRIPTION
  930.  ------------------------------------------------------------------------
  931. PJ11625           BE         Optimization Problem: Compiling source that
  932.                             contains floating-point code could cause a
  933.                             compile-time trap in the backend.
  934. ------------------------------------------------------------------------
  935. PJ11688          BE         Optimization Problem: Statements of the form
  936.                             "do { i++; } while (condition); i--;" could
  937.                             be incorrectly optimized.
  938. ------------------------------------------------------------------------
  939. PJ11692          BE         Incorrect debug info could be generated for a
  940.                             data member of a class with type "char *
  941.                             const".
  942. ------------------------------------------------------------------------
  943. PJ11695          BE         Optimization Problem: Instruction scheduling
  944.                             could clobber the result of constant multiply
  945.                             across a call.
  946. ------------------------------------------------------------------------
  947. PJ11696          BE         Optimization Problem: Using an int variable
  948.                             as an array of chars within a loop could
  949.                             result in incorrect code generation.
  950. ------------------------------------------------------------------------
  951. PJ11697          BE         Optimization Problem: Statements of the form
  952.                             "while (cond) { if (--i) { i++; break; } }"
  953.                             could be incorrectly optimized.
  954. ------------------------------------------------------------------------
  955. PJ11698          BE         Optimization Problem: If the "count" paramter
  956.                             of strncat() is a builtin string function,
  957.                             incorrect code could be generated.
  958. ------------------------------------------------------------------------
  959. PJ11699          BE         Optimization Problem: Tail calling a _Pascal
  960.                             function from another function could result
  961.                             in an exception at run-time.
  962. ------------------------------------------------------------------------
  963. PJ11701          BE         strncat() could copy one byte even if "count"
  964.                             parameter is a variable of value 0.
  965. ------------------------------------------------------------------------
  966. QUAL-IMP         BE         Optimization Problem: Adding two negative
  967.                             numbers and then negating the result could be
  968.                             optimized incorrectly.
  969. ------------------------------------------------------------------------
  970. QUAL-IMP         BE         Without optimization, an expression of the
  971.                             form "*((char*)&arrayûindexσ+i)" could
  972.                             generate an incorrect OBJ even though the
  973.                             ASM is correct.
  974. ------------------------------------------------------------------------
  975. PJ11491          C++FE      new() is not returning a valid pointer when
  976.                             allocating a 0-sized array.
  977. ------------------------------------------------------------------------
  978. PJ11492          C++FE      The delete() operator for an object was not
  979.                             being called with the debug parameters when
  980.                             that object was being deleted because its
  981.                             constructor threw an exception.
  982. ------------------------------------------------------------------------
  983. PJ11574          C++FE      Reduce the long link times and large swapper
  984.                             file created when linking C++ programs that
  985.                             contain templates.
  986. ------------------------------------------------------------------------
  987. PJ11575          C++FE      If a virtual base class appears more than
  988.                             once in the class hierarchy, then one copy of
  989.                             if may be initialized several times and the
  990.                             other copies not initialized.
  991. ------------------------------------------------------------------------
  992. PJ11584          C++FE      The compiler may crash when generating debug
  993.                             information for a class that has no
  994.                             user-supplied nor compiler-generated inline
  995.                             functions.  This is rare, since there are
  996.                             usually some compiler-generated ones.
  997. ------------------------------------------------------------------------
  998. PJ11585          C++FE      If a C++ compilation includes definitions of
  999.                             classes that contain virtual functions, all
  1000.                             of which are inline functions, the compiler
  1001.                             will generate those classes and functions
  1002.                             whether or not they are actually used.  This
  1003.                             fix generates them only when necessary
  1004. ------------------------------------------------------------------------
  1005. QUAL-IMP         C++FE      A C++ program containing a brace-enclosed
  1006.                             statement block outside of a function body
  1007.                             crashes the front-end when compiled with
  1008.                             /Wuse+ if there is an unused label define
  1009.                             in the block
  1010. ------------------------------------------------------------------------
  1011. QUAL-IMP         C++FE      A goto within a catch block is incorrectly
  1012.                             diagnosed as a jump into the catch block,
  1013.                             which is illegal since it bypasses
  1014.                             initialization of the catch variable
  1015. ------------------------------------------------------------------------
  1016. QUAL-IMP         C++RT      Fixed memory leak that occurred when memory
  1017.                             is allocated for an object however, it is not
  1018.                             constructed because it's constructor threw an
  1019.                             exception.
  1020. ------------------------------------------------------------------------
  1021. PJ11702          CFE        The compiler is not recognizing a constant
  1022.                             expression properly when initialization
  1023.                             involves an array within a structure within
  1024.                             an array of structures
  1025. ------------------------------------------------------------------------
  1026. PJ11703          CFE        Using CSD 1 of C Set ++, the test case is
  1027.                             expected to have a warning message, but the
  1028.                             compiler should not be trapping.
  1029. ------------------------------------------------------------------------
  1030. PJ11686          CRT        The problem lies in reading across memory
  1031.                             blocks.  The code did not take into account
  1032.                             of the number of characters read in from the
  1033.                             previous blocks and hence reading more than
  1034.                             necessary.
  1035. ------------------------------------------------------------------------
  1036. PJ11687          CRT        AL register will now be set by the library
  1037.                             when making a call to DosGetMessage.
  1038. =========================================================================
  1039.                CTC0004 is informal Corrective Service
  1040. The following fixes are provided in Compiler CS CTC0004 and later CS
  1041. *************************************************************************
  1042. FIX/APAR      COMPONENT     PROBLEM DESCRIPTION
  1043. ------------------------------------------------------------------------
  1044. PJ11127          BE         Optimization Problem: Multiplying a variable
  1045.                             by a constant and the adding or subtracting 1
  1046.                             could result in incorrect code generation.
  1047. ------------------------------------------------------------------------
  1048. PJ11128          BE         Optimization Problem: An internal problem
  1049.                             could result in traps or unexpected results
  1050.                             with 32 to 16 or 16 to 32 code.
  1051. ------------------------------------------------------------------------
  1052. PJ11129          BE         Optimization Problem: In rare circumstances,
  1053.                             doing arithmetic with shorts could result in
  1054.                             traps or unexpected results.
  1055. ------------------------------------------------------------------------
  1056. PJ11134          BE         Optimization Problem: The result of a right
  1057.                             shift of a negative value, though
  1058.                             implementation defined, could differ at /O-
  1059.                             and /O+.
  1060. ------------------------------------------------------------------------
  1061. PJ11135          BE         Optimization Problem: The backend could abort
  1062.                             with fatal error EDC4005 in intermediate file
  1063.                             ROOPT when optimizing an if-then-else.
  1064. ------------------------------------------------------------------------
  1065. PJ11137          BE         Optimization Problem: Expressions of the
  1066.                             form: "*(float *) &var", where var is an int,
  1067.                             could cause a compile-time back-end trap.
  1068. ------------------------------------------------------------------------
  1069. PJ11138          BE         Optimization Problem: An internal problem
  1070.                             occuring when compiling floating-point code
  1071.                             could cause a compile-time back-end trap.
  1072. ------------------------------------------------------------------------
  1073. PJ11139          BE         Incorrect code could be generated when
  1074.                             negating a char variable and then storing the
  1075.                             result into an int variable.
  1076. ------------------------------------------------------------------------
  1077. PJ11140          BE         Optimization Problem: Statements of the form:
  1078.                             "x--; if (cond) x += 2;" may be incorrectly
  1079.                             optimized.
  1080. ------------------------------------------------------------------------
  1081. PJ11141          BE         Run-time traps could occur in code using 16
  1082.                             to 32 callback functions if the code crossed
  1083.                             a 64K boundary.
  1084. ------------------------------------------------------------------------
  1085. PJ11142          BE         When using strncat(), an extra NULL was being
  1086.                             appended to the end of the destination string
  1087.                             if the length of the source string was less
  1088.                             than "n".
  1089. ------------------------------------------------------------------------
  1090. PJ11143          BE         Optimization Problem: Statements of the form:
  1091.                             "if (]x) {y = 0;} else {y = 1;}" could cause
  1092.                             a compile-time trap if x is a float-point
  1093.                             type.
  1094. ------------------------------------------------------------------------
  1095. QUAL-IMP         BE         Under certain conditions, the optimizer could
  1096.                             leave around some useless LEA instructions.
  1097.                             This has now been fixed.
  1098. ------------------------------------------------------------------------
  1099. QUAL-IMP         BE         When exporting callback functions, an
  1100.                             incorrect symbol could be used, resulting in
  1101.                             link errors.
  1102. ------------------------------------------------------------------------
  1103. PJ11176          CFE        Compiler generates incorrect code for
  1104.                             referencing array of array in structure
  1105.                             with array index of 0.
  1106.                             ie:  a.bûiσû0σ.c = 1;  a.bûiσ->c = 2;
  1107. ------------------------------------------------------------------------
  1108. PJ11177          CFE        If a variable is first declared and then
  1109.                             initialized both with a typedef type and
  1110.                             a qualifier, the compiler generates incorrect
  1111.                             code.
  1112.                             ie:  const typedef_name var;
  1113.                                  const typedef_name var = 0;
  1114. ------------------------------------------------------------------------
  1115. PJ11179          CFE        When initializing a member of a structure
  1116.                             casting the member to _Seg16 pointer causes
  1117.                             unexpected compiler error.
  1118. ------------------------------------------------------------------------
  1119. PJ11180          CFE        When #pragma handler is specified for some
  1120.                             functions, the compiler randomly generates
  1121.                             incorrect code that exports some of those
  1122.                             functions.
  1123. ------------------------------------------------------------------------
  1124. PJ11181          C++FE      The following message is produced when both
  1125.                             sides of a conditional expression are the
  1126.                             same:
  1127.                             recoverable EDC4005: Error occured in
  1128.                                         intermediate file RBEXPR(4902)
  1129. ------------------------------------------------------------------------
  1130. PJ11182          C++FE      An initialized function-scope static variable
  1131.                             will cause the C++ front end to GPF if a
  1132.                             compiler temporary is required when
  1133.                             evaluating the initializing expression.
  1134. ------------------------------------------------------------------------
  1135. PJ11183          CRT        FILE struct members violate user name space.
  1136. ------------------------------------------------------------------------
  1137. PJ11185          CRT        MATHERR not handling domain errors.
  1138. =========================================================================
  1139.                CTC0003 is informal Corrective Service
  1140. The following fixes are provided in Compiler CS CTC0003 and later CS
  1141. *************************************************************************
  1142. FIX/APAR      COMPONENT     PROBLEM DESCRIPTION
  1143. ------------------------------------------------------------------------
  1144. PJ10704          BE         Incorrect debug information could cause IPMD
  1145.                             to trap in DDE4BE32.DLL while debugging C++
  1146.                             programs.
  1147. ------------------------------------------------------------------------
  1148. PJ10705          BE         Incorrect debug information for const member
  1149.                             functions could cause expression evaluation
  1150.                             problems in IPMD.
  1151. ------------------------------------------------------------------------
  1152. PJ10706          BE         Incorrect debug information could cause IPMD
  1153.                             to hang when debugging large programs.
  1154. ------------------------------------------------------------------------
  1155. QUAL-IMP         BE         Incorrect debug information could confuse
  1156.                             IPMD while debugging C++ programs.
  1157. ------------------------------------------------------------------------
  1158. PJ10461          CRT        Serialization code used in the runtime
  1159.                             library may cause system traps. This
  1160.                             usually occurs when one of the thread
  1161.                             unexpectedly terminates.
  1162. ------------------------------------------------------------------------
  1163. PJ10703          C++RTL     CPPFILT utility truncates the mangled
  1164.                             function names if it is greater than 233
  1165.                             characters.
  1166. =========================================================================
  1167.                CTC0002 is formal Corrective Service
  1168. The following fixes are provided in Compiler CS CTC0002 and later CS
  1169. *************************************************************************
  1170. FIX/APAR      COMPONENT     PROBLEM DESCRIPTION
  1171. ------------------------------------------------------------------------
  1172. PJ10544           BE        Optimization Problem: Compiling with /G5 /Ms
  1173.                             may optimize SUB ESP,4 into PUSH EAX at
  1174.                             inappropriate places.
  1175. ------------------------------------------------------------------------
  1176. PJ10545           BE        Incorrect code may be generated when copying
  1177.                             structures whose size is less than 12 bytes.
  1178. ------------------------------------------------------------------------
  1179. PJ10546           BE        Optimization Problem: An internal problem
  1180.                             during common subexpression elimination could
  1181.                             cause a compile-time exception.
  1182. ------------------------------------------------------------------------
  1183. PJ10547           BE        Optimization Problem: Incorrect code
  1184.                             generation may result when optimizing a loop
  1185.                             that contains a goto which acts like a break.
  1186. ------------------------------------------------------------------------
  1187. PJ10549           BE        Optimization Problem: Instruction scheduling
  1188.                             may move instructions out of the protected
  1189.                             area between _disable and _enable.
  1190. ------------------------------------------------------------------------
  1191. PJ10550           BE        Optimization Problem: Returning a floating
  1192.                             point value as an integer may cause problems
  1193.                             on machines without FP co-processors when
  1194.                             compiled with /O and either /G4 or /G5.
  1195. ------------------------------------------------------------------------
  1196. PJ10552           BE        The enum data offset field of a COMDAT placed
  1197.                             in a user segment was being set to a non-zero
  1198.                             value.
  1199. ------------------------------------------------------------------------
  1200. PJ10553           BE        Optimization Problem: An internal problem
  1201.                             could cause a compile-time trap when
  1202.                             compiling with /O+ /Gf+.
  1203. ------------------------------------------------------------------------
  1204. PJ10556           BE        The BE was not growing the number of file
  1205.                             handles available.  This caused a
  1206.                             compile-time exception when the BE ran out of
  1207.                             file handles.
  1208. ------------------------------------------------------------------------
  1209. PJ10557           BE        Optimization Problem: Calling a 32-bit
  1210.                             function from the last statement of a _Far16
  1211.                             _Pascal function could be compiled
  1212.                             incorrectly.
  1213. ------------------------------------------------------------------------
  1214. PJ10558           BE        Optimization Problem: The incorrect register
  1215.                             may be cleared when returning 0.
  1216. ------------------------------------------------------------------------
  1217. PJ10559           BE        A constant left-shifted by another constant
  1218.                             may be folded incorrectly when compiled with
  1219.                             /Gi.
  1220. ------------------------------------------------------------------------
  1221. PJ10560           BE        Optimization Problem: Tail call optimization
  1222.                             was being incorrectly applied to a call to a
  1223.                             pascal linkage function from a system linkage
  1224.                             function.
  1225. ------------------------------------------------------------------------
  1226. QUAL-IMP          BE        Optimization Problem: Bad register selection
  1227.                             around switch statements could cause
  1228.                             incorrect code generation.
  1229. ------------------------------------------------------------------------
  1230. QUAL-IMP          BE        With C++, returning a complex structure from
  1231.                             a function whose destructor has been inlined
  1232.                             could be compiled incorrectly.
  1233. ------------------------------------------------------------------------
  1234. QUAL-IMP          BE        An internal problem could cause a
  1235.                             compile-time trap when compiling, with /Gr
  1236.                             /Rn, a _Far32 _Pascal function that returns a
  1237.                             pointer.
  1238. ------------------------------------------------------------------------
  1239. PJ10478          CFE        The preprocessor was getting an internal
  1240.                             compiler error for certain macro expansion.
  1241. ------------------------------------------------------------------------
  1242. PJ10477          CFE        If a source/header file contains null
  1243.                             characters, the compiler gets an internal
  1244.                             compiler error and may result in a huge
  1245.                             swapper that may bring down your system.
  1246. ------------------------------------------------------------------------
  1247. QUAL-IMP         CFE        Error message was being erroneously issued
  1248.                             when '_Export" keyword or '#pragma export'
  1249.                             are specified more than once for the same
  1250.                             object.
  1251. ------------------------------------------------------------------------
  1252. PJ10566        C++FE        Conversion function results in an
  1253.                             unconstructed temporary. No constructor was
  1254.                             called for the temporary object.
  1255. ------------------------------------------------------------------------
  1256. PJ10567        C++FE        When passing a class as a by value parameter
  1257.                             a temporary is not used and the class is
  1258.                             passed by reference.
  1259. ------------------------------------------------------------------------
  1260. PJ10568        C++FE        Member friend incorrectly inherits function
  1261.                             linkage from linkage specifier.
  1262. ------------------------------------------------------------------------
  1263. PJ10569        C++FE        Invalid Error message EDC3458 produced.
  1264. -----------------------------------------------------------------------
  1265. PJ10570        C++FE        GPF calling virtual member function of a
  1266.                             template class when the module uses #pragma
  1267.                             data_seg.
  1268. ------------------------------------------------------------------------
  1269. PJ10571        C++FE        Invalid error for postfix operator ++ on a
  1270.                             reference in a conditional expression.
  1271. ------------------------------------------------------------------------
  1272. PJ10572        C++FE        Invalid error message EDC3276 and GPF when
  1273.                             compiling a conditional expression.
  1274. ------------------------------------------------------------------------
  1275. QUAL-IMP       C++FE        Runtime GPF accessing static data member
  1276.                             at location 0.
  1277. ------------------------------------------------------------------------
  1278. QUAL-IMP      C++FE        /Ms causes a runtime GPF when exception
  1279.                             handling is used.
  1280. ------------------------------------------------------------------------
  1281. PJ10462          CRT        Thunk Prologue incorrectly probes stack
  1282.                             causing system traps. This may occur
  1283.                             with any 32-16 calls not in thread one.
  1284. ------------------------------------------------------------------------
  1285. QUAL-IMP         CRT        Free not handling debug object. An debug
  1286.                             memory object (as allocated by the debug
  1287.                             memory routine) can cause system trap
  1288.                             after it is passed to the regular free()
  1289.                             function for freeing.
  1290. ------------------------------------------------------------------------
  1291. QUAL-IMP         CRT        Spawn/Exec family functions should ignore
  1292.                             net error. If the net error is not ignored,
  1293.                             the search on the PATH stops prematurely,
  1294.                             which may cause spawns/exec functions not to
  1295.                             find any program whose path appears
  1296.                             after the net work path causing the error.
  1297. ------------------------------------------------------------------------
  1298. QUAL-IMP        UTIL        Compiler dialog did not parse a file when the
  1299.                             file contains a '//' comment.  It ignored
  1300.                             lines after the '//' character until a blank
  1301.                             line is reached.
  1302. ------------------------------------------------------------------------
  1303. QUAL-IMP        UTIL        Dialog did not free up memory when saving
  1304.                             or retrieving information to/from the project
  1305.                             file extended attribute.
  1306. =========================================================================
  1307.                CTC0001 is informal Corrective Service
  1308. The following fixes are provided in Compiler CS CTC0001 and later CS
  1309. *************************************************************************
  1310. FIX/APAR      COMPONENT     PROBLEM DESCRIPTION
  1311. ------------------------------------------------------------------------
  1312. PJ09575         DOC         Hitting Ctrl H in EPM for contextual help
  1313.                             did not work for printf or scanf.  A change
  1314.                             was made in the DDE4CLIB.NDX file..
  1315. ------------------------------------------------------------------------
  1316. QUAL-IMP        ICC         When /Fa compilation switch was used to
  1317.                             create assembler file, and a template file
  1318.                             was compiled, the compiler trapped.
  1319. ------------------------------------------------------------------------
  1320. QUAL-IMP        ICC         Added the description of /Tm option to ICC
  1321.                             help.
  1322. ------------------------------------------------------------------------
  1323. PJ09573         FE          Fixed the compiler to disallow illegal
  1324.                             initialization of two-dimensional array
  1325.                             of char with character string without braces.
  1326. ------------------------------------------------------------------------
  1327. PJ09574         FE          Structure initialization failed with an
  1328.                             extra set of braces.
  1329. ------------------------------------------------------------------------
  1330. QUAL-IMP        FE          Usage of _Export keyword caused the compiler
  1331.                             to fail.
  1332. ------------------------------------------------------------------------
  1333. QUAL-IMP       UTIL         Beta project causes Workframe to trap.
  1334. ------------------------------------------------------------------------
  1335. QUAL-IMP       UTIL         Update English panels to fix a Japanese
  1336.                             VGA screen.
  1337. ------------------------------------------------------------------------
  1338. QUAL-IMP       UTIL         Remove the minimize capability of the
  1339.                             notebook dialog.
  1340. ------------------------------------------------------------------------
  1341. QUAL-IMP       UTIL         No keyboard focus when the notebook dialog
  1342.                             first appears.
  1343. ------------------------------------------------------------------------
  1344. QUAL-IMP       UTIL         Incorrect focus when Alt key is pressed
  1345.                             inside a dialog.
  1346. ------------------------------------------------------------------------
  1347. QUAL-IMP       UTIL         /Xc should not generate any command line
  1348.                             include paths.
  1349. ------------------------------------------------------------------------
  1350. QUAL-IMP       C++FE        The /Ms option is changing the linkage of
  1351.                             internally declared compiler functions.
  1352.                             This can result in runtime traps when using
  1353.                             memory management or C++ exception handling.
  1354. ------------------------------------------------------------------------
  1355. QUAL-IMP       C++FE        The linker fails when using /ND to rename
  1356.                             a data segment.  The compiler is generating
  1357.                             bad code for partially initialized
  1358.                             structures.
  1359. ------------------------------------------------------------------------
  1360. QUAL-IMP       C++FE        Using the compiler options /La or /Lb causes
  1361.                             the compiler to trap.
  1362. ------------------------------------------------------------------------
  1363. PJ09576        C++FE        Linking a program that contains templates
  1364.                             causes an invalid error to be generated by
  1365.                             lib.exe.  The error is "LIB0007: Error :
  1366.                             Unable to open D:\00900000.6.OBJ"
  1367. ------------------------------------------------------------------------
  1368. PJ09577        C++FE        Large program with many template functions,
  1369.                             (more than 1023), traps at runtime.
  1370. ------------------------------------------------------------------------
  1371. PJ09578        C++FE        When linking programs that contain templates
  1372.                             and object files that were generated by TASM
  1373.                             the message: "Unknown Record Type {ox..},
  1374.                             offset {..} is generated.
  1375. ------------------------------------------------------------------------
  1376. PJ09579        C++FE        The compiler is incorrectly resolving to a
  1377.                             function template instead of using a
  1378.                             previously declared member function.
  1379. ------------------------------------------------------------------------
  1380. PJ09580        C++FE        Object destructors are not always run after
  1381.                             a throw statement.
  1382. ------------------------------------------------------------------------
  1383. PJ09581        C++FE        Compiling code that uses _Far16 and _Pascal
  1384.                             keywords causes an internal compiler error:
  1385.                             "Exception #C0000005: 30751 occurred in
  1386.                             file .., function .."
  1387. ------------------------------------------------------------------------
  1388. QUAL-IMP       C++RT        Incorrectly handling exceptions in multiple
  1389.                             runtime environments.
  1390. ------------------------------------------------------------------------
  1391. PJ09568          BE         Compiling source files with the same names
  1392.                             may result in conflicting BSS static areas.
  1393. ------------------------------------------------------------------------
  1394. PJ09570          BE         Optimization Problem: Incorrect code could be
  1395.                             generated when the result of a comparison is
  1396.                             subtracted from a variable.
  1397. ------------------------------------------------------------------------
  1398. PJ09571          BE         The debug info could become corrupted in very
  1399.                             large files which results in only assembler
  1400.                             view being available within IPMD.
  1401. ------------------------------------------------------------------------
  1402. PJ09572          BE         Optimization Problem: An internal problem
  1403.                             during loop optimizations could cause a
  1404.                             compile-time exception in the back-end.
  1405. ------------------------------------------------------------------------
  1406. PJ09569          BE         Optimization Problem: Incorrect code could be
  1407.                             produced for loops ending with an
  1408.                             if-then-else where the last statement of the
  1409.                             else is a break.
  1410. ------------------------------------------------------------------------
  1411. QUAL-IMP         BE         Optimization Problem: An internal problem in
  1412.                             store removal could cause incorrect code.
  1413. -----------------------------------------------------------------------
  1414. QUAL-IMP         BE         Optimization Problem: An internal problem
  1415.                             may cause a compile-time exception in the
  1416.                             back-end.
  1417. ------------------------------------------------------------------------
  1418. QUAL-IMP         BE         Incorrect code generation for _Far16 _Pascal
  1419.                             functions that return floating-point types
  1420.                             could cause a run-time exception.
  1421. ------------------------------------------------------------------------
  1422. QUAL-IMP         BE         Optimization Problem: An internal problem,
  1423.                             when compiling with /Ti+, may cause incorrect
  1424.                             code generation for breaks within loops.
  1425. ------------------------------------------------------------------------
  1426. QUAL-IMP         BE         Optimization Problem: The optimizer was
  1427.                             incorrectly folding (0 / x) and (0 % x).
  1428. ------------------------------------------------------------------------
  1429. QUAL-IMP         BE         Casting a floating-point value to int and
  1430.                             then comparing the result to another int that
  1431.                             was previously cast from a floating-point
  1432.                             value may produce incorrect results.
  1433. =========================================================================
  1434.