home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 29 Fixes_o / 29-Fixes_o.zip / ctc308.lst < prev    next >
File List  |  1997-08-18  |  80KB  |  1,625 lines

  1. ****************************************************************************
  2. *                      VisualAge C++ For OS/2 Version 3.0                  *
  3. *                            Compiler Subcomponent                         *
  4. *                                 Fixes List                               *
  5. ****************************************************************************
  6. *                                                                          *
  7. * This fixpak contains fixes that apply only to VisualAge C++ Version 3.0  *
  8. *     The fixpak must be applied using the provided installation tools.    *
  9. *                                                                          *
  10. ****************************************************************************
  11. *               Fixpak CTC308 is Informal Corrective Service               *
  12. ****************************************************************************
  13. FIX/APAR  COMPONENT  PROBLEM_DESCRIPTION
  14. ----------------------------------------------------------------------------
  15. AP 67264  BE         Fix an optimization problem with invalid calculation
  16.                      of the bitfield.
  17.  
  18. AP 68203  BE         With /Ti+, bad linnum record is generated in the
  19.                      object file. This causes the debug information to
  20.                      be presented incorrectly in the debugger's source
  21.                      view.
  22.  
  23. AP 69639  BE         In ring 0, SS is incorrectly associated for an
  24.                      indirect load where it should not be.
  25.  
  26. AP 69641  BE         In ring 0, set and restore ES correctly with respect
  27.                      to string operations in scheduler.
  28.  
  29. AP 69645  BE         Generate assembler correctly for source files with unix
  30.                      text format.
  31.  
  32. AP 69715  BE         Volatile qualifier ignored during loop optimization.
  33.  
  34. AP 70033  BE         Inlining of _xchg() causes a run time trap in certain
  35.                      circumstances.
  36.  
  37. AP 71552  BE         Fix an optimization bug - when floating point
  38.                      parameters are used in IString parameters in ofstream,
  39.                      the output stream may contain incorrect output.
  40.  
  41. AP 71779  BE         With smart linking, the jump instruction in the prolog
  42.                      code is wrong.
  43.  
  44. AP 71788  BE         Prevent preloading a NaN when initializing floating
  45.                      point registers in the loop entry.
  46.  
  47. AP 71948  BE         Floating point parameters used in the conditionals in
  48.                      multiple simple if-then-else statements cause compiler
  49.                      to trap.
  50.  
  51. AP 72057  BE         Fix an incorrect inlining for fabs() when converting
  52.                      a long double precision to double.
  53.  
  54. AP 72180  BE         Internal compiler error when there is a floating point
  55.                      store in the last statement of a fall-through case
  56.                      in switch statement.
  57.  
  58. AP 72336  BE         Fix an optimization problem with nested ternery
  59.                      expressions being used in an assignment statement.
  60.  
  61. AP 72483  BE         A floating point parameter may get clobbered in
  62.                      case where it is used in a loop.
  63.  
  64. AP 72586  BE         Fix an bitfield optimization problem that would
  65.                      cause incorrect sizing of the local stack.
  66.  
  67. AP 72763  BE         Improve ths local stack usage when many ternery
  68.                      expressions are used as function parameters.
  69.  
  70. AP 71339  BE         An assignment value made within relational expression
  71.                      should be stored back to memory after the relational
  72.                      expression.
  73.  
  74. AP 74468  BE         If the last function call before return has callee
  75.                      cleanup convention, the caller may trap at the return.
  76.  
  77. AP 75056  BE         Fix a particular instance where a mod expression used
  78.                      as a conditional expression generates incorrect result.
  79.  
  80. AP 75172  BE         Fix an incorrect increment problem in relational
  81.                      expressions.
  82.  
  83. AP 77025  BE         Generate correct code for stack probe when passing
  84.                      structure parameter in functions.
  85.  
  86. AP 77326  BE         Correct a scheduler problem with _inp() and _outp().
  87.  
  88. AP 78219  BE         Fix a case where /Oi+ will cause the compiler to
  89.                      trap.
  90.  
  91. AP 80033  BE         With /Gv, make sure we set and restore DS properly
  92.                      in instruction scheduler.
  93.  
  94. AP 80507  BE         A conditional expression is incorrectly evaluated in
  95.                      a simple if-then-else statement.
  96.  
  97. AP 80694  BE         Placing uninitialized structures in BSS segment
  98.                      rather than DATA32 segment.
  99.  
  100. AP 63115  C++FE      A combination of redefining a compiler reserved macro 
  101.                      (ie. -D__cplusplus) and passing an invalid argument 
  102.                      to a function causes a GPF in the compiler.
  103.  
  104.  
  105. AP 70180  C++FE      Wrong Virtual function could be call when the function 
  106.              is overriden in more than one of the paths to the virtual
  107.              base class.
  108.  
  109. AP 71191  C++FE      The destructor for the temporary used to hold the result
  110.              of a conditional expression (the result of the conditional
  111.              expression is a class with a destructor) can end up being 
  112.              called too often because of unnecesary calls to it within 
  113.              any or all of the three parts of the conditional 
  114.              expression.  
  115.  
  116. AP 71949  C++FE      Occasional C++ compiler crashes are observed when
  117.                      building C++ source containing templates.
  118.  
  119. AP 79112  C++FE      See AP 71191.
  120.  
  121. QI 67417  C++FE      If the /Ly+ option is used, a General Protection
  122.                      Fault may occur when generating the cross-reference
  123.                      lising if a variable in the source has a type whose
  124.                      name is more than 450 characters long.        
  125.  
  126. AP 65713  CFE        The C compiler would incorrectly mark some
  127.                      typedefs as seg16 after a #pragma seg16.
  128.  
  129. AP 66766  CFE        Fixed the problem of unexpected compiler error when
  130.                      using /Wenu option for some programs with switch
  131.                      statements.
  132.  
  133. AP 67956  CFE        Missing error message for extraneous semi-colon at
  134.                      file scope.
  135.  
  136. AP 71045  CFE        When a function call is evaluated, the side effects of 
  137.                      the evaluation of the function designator do not appear 
  138.                      until after the actual function call.
  139.  
  140. AP 72220  CFE        With /Tn option on, the C compiler gave
  141.                      insufficient information to the debugger
  142.                      causing it to sometimes start at the wrong
  143.                      line or not be able to show the source view.
  144.  
  145. AP 72580  CFE        The C compiler would sometimes give an internal
  146.                      compiler error when a precompiled header contained
  147.                      a "#pragma library" directive.
  148.  
  149. AP 76998  CFE        With the /Wtrd option on, the C compiler gave
  150.                      an informational message about casts between
  151.                      void* and other pointer types, stating that
  152.                      they were not compatible.  The C compiler will
  153.                      now only give the message for such casts if
  154.                      qualifiers are being cast away.
  155.  
  156. AP 78190  CFE        If a source file only contained #include statements
  157.                      and precompiled headers were used, the C compiler
  158.                      would incorrectly warn that the source file was
  159.                      empty.
  160.  
  161. QI 62544  CFE        Internal compiler error when /Fi, /Si and /Nd 
  162.                      options are used together.
  163.  
  164. QI 69632  CFE        When compiling with /Gr option, message EDC0506
  165.                      was missing when address of automatic variable
  166.                      was taken in function arguments or as part of
  167.                      an initialization.
  168.  
  169. QI 69779  CFE        The C compiler would sometimes give an internal
  170.                      compiler error when the _Packed qualifier was
  171.                      incorrectly used on something other than a struct
  172.                      or a union.
  173.  
  174. AP 74511  ICC        Corrected the problem that on some file systems,
  175.                      tempinc objects were not passed to the linker.
  176.  
  177. AP 71692  ICL        Compiling with /Olp for a big source file will trap
  178.                      the intermediate code linker.
  179.  
  180. AP 71759  ICL        Pragma handler is ignored.
  181.  
  182. AP 54724  ILINK      Under certain circumstances the linker is not able
  183.                      to open a file handle to access its message file.
  184.                      A sys3018 "message file not found" message is generated
  185.                      from within DosGetMessage().
  186.  
  187. QI 72756  ILINK      When an application was linked with debug
  188.                      packing and debug packing overflow occurred, parts
  189.                      of the generated program could not be debugged.
  190.                      In some cases this can cause the debugger
  191.                      to trap.
  192.                                                               
  193. AP 42834  RT         Floating-point numbers are not formatted correctly
  194.                      by the printf family of functions, including cout.
  195.                      The problem is a loss of precision which occurs when
  196.                      the format specification calls for many digits of
  197.                      precision (eg. 24 digits).
  198.  
  199. AP 51230  RT         Using _putenv() to unset a variable leaves garbage
  200.                      in the environment.  For instance, _putenv("xyz")
  201.                      does not remove xyz from environment.
  202.  
  203. AP 69338  RT         The locale for German in Germany (de_de) has the
  204.                      wrong abbreviation for Thursday.  It should be
  205.                      "Do" instead of "Don".
  206.  
  207. AP 69628  RT         The va_start and va_end macros should return (void).
  208.  
  209. AP 70116  RT         The iconv function fails to convert a string with a
  210.                      length over 2048 bytes, and returns an errno of
  211.                      E2BIG.
  212.  
  213. AP 70690  RT         The printf functions return incorrect count when a
  214.                      null string is formatted using "%s" specifier.  The
  215.                      output has the string "(null)", but the returned
  216.                      count does not account for these 6 characters.
  217.  
  218. AP 71422  RT         The getenv and putenv functions are case sensitive.
  219.  
  220. AP 72452  RT         The min() and max() macros in <stdlib.h> are not
  221.                      properly protected with an #ifndef block.  If the
  222.                      compilation unit has a different definition of min()
  223.                      and max(), the compile will fail.
  224.  
  225. AP 72949  RT         Whenever a DLL built with VisualAge C++ is loaded
  226.                      and freed by a program not built with VisualAge C++,
  227.                      the runtime will leak 64K of address space.
  228.  
  229. AP 74782  RT         _assert failure on _udestroy.
  230.  
  231.                      Application code should call _uclose before calling
  232.                      _udestroy, regardless of whether the heap was opened
  233.                      with _ucreate or _uopen.  In short, each process
  234.                      should call _uclose for each call to _ucreate or
  235.                      _uopen.
  236.  
  237.                      The other problem is applicable to Windows only.
  238.                      If the process that created the heap dies, the
  239.                      processes that have it open are unable to
  240.                      continue accsessing it, and other processes are   
  241.                      unable to open it.  The fix introduces two
  242.                      incompatibilities between different levels of
  243.                      FixPacks:
  244.  
  245.                      1. If two executables (.exe or .dll) statically link
  246.                      to the different levels of FixPacks (with and
  247.                      without the fix), memory blocks should not be freed
  248.                      across them, ie. application code should not
  249.                      allocate block in one dll and free it in another.
  250.  
  251.                      2. The runtime invades the name space of the
  252.                      semaphores and file mappings in the system if shared
  253.                      heaps are used.  All name that begin with the string
  254.                      "vacpp" should be consider as reserved in this case.
  255.  
  256. AP 79453  RT         The iconv function no longer supports xlt tables.
  257.                      This is incompatible with the iconv support that
  258.                      existed on OS/2 prior to CTC305. This is not
  259.                      applicable on Windows, since this support has never
  260.                      been provided by VisualAge C++ for Windows.
  261.  
  262. AP 80464  RT         The setlocale function does not recognize code page
  263.                      950 for Traditional Chinese (Taiwan).
  264.  
  265.  
  266. QI 51396  RT         The strptime function will fail to parse the weekday
  267.                      name or the month name for locales where names have
  268.                      common prefixes.  For example, some countries use
  269.                      Roman numerals as abbreviations for the month names.
  270.                      The first three months are "I", "II", and "III", but
  271.                      parsing stops after matching the first 'I'.
  272.  
  273. QI 57090  RT         The strptime() function is unable to parse Japanese
  274.                      dates that use abbreviations for the month name.
  275.  
  276. QI 57142  RT         The strftime and wcsftime functions give incorrect
  277.                      results for dates that are formatted using the era
  278.                      specifiers ("%Ec", "%EC", "%Ey", and "%EY").  This
  279.                      is a problem only when using a locale for Japan.
  280.  
  281. QI 63750  RT         The strftime and wcsftime functions give incorrect
  282.                      results for dates that are formatted using the era
  283.                      specifiers "%Ec" and "%EY" together in the format
  284.                      string.  When using a locale for Japan, the problem
  285.                      occurs for "%Ec" alone because the locale itself
  286.                      uses "%EY" in the expansion of "%Ec".
  287.  
  288. QI 70434  RT         Unable to open converters for code pages 1363 and
  289.                      1386. Entries for these tables are missing from
  290.                      iconv.lst.
  291.  
  292. QI 70750  RT         A call to debug_malloc to get storage off a heap
  293.                      that does not have available storage to satisfy the
  294.                      request, and the heap cannot be expanded, may result
  295.                      in runtime trap.
  296.  
  297. QI 72781  RT         In <stdarg.h>, va_start is defined as:
  298.  
  299.                      #define va_start(ap, last) ap = __vastart(last);
  300.  
  301.                      The comma at the end will cause problems when used
  302.                      in certain contexts, such as for loop or a comma
  303.                      expression.
  304.  
  305. QI 74553  RT         The fgetws function leaves a semaphore in the locked
  306.                      state.  When fgetws reaches EOF, it returns without
  307.                      unlocking the semaphore.  The next I/O operation
  308.                      (eg. fclose) on that file will hang the thread.
  309.    
  310. ****************************************************************************
  311.                 Fixpak CTC306 is Informal Corrective Service               *
  312. ****************************************************************************
  313. FIX/APAR  COMPONENT  PROBLEM_DESCRIPTION
  314. -------------------------------------------------------------------------
  315. AP 65346  BE         BE sometimes traps if the inner loop is evaluated
  316.                      such that the outer loop is folded away completely.
  317.  
  318. AP 66201  BE         In rare situations a variable is evaluated incorrectly
  319.                      after an array element is accessed if the variable is
  320.                      is postincremented in the array index.
  321.  
  322. AP 67228  BE         BE optimizes incorrectly and may generate incorrect
  323.                      code if the following pattern is in the source:
  324.                         c = ...;
  325.                         c = ... (in terms of c) ...;
  326.                      This occurs in rare instances as the BE incorrectly
  327.                      applies common subexpression elimination to such
  328.                      cases.
  329.  
  330. AP 67253  BE         Invalid opcode prefix '80' is generated in the object
  331.                      code for the intel OR/AND/ADD/SUB instruction with
  332.                      8-bit immediate.
  333.  
  334. AP 67798  BE         Fix defect in BE register assigner where a variable
  335.                      appears to hold an incorrect value under /O /G5
  336.                      optimization.
  337.  
  338. AP 67897  BE         Fix internal compiler error in BE if there is text
  339.                      after a 'return' statement in the souce module.
  340.  
  341. AP 68491  BE         If the last executable statement is a call and is
  342.                      optimized to a jump under /O+, the stack may get
  343.                      deleted if this tail call returns a structure type
  344.                      of 8-bytes or more.
  345.                                             
  346. AP 68503  BE         Correct a switch optimization problem that causes
  347.                      BE to generate invalid run time code when falling 
  348.                      through cases and backward 'goto' in the common case
  349.                      body. An infinite run-time loop or incorrect output
  350.                      may be the result.
  351. ---------------------------------------------------------------------------
  352. AP 64812  C++FE      C++ compiler uses a size of 0 when determining the size
  353.    6470x.b004         of class member when the member is an instantiation
  354.                  of a template with the class as a parameter and the
  355.              template is a class that only uses the class to declare
  356.              a static member.
  357. ---------------------------------------------------------------------------
  358. QI 60176  ILINK      /EXEPACK may produce executables larger than necessary,
  359.                      in some cases even larger than the uncompressed image's 
  360.                      size.
  361. ----------------------------------------------------------------------------
  362. AP 69878  RT         dump_allocated hangs if /tm and /gm options are used.
  363.                      When run, the dump header is printed, and then the
  364.                      program hangs.  Unable to close the OS/2 window
  365.                      where the program ran.
  366.  
  367.  
  368. ****************************************************************************
  369.                 Fixpak CTC305 is Informal Corrective Service               *
  370. ****************************************************************************
  371. FIX/APAR  COMPONENT  PROBLEM_DESCRIPTION
  372. -------------------------------------------------------------------------
  373. AP 60438  BE         If the user code contains initialization of SEG16
  374.                      function pointers, the initialization will be
  375.                      incorrect and the code will trap if the SEG16
  376.                      functions are called.
  377.  
  378. AP 60854  BE         Fix a loop optimization that leads to incorrect array
  379.                      reference in loop when, in rare situation, the loop
  380.                      contains array reference of the form aìi++┘.
  381.  
  382. AP 61311  BE         Fix an addressing problem that can lead to a
  383.                      run-time trap if the 'break's in a nest of switch
  384.                      statements leads to a function return.
  385.  
  386. AP 66019  BE         Long compile times for the BE  when the BE tries
  387.                      to inline and optimize code with a chain of
  388.                      function calls.  Problem will appear if /O is used
  389.                      and /Oi is on.
  390.  
  391. AP 66200  BE         BE optimizer will go into a infinite loop when
  392.                      compiling code with nested loops.
  393.  
  394. QI 58085  BE         Fix BE problem that causes link time error
  395.                      'unresolved external __EDCThunkProlog' or BE internal
  396.                      compiler error when the /O+ switch is used.
  397.  
  398. QI 63941  BE         Fix a run-time trap problem in the try-catch clause
  399.                      when /O+ is used.
  400.  
  401. -------------------------------------------------------------------------
  402.  
  403. AP 43950  CFE        Extraneous EDC0415 warnings being generated for
  404.                      functions declared, but not defined, in the local
  405.                      file scope.
  406.  
  407. AP 45272  CFE        The C compiler would give an error message when
  408.                      structures in a ternary expression had the same
  409.                      type but different qualifiers.  The compiler will
  410.                      now accept this in extended mode and give a
  411.                      warning in ANSI mode.
  412.  
  413. AP 45547  CFE        Invalid informational EDC0422 message was generated
  414.                      when a signed integer variable was compared with
  415.                      unsigned integer constant.
  416.  
  417. AP 47879  CFE        An array definition with a corresponding tentative
  418.                      declaration was not picking up all the properties
  419.                      of the tentative declaration when the declaration
  420.                      type-specifier was a typedef symbol.
  421.  
  422. AP 49189  CFE        If there were multiple declarations for an inline
  423.                      function, the function would sometimes not be
  424.                      inlined.
  425.  
  426. AP 52098  CFE        A precompiled header would not be used if one of the
  427.                      include file paths contained a "./" and the other
  428.                      did not, even though they resolved to the same file.
  429.  
  430. AP 52216  CFE        The C compiler would sometimes give an internal
  431.                      compiler error when the /Weff compiler option
  432.                      was used.  The compiler will no longer give this
  433.                      error.
  434.  
  435. AP 53275  CFE        The C FE was passing the incorrect diagnostic message
  436.                      level to the BE.
  437.  
  438. AP 56827  CFE        In extended mode, if C a program contains #define's
  439.                      to define the same macro into different replacements,
  440.                      the compiler was issuing a warning message stating
  441.                      that the macro has been redefined, but was not
  442.                      actually redefining it. The compiler has been
  443.                      changed to actually redefine the macro to the later
  444.                      replacement. Also, the #define in the source code
  445.                      now overrides the /D option in the command line.
  446.  
  447. AP 62628  CFE        Invalid informational EDC0421 message was generated
  448.                      when signed integer was compared with -32768.
  449.  
  450. AP 63885  CFE        Incorrect message issued under /Wext for unreferenced
  451.                      external variables.
  452.  
  453. QI 55438  CFE        In a C program, assigning to one member of a union
  454.                      and using another member of the union to retrieve
  455.                      the value would sometimes give incorrect results with
  456.                      optimization.
  457.  
  458. QI 55692  CFE        When compiling certain C programs that includes
  459.                      typecast into pointer to function, internal
  460.                      compiler error occurred.
  461.  
  462. -------------------------------------------------------------------------
  463.  
  464. QI 43536  ICC        When compiling C++ programs with /P turned on, if
  465.                      the tempinc directory already contained any source
  466.                      file, ICC compiler driver went into an infinite loop.
  467.  
  468. QI 47216  ICC        When the compiler's messages are re-directed into
  469.                      a file, messages from different components might be
  470.                      re-ordered inadvertently.
  471.  
  472. QI 48884  ICC        When compiler is invoked with "icc /O+ /O- a.c",
  473.                      /Oi and /Os options were turned on accidentally.
  474.  
  475. -------------------------------------------------------------------------
  476.  
  477. AP 48385  ILINK      When compiling a user-defined _DLL_InitTerm function
  478.                      with /gl+ and linking it with /optfunc, the error
  479.                      message "error LNK2030: starting address not code
  480.                      (use class "CODE") is generated by the linker.
  481.  
  482. AP 61847  ILINK      For OS/2 EXE and DLL files the size limit of the
  483.                      import procedure table was removed.  Also the size
  484.                      limit of the entry table was expanded from 64K to 1M.
  485.                      This should reduce linker errors LNK1044 and LNK1074
  486.                      respectively.
  487.  
  488. QI 58669  ILINK      If a user qualifies the stub file name in their
  489.                      .def (definitions) file, the linker will report that
  490.                      the stub file does not exist even if it does exist.
  491.  
  492. -------------------------------------------------------------------------
  493.  
  494. AP 42832  RT         Input conversion of floating point numbers with 20
  495.                      or more digits may overflow the maximum precision,
  496.                      and rather than losing bits on the right (which is
  497.                      to be expected), the entire number becomes zero.
  498.                      Loosing one bit of precision with some numbers is
  499.                      unavoidable.
  500.  
  501. AP 43377  RT         Code page conversions using the iconv() function do
  502.                      not convert double byte characters correctly.
  503.  
  504. AP 46604  RT         If a compilation unit references _heap_check() and
  505.                      is linked to the runtime DLL (e.g., using the /Gd+
  506.                      option with the icc command), there will be an
  507.                      unresolved reference to __theap_check() at link
  508.                      time.
  509.  
  510. AP 48121  RT         The C++ compiler incorrectly handles passing objects
  511.                      by value in a var-arg function.  The problem is the
  512.                      va_start() macro gets the wrong address when the
  513.                      last non-variable parameter is a class object and
  514.                      is passed by value.
  515.  
  516. AP 52345  RT         The following code fragment fails if TEMPMEM=ON is
  517.                      set in the environment.
  518.  
  519.                          TFile = tmpfile();
  520.                          fclose(TFile);
  521.  
  522. AP 60824  RT         Command line arguments with double byte characters
  523.                      (eg. Kanji characters) may not be parsed correctly.
  524.                      To use double byte characters in the command line
  525.                      arguments, you must link your program with
  526.                      MSETARG.OBJ.  If you also use OS/2 global file-name
  527.                      characters (or wildcard characters) in the
  528.                      arguments, then you must link with MSETARGV.OBJ.
  529.                      Both of these object files are included with the
  530.                      libraries in the LIB directory.
  531.  
  532. QI 49365  RT         If setlocal() is issued for any of the locales
  533.                      provided with the compiler, then subsequent
  534.                      invocations of tzset() will have no effect.
  535.  
  536. QI 59033  RT         The strfmon() function does not format the amount
  537.                      (double) 0.0 when the value of the precision is 0
  538.                      (eg.  %╡#5.0n). The function returns -1 and no value
  539.                      is set in the output array pointed to by the first
  540.                      argument.
  541.  
  542. QI 62091  RT         A new library routine _upool() was added to the
  543.                      runtime that allows an application to specify
  544.                      a range of object sizes that will cause heap
  545.                      allocations and frees to perform faster. See
  546.                      the README for further information regarding this
  547.                      new feature.
  548.  
  549. QI 63350  RT         %EY format always uses the first era specified in
  550.                      the locale source file regardless of its range.
  551.  
  552. QI 64957  RT         An additional Japanese locale is provided. This one
  553.                      is bound to code page 943.
  554.  
  555.  
  556. *******************************************************************************
  557.                    Fixpak CTC304 is Informal Corrective Service
  558. *******************************************************************************
  559. FIX/APAR  COMPONENT  PROBLEM_DESCRIPTION
  560. -------------------------------------------------------------------------------
  561. QI 35447  ICC        Corrected some minor mistakes in the ICC on-line help.
  562.  
  563. AP 47872  ICC        Changed ICC to attempt compiling all files when multiple
  564.                      source files are specified through a single invocation.
  565.  
  566. AP 48436  ICC        When ICC invokes the linker, the linker options specified
  567.                      through ICC command line option /B are now appended
  568.                      (instead of prepended) to the other linker options
  569.                      generated by ICC.
  570.  
  571. AP 48869  ICC        ICC does not properly handle path names specified with
  572.                      a mixture of both forward and backward slashes.
  573.  
  574. AP 54613  ICC        ICC was not properly treating tabs as white spaces
  575.                      on the command line.
  576.  
  577. QI 36384  CFE        The severity level of C compiler message EDC0499 has been
  578.                      changed from warning to error.
  579.  
  580. QI 37397  CFE        The C compiler was not reading the correct source file
  581.                      when outputting assembler statements.  As a result the
  582.                      source code did not match the assembler statements in
  583.                      some cases.
  584.  
  585. QI 42420  CFE        The C front end did not properly handle DBCS characters
  586.                      in the '#include' path name specifications.
  587.  
  588. QI 42499  CFE        The /Xi compiler option had no effect.  If the /Xi
  589.                      compiler option was on (/Xi+), the compiler would still
  590.                      search the paths specified in the INCLUDE environment
  591.                      variable.
  592.  
  593. QI 43049  CFE        When a listing file was produced with the /Lb option, it
  594.                      did not show the structure maps for unused aggregates.
  595.  
  596. QI 43779  CFE        In some cases the packed version of the aggregates were
  597.                      shown in the listing file even though the packed versions
  598.                      were never used.
  599.  
  600. AP 44084  CFE        Suppress the extraneous informational message EDC0451
  601.                      when /Wtrd option is used.
  602.  
  603. QI 45691  CFE        When C programs are compiled with /Wrea option, suppress
  604.                      extraneous informational message EDC0520 for programs
  605.                      containing variable declarations within 'switch' blocks.
  606.  
  607. QI 45692  CFE        Clarified the message text for C compiler message EDC0483.
  608.  
  609. QI 47688  CFE        When compiling programs with /Ti option turned on, if the
  610.                      program contains multiple typedef's defining the same tag
  611.                      into different types an internal compiler error occurred.
  612.  
  613. AP 47793  CFE        When a source file, a.c, was used to generate a
  614.                      precompiled header and then a source file, b.c, used the
  615.                      previously generated precompiled header, the debug
  616.                      information in the object file for b.c would indicate
  617.                      that source file name was "a.c" instead of "b.c".  This
  618.                      caused the debugger to bring up the a.c source while
  619.                      stepping through code from b.c.  This also caused the
  620.                      name in the assembler listing for b.c to be incorrect.
  621.  
  622. AP 47944  CFE        For some C programs, the compiler would incorrectly
  623.                      indicate that exported functions were undefined (message
  624.                      EDC0397).
  625.  
  626. AP 48456  CFE        Message EDC0368 was changed to an error severity from
  627.                      a warning.
  628.  
  629. QI 48459  CFE        Variables defined after a '#pragma dataseg()' were not
  630.                      being placed in the correct data segment.
  631.  
  632. AP 49136  CFE        Internal compiler errors when compiling C programs with
  633.                      initialization of zero-length bitfields.
  634.  
  635. QI 49670  CFE        The date and time shown in the C listing files are now
  636.                      locale sensitive.
  637.  
  638. AP 50418  CFE        Internal compiler errors when compiling certain C programs
  639.                      containing function calls with function pointers that are
  640.                      not prototyped.
  641.  
  642. AP 50423  CFE        Internal compiler error when compiling certain C programs
  643.                      containing 'offsetof()' and '&=' in the same statement.
  644.  
  645. AP 51202  CFE        Function pointers would be given the default linkage
  646.                      instead of the user specified linkage if they were
  647.                      declared at block scope and the /Ti option was on for
  648.                      C programs.
  649.  
  650. AP 51351  CFE        Changed C compiler to allow mixing function prototypes
  651.                      with and without linkage keywords.
  652.  
  653. AP 51400  CFE        If a function pointer was used to call a function with
  654.                      variable arguments, the compiler would pass the arguments
  655.                      incorrectly to the function.
  656.  
  657. AP 52186  CFE        An enum which could be packed into an unsigned char
  658.                      and whose maximum value was on the boundary of unsigned
  659.                      char (255) would be put into a short instead of a char.
  660.                      Also, enums which could be packed into a signed short
  661.                      and whose maximum value was on the boundary of signed
  662.                      short (32767) would be put into an int instead of
  663.                      a short.
  664.  
  665.  
  666. AP 52326  CFE        When compiling C programs with /Wgen option, suppress the
  667.                      extraneous informational messages EDC0438 about "variable
  668.                      may be used before being set" for external variables.
  669.  
  670. AP 52398  CFE/C++FE  When the preprocessor (for both the C and C++ compiler)
  671.                      produces #line directives containing file names, the file
  672.                      names had the same format as the header names. These
  673.                      file names now contain the proper escape sequences for
  674.                      string literals. The preprocessor now interprets the
  675.                      escape sequences,
  676.  
  677. AP 52498  CFE        The C compiler incorrectly gave an error when a 16 bit
  678.                      variable argument function is prototyped and called.
  679.  
  680. QI 52703  C++FE      The debug information of a Direct-To-SOM class
  681.                      contains the SOM mangled name.
  682.  
  683. AP 55237  CFE        If a 16 bit function returned a pointer, the compile
  684.                      would not correctly handle the conversion of the
  685.                      returned value to a 32 bit pointer.  This caused the
  686.                      return address to be incorrect.
  687.  
  688. AP 55570  CFE        The compiler would abort with an Internal Compiler Error
  689.                      when there was a post-increment on a pointer in an array
  690.                      index expression.
  691.  
  692. QI 56034  CFE        Incompatible function redeclarations sometimes cause an
  693.                      Internal Compiler Error.
  694.  
  695. QI 57404  CFE        Added the missing line number and column number for
  696.                      C compiler message EDC0221.
  697.  
  698. AP 58941  CFE        If a typedef was used to declare an array or a pointer and
  699.                      the typedef name had a pragma seg16 associated with it,
  700.                      the array or the pointer would not be put into the 16-bit
  701.                      segment as expected.
  702.  
  703. AP 40798  C++FE      The C++ compiler does not fold the IEEE constants
  704.                      correctly.
  705.  
  706. AP 55238  C++FE      An incorrect browser file is generated for functions
  707.                      that have exception specifications.
  708.  
  709. AP 55266  C++FE      An incorrect browser file is generated if an expression
  710.                      is specified in a template-argument-list.
  711.  
  712. AP 43515  C++FE      Informational messages about the comparison of
  713.                      unsigned integral variables with the constant
  714.                      zero are incorrect.
  715.  
  716. AP 30537  C++FE      The qualified type pointers (such as "this" pointer
  717.                      are not converted from a 32 to 16 bit pointers.
  718.  
  719. AP 32432  C++FE      If a template class member function is defined
  720.                      outside the class definition, and it makes use of
  721.                      a nested type with a template argument an error
  722.                      message is issued.
  723.  
  724. AP 43431  C++FE      The option /ly, which produces a cross-reference
  725.                      table of all variables in the listing file causes
  726.                      a trap in the compiler.
  727.  
  728. AP 55702  C++FE      The definition of a constructor or a destructor of
  729.                      a class with an invalid declaration causes a trap
  730.                      in the compiler.
  731.  
  732. AP 50631  C++FE      An unnamed pointer to a function that is used as an
  733.                      argument in a function declaration causes a
  734.                      trap in the compiler.
  735.  
  736. AP 45467  C++FE      The C++ compiler cannot convert "void *" to an
  737.                      enum type.
  738.  
  739. AP 49097  C++FE      The C++ compiler generates an incorrect #pragma
  740.                      define during automatic template instantiation,
  741.                      when the template argument is a scoped enum.
  742.  
  743. AP 45386  C++FE      Precompiled headers do not work with #pragma library.
  744.  
  745. AP 49284  C++FE      An error message is issued for a member function
  746.                      declaration when a comma is missing from the
  747.                      argument list.
  748.  
  749. AP 49293  C++FE      C++ traps on 'new' expression when constructor is
  750.                      ill-formed.
  751.  
  752. AP 46066  C++FE      The compiler does not generate the automatic
  753.                      templates if there are partially qualified path
  754.                      names in the include path.
  755.  
  756. AP 51504  C++FE      When a Direct-To-Som is attempted with a #pragma
  757.                      SOMAttribute is compiled with /Fb+ option the
  758.                      compiler traps.
  759.  
  760. AP 57891  C++FE      The substitution text in error message EDC3217
  761.                      is not filled in when the predefined macro
  762.                      __32BIT__ is redefined.
  763.  
  764. AP 46077  C++FE      The option /Wpar- does not suppress the error
  765.                      message EDC3126 but the option /Wuse- does.
  766.  
  767. AP 53485  C++FE      The Visual builder generated code sometimes fails with
  768.                      an "insufficient memory" error message (EDC3088) during
  769.                      compile.
  770.  
  771. QI 41936  C++FE      Redeclaration of an external function  in a nested
  772.                      block scope of another function creates an invalid
  773.                      object file if the external function is called
  774.                      from the nested as well as the main block scope of
  775.                      the other function.
  776.  
  777. QI 44351  C++FE      Incorrect debug information is generated for
  778.                      classes that are different instances of a template
  779.                      when the template argument is used as a base class.
  780.                      All classes appear to be derived from the template
  781.                      argument of the first instantiation.
  782.  
  783. QI 46800  C++FE      Anonymous union as the last member of a structure/
  784.                      class causes initialization problems.
  785.  
  786. QI 52703  C++FE      The debug information of a Direct-To-SOM class
  787.                      contains the SOM mangled name.
  788.  
  789. QI 35401  C++FE      Intermediate code linker does not work with a
  790.                      function that has __stdcall linkage.
  791.  
  792. QI 38816  C++FE      The C++ compiler traps when it cannot create
  793.                      temporary files.
  794.  
  795. QI 41184  C++FE      An illegal template member function definition
  796.                      causes trap in the C++ compiler.
  797.  
  798. QI 43373  C++FE      The severity level of the message EDC3471 is error
  799.                      and it should be warning.
  800.  
  801. QI 43906  C++FE      Option /Fc causes a trap in the C++ compiler
  802.                      if it is used to compiler a program that has
  803.                      #pragma library.
  804.  
  805. QI 44115  C++FE      The C++ compiler attempts to load corrupt
  806.                      precompiled header files.
  807.  
  808. QI 45210  C++FE      Precompiled header files do not work with #pragma
  809.                      map.
  810.  
  811. QI 48464  C++FE      The /Gl option causes a linkage error.
  812.  
  813. QI 52398  C++FE      The #line directive does not contain an escape
  814.                      sequence.
  815.  
  816. QI 53640  C++FE      Occasionally during C++ exception processing non-
  817.                      volatile registers are corrupted when an exception
  818.                      is rethrown.
  819.  
  820. QI 54583  C++FE      The constructor of an object is not called when
  821.                      the option /Gt is used.
  822.  
  823. QI 57919  C++FE      The C++ compiler traps when the local directory
  824.                      is on drive Z:.
  825.  
  826. QI 59006  C++FE      The use of a template friend function of a
  827.                      template class returning template class as its
  828.                      type causes a trap in the C++ compiler.
  829.  
  830. QI 60483  C++FE      The severity level of message EDC3504 is error
  831.           (SOM)      and should be warning.
  832.  
  833. AP 51998  BE         Using -O -Oc -G4 or -G5 may  cause the program to execute
  834.                      in an incorrect order when returning from function.
  835.  
  836. AP 56644  BE         Tiled objects cross the 64K boundary in C code.
  837.  
  838. AP 55592  BE         The copyright information destroys the data stored
  839.                      in a global variable.
  840.  
  841. AP 47239  BE         During in global register optimization, where the BE tries
  842.                      to use common the registers sometimes causes an internal
  843.                      compiler error.
  844.  
  845. AP 55593  BE         A structure with bitfield and volatile members causes
  846.                      an internal compiler error.
  847.  
  848. AP 55720  BE         Incorrect optimization involving Flat-Seg16 conversion.
  849.  
  850. AP 55723  BE         Two different registers are simultaneously assigned to the
  851.                      same parameter variable during loop optimization, resulting
  852.                      in inconsistent values being used for the parameter variable.
  853.  
  854. AP 49473  BE         Incorrect optimization in converting ULONG to LONG.
  855.  
  856. AP 49172  BE         Inlining between a divide expression and a mod expression
  857.                      may cause incorrect evaluation of the expressions.
  858.  
  859. AP 53126  BE         Errors in the common sub-expression optimization causes a
  860.                      "EDC4005: Error occurred in intermediate file RBEXPR2(558)".
  861.  
  862. AP 53356  BE         BE incorrectly to replaces a register reference to a
  863.                      reference constant.
  864.  
  865. AP 45450  BE         The flag /Fa fails when a _Far32 _Pascal function pointer
  866.                      is initialized to NULL.
  867.  
  868. AP 58696  BE         Using /Fa with a very long class or function name causes
  869.                      internal compiler error.
  870.  
  871. AP 41908  BE         The BE mangles the 16 bit callgate address when called
  872.                      through a dynamically loaded callgate.
  873.  
  874. AP 47686  BE         Optimization problem caused by the used of goto's inside
  875.                      in a deeply nested switch statements and for
  876.                      statement blocks.
  877.  
  878. AP 50970  BE         Incorrect optimization with thunking when integer
  879.                      conversion is involved.
  880.  
  881. AP 51125  BE         An optimization problem on max and min macros with
  882.                      short integers in certain situation.
  883.  
  884. AP 51219  BE         Incorrect optimization about thunking (see AP-50970).
  885.  
  886. AP 52231  BE         Internal compiler error: same as AP-53356
  887.  
  888. AP 53179  BE         Long BE compile time when optimization (/O+) is used
  889.                      when a large number of arithmetic expressions with
  890.                      lots of common sub-expressions are used.
  891.  
  892. AP 56222  BE         Optimization with float-int union causes internal compiler
  893.                      error.
  894.  
  895. AP 59504  BE         Using /O with both divide and mod expressions caused
  896.                      internal compiler error in certain circumstances
  897.                      (see also AP-49172).
  898.  
  899. AP 57376  BE         With /O and /G4, strchr() can overwrite the
  900.                      register.
  901.  
  902. AP 50569  BE         Optimization bug: memory is not reloaded for union bit field
  903.                      access.
  904.  
  905. AP 39391  BE         BE trap if the argument to __alloca() is a array or
  906.                      structure member reference.
  907.  
  908. AP 42361  BE         Incorrect initialization of array of structure.
  909.  
  910. AP 44553  BE         With /O+, using sqrt() cause the BE to trap (#5) in
  911.                      rare circumstances.
  912.  
  913. AP 49790  BE         Fix an optimization bug with uninitialized register which
  914.                      is used in loop.
  915.  
  916.  
  917. QI 44449  BE         Upper bit not masked off when optimizing ((ULONG)(USHORT))
  918.                      in certain loop.
  919.  
  920. QI 48046  BE         Bad optimization with __lxchg() , incorrect branch behaviour
  921.                      caused by the missing 'test' instruction.
  922.  
  923. QI 49483  BE         BE aborts with an intermediate file error in roopt.c
  924.  
  925. AP 36882  ICL        Use of ICL cause bad debug info sometimes.
  926.  
  927. AP 43765  ICL        Using /Wall in C++ causes ICL to abend with a EDC6005
  928.                      error
  929.  
  930. AP 50707  ICL        Internal compiler error occurs if the sources are
  931.                      listed in specific order
  932.  
  933. AP 51313  ICL        Internal compiler error on compiling Info Zip source
  934.  
  935. AP 52105  RT         When fgetws is called to read a file, and the file is
  936.                      positioned at the end-of-file, the application becomes
  937.                      deadlocked. This happens only when the application is
  938.                      linked to the multithreaded runtime (/Gm+).
  939.  
  940. AP 46009  RT         Multithreaded applications may exhibit "thread
  941.                      starvation", where the threads do not get equal
  942.                      time slices.
  943.  
  944. AP 51536  RT         _sopen() does not accept O_RDONLY and O_CREAT together
  945.                      (O_RDONLY | O_CREAT)
  946.  
  947. AP 45665  RT         Statically linking the runtime library always brings in
  948.                      the tiled memory support, even though the tiled memory
  949.                      functions are not actually used by the application. This
  950.                      prevents the application from overriding the new/delete
  951.                      operators.
  952.  
  953. AP 43408  RT         If the code for a class resides in a DLL, to which is
  954.                      bound a static copy of the runtime, it is impossible to
  955.                      use "new" from any other module to create an object of
  956.                      that class without making a "delete" of that object
  957.                      cause a memory leak.
  958.  
  959. QI 42253  RT         The fopen() C standard function cannot open a file
  960.                      whose name include X'5C' in DBCS 2nd byte of the last
  961.                      character.
  962.  
  963. QI 41413  RT         _chsize function changes to wrong file size. The
  964.                      problem occurs if the file is opened with the APPEND
  965.                      attribute, and _chsize is trying to grow the file.
  966.  
  967. QI 45561  RT         An exception occurs when sprintf is used in an
  968.                      exitlist procedure.
  969.  
  970. QI 46018  ILINK      The debugger's "locate function" action will sometimes
  971.                      fail if the code was compiled with "ICC /Gl".
  972.  
  973. QI 47978  ILINK      The linker would often give an invalid object error (LNK1101)
  974.                      when CSetV1 debug objects (HLL3) are linked.
  975.  
  976. AP 48278  ILINK      When linking a virtual device driver (VDD) specification
  977.                      of a start address generates error LNK4039.
  978.  
  979. AP 48949  ILINK      When linking C++ objects, errors are generated about very short
  980.                      names that are not defined or referenced in the user's objects.
  981.  
  982. QI 49093  ILINK      Changed the linker option /NOFARCALLTRANSLATION to indicate
  983.                      it is not supported rather than not recognized.
  984.  
  985. QI 49617  ILINK      Section marked as SHARED was not being shared.
  986.  
  987. QI 49637  ILINK      The linker traps on modules containing an empty #pragma
  988.                      comment().
  989.  
  990. QI 50432  ILINK      The linker was generating a fatal error (invalid library) if
  991.                      the library contained an object that did not define any symbols.
  992.  
  993. AP 50514  ILINK      Debugger was displaying wrong lines.
  994.  
  995. QI 51819  ILINK      Library paths specified after libraries were not considered
  996.    55525             when searching for libraries.
  997.  
  998. QI 52451  ILINK      The linker reports that libraries with > 32K of browse data
  999.                      are invalid.
  1000.  
  1001. AP 53866  ILINK      The debugger was improperly disassembling the code at the
  1002.                      beginning of some functions because the bytes added for
  1003.                      alignment were not single byte instructions.
  1004.  
  1005. QI 54633  ILINK      The message LNK4027 contained some extraneous characters after
  1006.                      the symbol name.
  1007.  
  1008. QI 58793  ILINK      Default libraries introduced by a library object were not
  1009.                      searched.
  1010.  
  1011. *******************************************************************************
  1012.                    CSD CTC303 is Informal Corrective Service
  1013. *******************************************************************************
  1014. FIX/APAR  COMPONENT  PROBLEM_DESCRIPTION
  1015. -------------------------------------------------------------------------------
  1016. QI 52538  C++FE      Duplicate VFTs for templates may be generated
  1017.                      when compiling with the /Ft- compiler option,
  1018.                      causing a "LNK2025: symbol defined more than once"
  1019.                      error when linking.
  1020.  
  1021. *******************************************************************************
  1022.                    CSD CTC302 is Informal Corrective Service
  1023. *******************************************************************************
  1024. FIX/APAR  COMPONENT  PROBLEM_DESCRIPTION
  1025. -------------------------------------------------------------------------------
  1026. AP 37520  BE         Optimizer was generating incorrect code if a for-loop had
  1027.                      boundary values that were array or structure elements.
  1028.  
  1029. AP 37893  BE         Intermediate code linker could not handle more than 256
  1030.                      files.
  1031.  
  1032. QI 40806  BE         The back end will sometimes abort if a common bitfield
  1033.                      expression is typecasted more than once.
  1034.  
  1035. QI 41299  BE         Changed an optimization that causes "jump-to-location" to
  1036.                      fail in the debugger.
  1037.  
  1038. QI 42359  BE         Use of the intermediate code linker could cause an
  1039.                      internal compiler error at /O-
  1040.  
  1041. AP 42366  BE         Optimization of tail-calls combined with inlining
  1042.                      sometimes resulted in stack corruption.
  1043.  
  1044. QI 42968  BE         Using an inlined member function in loop iteration may
  1045.                      cause an optimization problem
  1046.  
  1047. QI 43250  BE         Optimization was generating incorrect code for an array
  1048.                      element that stored its own address (a[i] = &a[i])
  1049.  
  1050. QI 43878  BE         Use of "break" and/or "goto" in a loop could lead to
  1051.                      floating point stack overflow if floating point variable
  1052.                      are used in a loop at /O+
  1053.  
  1054. QI 44739  BE         BE hangs if there is unreachable code in which the first
  1055.                      statement is a "call"
  1056.  
  1057. QI 45041  BE         BE will hang if the code contains a loop in the internal
  1058.                      jump statements
  1059.  
  1060. QI 45110  BE         BE was leaking memory
  1061.  
  1062. QI 45285  BE         Incorrect code was being generated for an enum parameter
  1063.  
  1064. AP 46031  BE         Hoisting code out of a loop during optimization will cause
  1065.                      the BE to trap.
  1066.  
  1067. QI 46781  BE         Incorrect code being produced for the pre-increment
  1068.                      operator
  1069.  
  1070. QI 39257  Browser    Compiler generates garbage to screen if the output browser
  1071.                      file is locked.
  1072.  
  1073. QI 40067  Browser    Bad browse information is generated if a function is used
  1074.                      as a default argument for a function parameter.
  1075.  
  1076. QI 40068  Browser    Generating TableLookupERROR and BadOperatorERROR messages
  1077.  
  1078. QI 42967  Browser    Losing some function attributes (e.g. static) if they are
  1079.                      in a system include file.
  1080.  
  1081. QI 45078  Browser    Using class C in a template function definition may cause
  1082.                      the Browser to trap.
  1083.  
  1084. QI 39769  C++DTS     Attribute get/set parameters are volatile qualified and
  1085.                      attribute method names in C++ are incorrectly som mangled.
  1086.  
  1087. QI 40076  C++DTS     The following assert message is generated:
  1088.                      assert failed: kind != LOAD_ADDRESS && kind != STORE_VALUE
  1089.                      : on 139 : in cbcgcall.cxx.d1
  1090.  
  1091. QI 40399  C++DTS     Failing to generate compile-time errors indicating that
  1092.                      the user should not define the _get/_set routines.
  1093.  
  1094. QI 41340  C++DTS     A local class may be incorrectly declared as a SOM class
  1095.  
  1096. IX51299   C++FE      Internal compiler error with accessing non-static member
  1097.  
  1098. AP 28445  C++FE      The compiler was issuing an incorrect error for the
  1099.                      conversion of a pointer to a pointer to member of the same
  1100.                      type.
  1101.                        A B::* p = &B::a;
  1102.                      results in
  1103.                        error EDC3055: "A*" cannot be converted to "A B::*"
  1104.  
  1105. QI 37160  C++FE      An incorrect #pragma library was an error in C++, but a
  1106.                      warning in C
  1107.  
  1108. QI 37529  C++FE      If the include path was not fully qualified, template
  1109.                      files are not always generated.
  1110.  
  1111. QI 38649  C++FE      When /Gt+, tiled memory, was specified variables that were
  1112.                      greater than 64K were not being flagged as an error.
  1113.  
  1114. QI 38656  C++FE      If pragma comment is specified with precompiled header
  1115.                      files (with /fi /si options) a trap occurs.
  1116.  
  1117. QI 39240  C++FE      Compiler incorrectly handled tempinc when the root
  1118.                      directory was on the path
  1119.  
  1120. QI 39941  C++FE      Precompiled headers were trashing the internal copy of the
  1121.                      tempinc directory name, resulting in the compiler being
  1122.                      unable to open the template files.
  1123.  
  1124. QI 44076  C++FE      Classes with const/ref mems may not be initialized
  1125.                      correctly
  1126.  
  1127. AP 46377  C++FE      Manually instantiated templates in DLLs may cause problems
  1128.                      with unresolved references to the virtual function table
  1129.  
  1130. QI 34937  C++IDL     IDL generation strips off members from structures, causing
  1131.                      the SOM compiler to flag an error
  1132.  
  1133. QI 37047  C++IDL     The SOM compiler crashes when using static member Operator
  1134.                      delete()
  1135.  
  1136. QI 37196  C++IDL     The IDL generator fails to generate the dimensions of
  1137.                      arrays
  1138.  
  1139. QI 37359  C++IDL     The SOM compiler fails to generate bit-field offsets from
  1140.                      the generated IDL
  1141.  
  1142. QI 37514  C++IDL     The IDL generator will no longer generate types defined in
  1143.                      other files, as this can cause a conflict in class names.
  1144.  
  1145. QI 37866  C++IDL     Generated .hh from compiler generated IDL may result in
  1146.                      unrecognized typenames
  1147.  
  1148. QI 37868  C++IDL     Generated .hh from compiler generated IDL may result in
  1149.                      failure to find class definitions.
  1150.  
  1151. QI 37869  C++IDL     Generated .hh from compiler generated IDL may result in
  1152.                      union members already defined
  1153.  
  1154. QI 37991  C++IDL     The SOM compiler cannot handle the unnamed classes which
  1155.                      may appear in the generated IDL
  1156.  
  1157. QI 38019  C++IDL     SOM compiler flags syntax errors when compiling generated
  1158.                      IDL
  1159.  
  1160. QI 38097  C++IDL     Generated IDL does not handle template classes properly
  1161.  
  1162. QI 38166  C++IDL     Miscellaneous syntax errors in the generated IDL
  1163.  
  1164. QI 38483  C++IDL     SOM compiler is stripping off the * in pointers in the
  1165.                      generated IDL, causing errors
  1166.  
  1167. QI 38620  C++IDL     Som compiler does not generate initialization of args for
  1168.                      nested methods in Generated IDL
  1169.  
  1170. QI 45521  CFE        An _Export qualifer in a function definition has no
  1171.                      effect.
  1172.  
  1173. QI 38458  RT         Turkish and Finnish Locales contain English days/months
  1174.  
  1175. QI 33189  ILINK      Change ILINK to detect and ignore equivalent library names
  1176.                      on the command line.
  1177.  
  1178. QI 37428  ILINK      Fix ILINK to prevent abends with long file names, and to
  1179.                      detect if the MAP and EXE file names are identical.
  1180.  
  1181. QI 42386  ILINK      In some cases the linker would output error LNK5001E
  1182.                      (invalid page range)
  1183.  
  1184. QI 42756  ILINK      In some cases the error message L1094 prints a partial
  1185.                      file name.  The linker was attempting was made to print a
  1186.                      wide string.  This was changed to convert the wide string
  1187.                      to DBCS.
  1188.  
  1189. QI 43490  ILINK      Sometimes specifying /LINENUMBERS on the linker command
  1190.                      line causes linker error LNK1101, regardless of whether or
  1191.                      not the line number information was actually included in
  1192.                      the object with the /Tn or /Ti options.
  1193.  
  1194. QI 43643  ILINK      If the linker exceeds the internal limit on the number of
  1195.                      relocations that can be emitted in the run file, it would
  1196.                      hang.  It now issues an error message and terminates
  1197.                      processing.  This problem occurs only on very large
  1198.                      projects.
  1199.  
  1200. *******************************************************************************
  1201.                    CSD CTC301 is Informal Corrective Service
  1202. *******************************************************************************
  1203. FIX/APAR  COMPONENT  PROBLEM_DESCRIPTION
  1204. -------------------------------------------------------------------------------
  1205. QI 37176  ICC        Fixes a problem where ICC did not call the intermediate
  1206.                      code linker and code generator if the parameter /C is
  1207.                      provided on a command line similar to "icc /c x.w y.w"
  1208.  
  1209.  
  1210. QI 34955  C++FE      Read-only data (virtual function tables and some exception
  1211.                      handling data) were not being put into CONST class
  1212.                      segments and so were not readonly and sharable by default.
  1213.  
  1214. QI 35634  C++FE      Two secondary entry points are being given the same name.
  1215.                      This is not a problem unless Smart Linking (/Gl+) is
  1216.                      specified. With Smart Linking the linker will flags this
  1217.                      as a duplicate symbol and the link fails.
  1218.  
  1219. QI 36178  C++FE      The compiler would die with an exception after
  1220.                      generating an EDC3548 message.
  1221.  
  1222. QI 36268  C++FE      The compiler was generating invalid object modules. The
  1223.                      problem was caused by secondary entry points in template
  1224.                      functions not being overridable.  If the owner of the
  1225.                      secondary entry point is overridable then the secondary
  1226.                      entry point should be as well.
  1227.  
  1228. QI 36750  C++FE      The compiler was generating a class member '__e1' when
  1229.                      compiling with SOM.
  1230.  
  1231. QI 37121  C++FE      The compiler was generating the wrong error message when
  1232.                      casting class pointers.  The type of the class pointer
  1233.                      casting operator is its own type rather than its operand's
  1234.                      type.
  1235.  
  1236. QI 37123  C++FE      The compiler was getting an exception at EIP = 00105204
  1237.                      after generating message EDC3039
  1238.  
  1239. QI 37160  C++FE      On an invalid #pragma library, the C++ compiler was
  1240.                      treating message EDC3090 as an error.  The C compiler was
  1241.                      treating the equivalent message EDC0224 as a warning.  The
  1242.                      message should be only a warning.
  1243.  
  1244. QI 37272  C++FE      C++ compiler was abending at location 00102B47 when doing
  1245.                      a SOM compile
  1246.  
  1247. QI 37383  C++FE      Incorrect message warning of a null statement.
  1248.  
  1249. QI 37646  C++FE      The compiler was generating an inappropriate error EDC3618
  1250.                      for pointer to member function in DTS.
  1251.  
  1252. QI 37888  C++FE      Fixes an abend and/or invalid message on a bad destructor
  1253.                      definition
  1254.  
  1255. QI 38137  C++FE      The compiler was making a bad decision on whether to
  1256.                      emit destructor code or a RET at the end of a block. The
  1257.                      result could have been undestructed locals, or an infinite
  1258.                      loop if control fell into the exception startup code.
  1259.  
  1260. QI 38969  C++FE      The C++ compiler was treating message EDC3491 (invalid
  1261.                      precompiled header format) as an error.  The C compiler
  1262.                      was (correctly) treating it as a warning.
  1263.  
  1264. QI 38978  C++FE      Compiling som.hh with /Si+ caused the compiler to go into
  1265.                      infinite loop
  1266.  
  1267. QI 39217  C++FE      The compile options /Si+ /Ls+ caused a "fatal error
  1268.                      EDC0500: Unexpected compiler error #C0000005:822B6
  1269.                      occurred."
  1270.  
  1271. QI 39944  C++FE      Fixes an abend when compiling C++ with a precompiled
  1272.                      header
  1273.  
  1274. QI 40177  C++FE      The compiler is generating bad browser files for some
  1275.                      DTS compiles.
  1276.  
  1277. QI 42348  C++FE      Fatal Error in compiler front end which may occur when
  1278.                      using precompiled headers.
  1279.  
  1280.  
  1281. QI 35499  C++DTS     The compiler was failing to construct a class's meta class
  1282.                      before the first object of the class.
  1283.  
  1284. QI 39752  C++DTS     No IDL was being generated under some conditions.  The
  1285.                      compiler was only checking for templates explicitly
  1286.                      instantiated via #pragma define and implicitly
  1287.                      instantiated using the prototype class template, but
  1288.                      failing to allow specialized template classes.
  1289.  
  1290. QI 40033  C++DTS     Attribute get/set methods were volatile qualified, causing
  1291.                      a problem for some users.  A new option "qsomvolattr" has
  1292.                      been added that will default to true to indicate if
  1293.                      attributes should be generated with the volatile
  1294.                      qualifier.  qnosomvolattr indicates not to use volatile.
  1295.                      The new compile option is -yxqnosomvolattr.
  1296.  
  1297.  
  1298. QI 34330  C++IDL     A reintroduced method was being lost in an .hh file
  1299.  
  1300. QI 34937  C++IDL     IDL generation may have stripped members from structures,
  1301.                      causing the SOM compiler to flag an error
  1302.  
  1303. QI 35662  C++IDL     The compiler was generating incorrect IDL for code that
  1304.                      contained nested types
  1305.  
  1306. QI 37047  C++IDL     The compiler may have crash if there was a static member
  1307.                      "Operator delete()"
  1308.  
  1309. QI 37196  C++IDL     The IDL generator was failing to generate the dimensions
  1310.                      of array causing subsequent errors.
  1311.  
  1312. QI 37359  C++IDL     SOM compiler was failing to generate correct bit-field
  1313.                      offsets
  1314.  
  1315. QI 37510  C++IDL     Fixes a problem with templates and friends when going from
  1316.                      C++ to IDL to C++
  1317.  
  1318. QI 37514  C++IDL     SOM Compiler was causing conflicts with types defined in
  1319.                      other files. Types that are implicitly referenced (such as
  1320.                      parameter types) will NOT be generated if they are defined
  1321.                      in an include file.  Instead, the client program will have
  1322.                      to include them just like the implementation did.
  1323.  
  1324. QI 37866  C++IDL     DTS was emitting bad IDL on a nested typedef
  1325.  
  1326. QI 37868  C++IDL     SOM compiler generates bad .hh file for some friend
  1327.                      declarations
  1328.  
  1329. QI 37869  C++IDL     Anonymous union bitfields were being generated twice in
  1330.                      IDL
  1331.  
  1332. QI 37991  C++IDL     DTS compiler was not correctly handling unnamed classes,
  1333.                      and generating bad IDL.
  1334.  
  1335. QI 38019  C++IDL     DTS compiler was generating bad IDL if a pointer to an
  1336.                      array of an undefined class was a member of another class.
  1337.  
  1338. QI 38097  C++IDL     DTS compiler was not always handling template classes
  1339.                      properly
  1340.  
  1341. QI 38166  C++IDL     DTS compiler generating IDL with miscellaneous syntax
  1342.                      problems.
  1343.  
  1344. QI 38483  C++IDL     DTS compiler was generating bad IDL.  It was stripping off
  1345.                      the * in pointers declared in nested classes
  1346.  
  1347. QI 38620  C++IDL     The SOM compiler was generating a bad .hh file, missing
  1348.                      the initialization of the arguments for nested methods
  1349.  
  1350.  
  1351. QI 41444  C++FE      Bad PDB file being generated.  Browser itself reports an
  1352.           Browser    error.
  1353.  
  1354.  
  1355. QI 37830  C++FE      Some small programs caused an Out of Memory exception when
  1356.           CFE        reading in a precompiled header.
  1357.  
  1358. QI 38431  C++FE      Using the #line directive with a filename may have caused
  1359.           CFE        the compiler to define main() twice
  1360.  
  1361. QI 38656  C++FE      A precompiled header with #pragma comment did not work
  1362.           CFE        correctly
  1363.  
  1364. QI 39498  C++FE      The /Fl /FA /Fo compile options caused an "unable to
  1365.           CFE        open file" error if used with a 254 character filename
  1366.  
  1367. QI 42397  C++FE      A #line statement was not handled correctly in a
  1368.           CFE        precompiled header.
  1369.  
  1370.  
  1371. QI 36246  CFE        The compiler would trap with an exception if #pragma
  1372.                      title() or #pragma subtitle() were used.
  1373.  
  1374. QI 36951  CFE        The compiler was generating an extra EDC0524 (_Packed
  1375.                      qualifier) message
  1376.  
  1377. QI 38076  CFE        Precompiled headers with only preprocessor directives
  1378.                      may have caused problems on subsequent compiles
  1379.  
  1380. QI 38361  CFE        Use of the /Si compile option may have caused a compiler
  1381.                      abend at location 1F00D.
  1382.  
  1383. QI 38648  CFE        Compiler would not handle file scoped objects bigger than
  1384.                      64K with /Gt.
  1385.                      The compiler will now issue a warning message for all
  1386.                      objects that are greater than 64k in size if /Gt is
  1387.                      specified.
  1388.  
  1389. QI 39217  CFE        Using the precompiled headers in conjunction with listing
  1390.                      options might have caused an exception in the compiler
  1391.  
  1392. QI 39820  CFE        When there were multiple declarations of a symbol, VAC++
  1393.                      was putting the symbol into the data segment that was
  1394.                      active during the first declaration.
  1395.                      The correct method is to use the segment that is active
  1396.                      when the symbol is both defined and initialized.  If the
  1397.                      symbol is not initialized (a tentative definition) it is
  1398.                      put into the segment that applies on its last definition.
  1399.  
  1400. QI 39866  CFE        Function pointers were not always getting the correct
  1401.                      calling convention when /Ti was specified.
  1402.  
  1403. QI 40664  CFE        Fixes a problem where some fields in the listing output
  1404.                      had spurious values.
  1405.  
  1406. QI 42160  CFE        Compiler would not expand macros nested deeper than 68
  1407.                      levels.
  1408.  
  1409. QI 42217  CFE        If one W-code file was compiled with /Ti+ and another one
  1410.                      with /Ti-, when ICL was run to W-code link them together,
  1411.                      an erroneous message EDC6010 was issued, complaining about
  1412.                      an inconsistency in the /Tn option.
  1413.  
  1414. QI 43242  CFE        When some small precompiled header file were used, the
  1415.                      compiler erroneously complained about data in the
  1416.                      precompiled header file not having the correct format.
  1417.  
  1418. QI 43438  CFE        Fixes an inconsistency between the documentation and the
  1419.                      behaviour of the search order.  The user's guide correctly
  1420.                      gives the first directory searched for #include "" as the
  1421.                      the directory of the source file.  The compiler was
  1422.                      searching the directory of the file with the #include ""
  1423.                      directive.
  1424.  
  1425.  
  1426. QI 35733  ICL        This fix provides support in the intermediate code linker
  1427.                      for new intermediate code options.
  1428.  
  1429. QI 36771  ICL        The ICL now also checks for consistency of the /Tn, /Oc
  1430.                      and /Gp compile options across files.
  1431.  
  1432. QI 36894  ICL        Inconsistent /Nd options used when compiling to
  1433.                      intermediate code caused the intermediate linker to
  1434.                      generate an empty default data segment.  This could cause
  1435.                      subsequent link problems.
  1436.                      This situation will now generate an error message.
  1437.  
  1438. QI 42156  ICL        Fixes an unusual condition internal to the intermediate
  1439.                      code linker that would cause it to abend.
  1440.  
  1441. QI 43095  ICL        Fixes an error handling bug which caused an exception to
  1442.                      occur instead of an EDC6010 msg being generated.
  1443.  
  1444. QI 43211  ICL        Fixes a bug where static signed_bit_fields structure has
  1445.                      an incorrect value when the /Ol option is on.
  1446.  
  1447.  
  1448. QI 35002  BE         Fixes an BE bug which incorrectly checked the use-def
  1449.                      alias info, causing variables to be assigned in the
  1450.                      wrong order
  1451.  
  1452. QI 35966  BE         Fixes a tail-call optimization problem which may result
  1453.                      in optimized code not performing as well as in previous
  1454.                      releases.
  1455.  
  1456. QI 37437  BE         Corrects an index addressing mode problem which degrades
  1457.                      the performance of the generated code
  1458.  
  1459. QI 37568  BE         Corrects a problem that causes a fatal error in the
  1460.                      BE (EDC4005).
  1461.  
  1462. QI 37587  BE         Fixes a bug that caused an internal compiler error at
  1463.                      /O+
  1464.  
  1465. QI 37688  BE         Integral promotion was not being done correctly in some
  1466.                      expressions containing char or short variables.
  1467.  
  1468. QI 37693  BE         Corrects a bug that caused the BE to go into an infinite
  1469.                      loop.
  1470.  
  1471. QI 37899  BE         Corrects an problem with invalid offset in object module
  1472.                      fixup subrecords that caused an invalid object module
  1473.                      error (LNK1101) in ILINK.
  1474.  
  1475. QI 37913  BE         Parameters may have been passed incorrectly to a function
  1476.                      when a structure whose size is 45-47 bytes was passed by
  1477.                      value.
  1478.  
  1479. QI 37937  BE         Fixes an invalid offset in some COMDAT records in object
  1480.                      modules that could cause an out of memory or invalid
  1481.                      object module error in ILINK (LNK1064 or LNK1101).
  1482.  
  1483. QI 39120  BE         Corrects a problem that might cause a trap while BE is
  1484.                      removing dead code.
  1485.  
  1486. QI 40548  BE         The BE generated incomplete line number information with
  1487.                      /Gl option in certain circumstances.  This would affect
  1488.                      the completeness of the debug information.
  1489.  
  1490. QI 42103  BE         Fixes an optimization problem that could remove a store
  1491.                      incorrectly without considering a parameter register
  1492.                      dependency.
  1493.  
  1494. QI 42341  BE         Corrects a const bitfield initialization problem.
  1495.  
  1496. QI 42662  BE         Fixes bad code generation that could lead to the processor
  1497.                      flags being in an incorrect state.
  1498.  
  1499.  
  1500. QI 39255  Munch      The LNAMES table was of fixed size, and DDE4MNCH.EXE was
  1501.                      overwriting storage past the end.
  1502.  
  1503. QI 40242  Munch      Fixes an internal failure in DDE4MNCH.EXE
  1504.  
  1505.  
  1506. QI 35082  ILINK      External function names exactly 255 characters long were
  1507.                      causing ILINK to generate a bad module.
  1508.  
  1509. QI 35756  ILINK      Linker was incorrectly issuing message LNK4026 when a DLL
  1510.                      imported a symbol that it defined (a self-imported
  1511.                      symbol).
  1512.  
  1513. QI 35842  ILINK      An invalid internal error was generated by linker during
  1514.                      page order assignment.
  1515.  
  1516. QI 36156  ILINK      Linker was not generating message LNK4024 if multiple
  1517.                      definitions occurred as a result of #pragma export().
  1518.  
  1519. QI 36177  ILINK      Linker was not generating message LNK4023 if an
  1520.                      internal/external name conflict results from #pragma
  1521.                      export() and the .DEF file being inconsistent
  1522.  
  1523. QI 36554  ILINK      Linker was generating different DLLs when a .DEF file was
  1524.                      used and when the /DLL switch was used.  The /DLL switch
  1525.                      was generating message LNK4021, and was not sharing the
  1526.                      DATA segment.
  1527.  
  1528. QI 36963  ILINK      The linker was incorrectly writing the executable file to
  1529.                      the directory from which the first object file was
  1530.                      obtained.
  1531.  
  1532. QI 37475  ILINK      Under certain conditions, the computed address of
  1533.                      structures whose first initialized field was not the
  1534.                      first field of the structure was incorrect.
  1535.  
  1536. QI 38737  ILINK      For DLLs the default is that the data segment is SHARED.
  1537.                      If MULTIPLE is specified, this was changed to NONSHARED,
  1538.                      and produced warnings.  With this fix the warnings are
  1539.                      not printed.
  1540.  
  1541. QI 39073  ILINK      Under certain conditions, invalid LNK4001 warnings were
  1542.                      being generated by the linker.
  1543.  
  1544. QI 39221  ILINK      Incorrect LNK1101 messages were being generated in some
  1545.                      cases when /optfunc was used on objects generated by the
  1546.                      version 2.1 compiler.
  1547.  
  1548. QI 39556  ILINK      The /PDD and /VDD options were not causing the device
  1549.                      driver header to be initialized correctly by the linker.
  1550.  
  1551. QI 39569  ILINK      The linker could not find files specified with wildcards
  1552.                      if they did not exist in the current directory.
  1553.  
  1554. QI 39631  ILINK      Removes a linker-imposed restriction on the maximum
  1555.                      number of imports.
  1556.  
  1557. QI 39635  ILINK      Message LNK4096 was incorrectly being emitted when the
  1558.                      /DBGPACK option was specified but an input module did not
  1559.                      contain debug information.
  1560.  
  1561. QI 39636  ILINK      The linker was warning of no stack segment in a VDD,
  1562.                      rather than the reverse
  1563.  
  1564. QI 41282  ILINK      ILINK was generating bad debug information for template
  1565.                      functions when the code had been put in a header file.
  1566.  
  1567. QI 41882  ILINK      In some circumstances, the linker was creating incomplete
  1568.                      debug information for C++ template functions.
  1569.  
  1570.  
  1571. QI 39659  RT         The _heap_check() library function has been enhanced to
  1572.                      check non-debug heap objects
  1573.  
  1574. QI 40950  RT         Functions have been added to the runtime library to allow
  1575.                      user OS/2 exception handlers that will process exceptions
  1576.                      before the runtime exception handlers. The functions are
  1577.                      prototyped in stdlib.h. The functions are as follows:
  1578.  
  1579.                          int  _eh_add(_EH_RTN *);
  1580.                      This function will add a function pointer to a list of
  1581.                      OS/2 exception handlers that will be called by the runtime
  1582.                      exception handler when an OS/2 exception occurs.  The
  1583.                      handlers will be chained within the library and called in
  1584.                      a LIFO manner.  A non-zero return code indicates an error
  1585.                      has occured.
  1586.  
  1587.                          int  _eh_del(_EH_RTN *);
  1588.                      This function will remove the function pointer from the
  1589.                      list of exception handlers that the library maintains.  A
  1590.                      non-zero return code indicates an error has occured.
  1591.  
  1592. QI 40971  RT         There was a highly intermittent bug in multithread library
  1593.                      semaphore code which would cause a lockup at runtime.
  1594.  
  1595. QI 41114  RT         The runtime library function printf() formatting failed
  1596.                      for integral conversions when the argument was 0 and the
  1597.                      specified precision was 0.  No output was produced.
  1598.  
  1599. QI 41305  RT         The access() and stat() library functions did not operate
  1600.                      correctly if there were no more file handles available.
  1601.  
  1602. QI 38482  RT         To allow easier migration, the realloc() library function
  1603.                      will now re-use the same storage where that is possible.
  1604.                      WARNING: This is provided as a convenience only; new code
  1605.                      should not depend on it, as this behaviour is not
  1606.                      guranteed by the function definition!
  1607.  
  1608. QI 42129  RT         The library function mbrtowc() was incorrectly returning
  1609.                      -1 with DBCS strings
  1610.  
  1611. *******************************************************************************
  1612. Key to components:
  1613.    BE      - Code generator and optimizer
  1614.    Browser - C++ Class browser
  1615.    ICC     - Compiler control program
  1616.    CFE     - C compiler parser
  1617.    C++DTS  - C++ direct-to-SOM compiler
  1618.    C++FE   - C++ compiler parser
  1619.    C++IDL  - C++ compiler IDL generator
  1620.    C++RT   - C++ runtime library
  1621.    Munch   - DDE4MNCH program used for automatic template instatiation
  1622.    ICL     - Intermediate code linker
  1623.    ILINK   - Object code Linker
  1624.    RT      - C runtime Library
  1625.