home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / patches / cset50 / csdfixes.lst next >
File List  |  1993-06-17  |  51KB  |  634 lines

  1.  ╒════════════════════════════════════════════════════════════════════════════╕
  2.  │                                                                            │
  3.  │                      C Set/2 Release 1.0 Fixes                             │
  4.  │                                                                            │
  5.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  6.  │  APAR Number  │  Problem Description                                       │
  7.  ├───────────────┼────────────────────────────────────────────────────────────┤
  8.  │    PJ03523    │  Optimization Problem: Bad register selection causes       │
  9.  │               │  general protection fault at runtime.                      │
  10.  ├───────────────┼────────────────────────────────────────────────────────────┤
  11.  │    PJ03662    │  Optimization Problem: Bad register selection around a     │
  12.  │               │  call causes incorrect output at runtime.                  │
  13.  ├───────────────┼────────────────────────────────────────────────────────────┤
  14.  │    PJ03682    │  Optimization Problem: Tail call optimization was altering │
  15.  │               │  a register erroneously.                                   │
  16.  ├───────────────┼────────────────────────────────────────────────────────────┤
  17.  │    PJ03767    │  The compiler could not open files with names containing   │
  18.  │               │  DBCS characters where the second byte of the characters   │
  19.  │               │  was 0x5C.                                                 │
  20.  ├───────────────┼────────────────────────────────────────────────────────────┤
  21.  │    PJ03923    │  Optimization Problem: Generated floating-point code was   │
  22.  │               │  causing the floating-point register stack to overflow or  │
  23.  │               │  underflow.                                                │
  24.  ├───────────────┼────────────────────────────────────────────────────────────┤
  25.  │    PJ03948    │  Optimization Problem: Multiplying by constant negative    │
  26.  │               │  numbers which are powers of 2 was causing incorrect code  │
  27.  │               │  to be generated.                                          │
  28.  ├───────────────┼────────────────────────────────────────────────────────────┤
  29.  │    PJ03952    │  Optimization Problem: Multiplying by constants that are   │
  30.  │               │  near powers of 2 was causing incorrect code to be         │
  31.  │               │  generated.                                                │
  32.  ├───────────────┼────────────────────────────────────────────────────────────┤
  33.  │    PJ03957    │  Compiler was emitting object records longer than the      │
  34.  │               │  linker's 1024 byte limit. This causes the linker to       │
  35.  │               │  produce the message "L1057: data record too large.        │
  36.  │               │                                                            │
  37.  │               │  NOTE: There is more than one cause for this symptom       │
  38.  │               │        and fix coming soon.                                │
  39.  ├───────────────┼────────────────────────────────────────────────────────────┤
  40.  │    NOAPAR     │  Compile time performance was improved.                    │
  41.  ├───────────────┼────────────────────────────────────────────────────────────┤
  42.  │    NOAPAR     │  The compiler was unable to find files in a subdirectory   │
  43.  │               │  on a LAN drive.                                           │
  44.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  45.  │                                                                            │
  46.  │                All the fixes listed above were included in CS00008         │
  47.  │                                                                            │
  48.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  49.  │    PJ04295    │  The kbhit library function was not working.               │
  50.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  51.  │                                                                            │
  52.  │                All the fixes listed above were included in CS00009         │
  53.  │                                                                            │
  54.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  55.  │    PJ04465    │  The cprintf, fprintf, printf, and sprintf functions were  │
  56.  │               │  not printing floating-point values between 0.5 and 1.0    │
  57.  │               │  correctly when zero precision was specified.              │
  58.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  59.  │                                                                            │
  60.  │                All the fixes listed above were included in CS00010         │
  61.  │                                                                            │
  62.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  63.  │    PJ04602    │  Optimization Problem: Simple loops with induction variable│
  64.  │               │  increments greater than one were being incorrectly turned │
  65.  │               │  into memset or memcpy builtin function calls.             │
  66.  ├───────────────┼────────────────────────────────────────────────────────────┤
  67.  │    PJ04604    │  When the compiler turned switch statements into jump      │
  68.  │               │  tables, default code segment was always being referenced  │
  69.  │               │  even the if the function containing the switch statement  │
  70.  │               │  was specified in an alloc_text pragma.                    │
  71.  ├───────────────┼────────────────────────────────────────────────────────────┤
  72.  │    PJ04652    │  Optimization Problem: The stack pointer was not being     │
  73.  │               │  decremented before an indirect _Optlink call where the    │
  74.  │               │  return value was being used as a parameter to a tail call.│
  75.  ├───────────────┼────────────────────────────────────────────────────────────┤
  76.  │    PJ04674    │  When #pragma handler was specified for a 32-bit callback  │
  77.  │               │  function the compiler generated bad code for copying the  │
  78.  │               │  parameters from the 16-bit stack to the 32-bit stack.     │
  79.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  80.  │                                                                            │
  81.  │                All the fixes listed above were included in CS00011         │
  82.  │                                                                            │
  83.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  84.  │    PJ04811    │  Incorrect code was being generated for a complicated      │
  85.  │               │  expression where a short variable was being added to the  │
  86.  │               │  address of an element of an array of structures.          │
  87.  ├───────────────┼────────────────────────────────────────────────────────────┤
  88.  │    PJ05088    │  Optimization Problem: The compiler was trapping when      │
  89.  │               │  optimizing a loop containing a divide and modulo operation│
  90.  │               │  with the same operands.                                   │
  91.  ├───────────────┼────────────────────────────────────────────────────────────┤
  92.  │    PJ05100    │  Optimization Problem: Incorrect code was being generated  │
  93.  │               │  for a switch statement containing a case zero where the   │
  94.  │               │  switch variable had to be converted to an int from an     │
  95.  │               │  unsigned char.                                            │
  96.  ├───────────────┼────────────────────────────────────────────────────────────┤
  97.  │    PJ05124    │  Incorrect code was being generated when the result of     │
  98.  │               │  comparing two shorts with less than or greater than       │
  99.  │               │  operators was stored into an integer variable.            │
  100.  ├───────────────┼────────────────────────────────────────────────────────────┤
  101.  │    PJ05140    │  Incorrect code was being generated for _Optlink functions │
  102.  │               │  that have a number of floating-point or aggregate         │
  103.  │               │  parameters followed by integer parameters.                │
  104.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  105.  │                                                                            │
  106.  │                All the fixes listed above were included in CS00012         │
  107.  │                                                                            │
  108.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  109.  │    PJ05013    │  The compiler was trapping when trying to compile a        │
  110.  │               │  complicated expression where the address of an element of │
  111.  │               │  an array of structures was indexed and then a member of   │
  112.  │               │  the structure was accessed.                               │
  113.  ├───────────────┼────────────────────────────────────────────────────────────┤
  114.  │    PJ04674    │  The problem with #pragma handler on callback functions was│
  115.  │               │  really only a problem with _Far16 _Cdecl callback         │
  116.  │               │  functions.  So the fix in CSD0011 broke the case where    │
  117.  │               │  #pragma handler was used on a _Far16 _Pascal callback     │
  118.  │               │  function.  Now both work.                                 │
  119.  ├───────────────┼────────────────────────────────────────────────────────────┤
  120.  │    PJ04390    │  The C runtime termination routine was not freeing all     │
  121.  │               │  storage allocated during initialization.                  │
  122.  ├───────────────┼────────────────────────────────────────────────────────────┤
  123.  │    PJ05087    │  Partial static initialization of a structure containing   │
  124.  │               │  a union containing a structure containing bitfields was   │
  125.  │               │  not working.                                              │
  126.  ├───────────────┼────────────────────────────────────────────────────────────┤
  127.  │    NOAPAR     │  Some enhancements were made to the compiler to reduce     │
  128.  │               │  memory usage dring compilation and therefore reduce       │
  129.  │               │  compile times.                                            │
  130.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  131.  │                                                                            │
  132.  │                All the fixes listed above were included in CS00013         │
  133.  │                                                                            │
  134.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  135.  │    PJ05087    │  The assembler listing was incorrect after the real problem│
  136.  │               │  was fixed in CSD0013.                                     │
  137.  ├───────────────┼────────────────────────────────────────────────────────────┤
  138.  │    PJ05225    │  Optimization Problem: The compiler was trapping when      │
  139.  │               │  optimizing a procedure containing a loop nested within    │
  140.  │               │  another loop where an invariant in the inner loop was an  │
  141.  │               │  induction variable for the outer loop.                    │
  142.  ├───────────────┼────────────────────────────────────────────────────────────┤
  143.  │    PJ05230    │  Optimization Problem: Incorrect code was generated for an │
  144.  │               │  Optlink function containing a loop where an invariant was │
  145.  │               │  a register parameter and it was used in a conditional     │
  146.  │               │  expression within the loop.                               │
  147.  ├───────────────┼────────────────────────────────────────────────────────────┤
  148.  │    PJ05393    │  Optimization Problem: The compiler was trapping when      │
  149.  │               │  compiling code with consecutive calls to strcat with the  │
  150.  │               │  same first parameter.                                     │
  151.  ├───────────────┼────────────────────────────────────────────────────────────┤
  152.  │    PJ05431    │  Optimization Problem: The compiler was incorrectly        │
  153.  │               │  removing a store to a local variable before a loop.       │
  154.  ├───────────────┼────────────────────────────────────────────────────────────┤
  155.  │    PJ05450    │  The thunk prolog routine was using 64K too much stack in  │
  156.  │               │  certain situations.                                       │
  157.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  158.  │                                                                            │
  159.  │                All the fixes listed above were included in CS00014         │
  160.  │                                                                            │
  161.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  162.  │    PJ05225    │  The original fix for this problem may have caused other   │
  163.  │               │  optimization problems.  Now we believe that we have a     │
  164.  │               │  complete fix for this problem.                            │
  165.  ├───────────────┼────────────────────────────────────────────────────────────┤
  166.  │    PJ05303    │  Optimization Problem: A parameter in an _Optlink function │
  167.  │               │  that was assigned to a global register was not being kept │
  168.  │               │  alive long enough.                                        │
  169.  ├───────────────┼────────────────────────────────────────────────────────────┤
  170.  │    PJ05737    │  A "data record too large" message from the linker was     │
  171.  │               │  being generated when a union where the first member was   │
  172.  │               │  more than 1024 bytes smaller than another member was      │
  173.  │               │  being initialized OR when an aggregate within a user data │
  174.  │               │  segment was uninitialized.                                │
  175.  ├───────────────┼────────────────────────────────────────────────────────────┤
  176.  │    PJ05722    │  The compiler was generating an IMUL instruction with an   │
  177.  │               │  operand size prefix but the constant was 32 bits long     │
  178.  │               │  instead of 16-bits long.                                  │
  179.  ├───────────────┼────────────────────────────────────────────────────────────┤
  180.  │    PJ05723    │  Optimization Problem: The compiler was trapping when      │
  181.  │               │  trying to optimize a floating-point intensive procedure   │
  182.  │               │  where floating-point spills and reloads were necessary.   │
  183.  ├───────────────┼────────────────────────────────────────────────────────────┤
  184.  │    PJ05716    │  The compiler was emitting stack probes when the size of   │
  185.  │               │  all local variables was greater than 4K instead of when   │
  186.  │               │  the size is greater than 2K.  In some cases, stack probes │
  187.  │               │  were being emitted in the wrong place as well.  This      │
  188.  │               │  would cause strange traps to occur in multi-threaded      │
  189.  │               │  programs.                                                 │
  190.  ├───────────────┼────────────────────────────────────────────────────────────┤
  191.  │    PJ05728    │  Stack probes were not enabled during compilation of       │
  192.  │               │  multi-threaded runtime library code.                      │
  193.  ├───────────────┼────────────────────────────────────────────────────────────┤
  194.  │    PJ05556    │  The runtime library termination routine was not checking  │
  195.  │               │  to make sure runtime initialization had completed.        │
  196.  ├───────────────┼────────────────────────────────────────────────────────────┤
  197.  │    NOAPAR     │  Provides a means to set the number of spaces to be        │
  198.  │               │  inserted when tabs are encountered in the source file.    │
  199.  │               │  The default tab expansion is 8 spaces, as it was in the   │
  200.  │               │  orignal IPMD.  A new environment variable, PMDTAB, is now │
  201.  │               │  available to customize the tab expansion constant.  For   │
  202.  │               │  example, "SET PMDTAB=5" causes 5 spaces to be inserted    │
  203.  │               │  for every tab.                                            │
  204.  ├───────────────┼────────────────────────────────────────────────────────────┤
  205.  │    PJ05863    │  In multithreaded applications, the debugger would perform │
  206.  │               │  a "Run" when a "Step over" or a "Step debug" was          │
  207.  │               │  requested.                                                │
  208.  ├───────────────┼────────────────────────────────────────────────────────────┤
  209.  │    PJ05148    │  Internal debugger errors were sometimes reported when     │
  210.  │               │  performing a "Find" and when scrolling the source view.   │
  211.  ├───────────────┼────────────────────────────────────────────────────────────┤
  212.  │    PJ05117    │  Occasionally the debugger would automatically shut itself │
  213.  │               │  down when creating or scrolling a source view.  Included  │
  214.  │               │  in this APAR is a problem in which the application is left│
  215.  │               │  active when the debugger terminates after an exception.   │
  216.  ├───────────────┼────────────────────────────────────────────────────────────┤
  217.  │    NOAPAR     │  General internal PM debugging enhancements.               │
  218.  ├───────────────┼────────────────────────────────────────────────────────────┤
  219.  │    NOAPAR     │  General internal storage window enhancements.             │
  220.  ├───────────────┼────────────────────────────────────────────────────────────┤
  221.  │    NOAPAR     │  The name displayed for a subscripted array (i.e., x(i))   │
  222.  │               │  is not always updated - if the value remains the same     │
  223.  │               │  while the name changes, the name is not updated.          │
  224.  ├───────────────┼────────────────────────────────────────────────────────────┤
  225.  │    NOAPAR     │  If the stack window is open and data is entered in the    │
  226.  │               │  application window, the stack view can display the wrong  │
  227.  │               │  part name for a function name.  This can also cause the   │
  228.  │               │  debugger to crash if the focus is changed between the     │
  229.  │               │  source, the stack, and the application several times.     │
  230.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  231.  │                                                                            │
  232.  │                All the fixes listed above were included in CS00022         │
  233.  │                                                                            │
  234.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  235.  │    NOAPAR     │  Exception handler registration records were causing stack │
  236.  │               │  chaining to be disabled because of their location in the  │
  237.  │               │  instruction stream.                                       │
  238.  ├───────────────┼────────────────────────────────────────────────────────────┤
  239.  │    PJ06109    │  Optimization Problem: Multiplication by some particular   │
  240.  │               │  constants was being done incorrectly when the /G4 switch  │
  241.  │               │  was specified.                                            │
  242.  ├───────────────┼────────────────────────────────────────────────────────────┤
  243.  │    PJ06417    │  The compiler was not generating code to check for NULL    │
  244.  │               │  before calling _DosSelToFlat when a 16-bit pointer was    │
  245.  │               │  being converted to a 32-bit pointer.                      │
  246.  ├───────────────┼────────────────────────────────────────────────────────────┤
  247.  │    PJ06023    │  Optimization Problem: The wrong register was being used   │
  248.  │               │  when a virtual global register was reassociated with a    │
  249.  │               │  different real register. This showed up with nested loops │
  250.  │               │  where an induction variable in an outer loop is an        │
  251.  │               │  invariant within an inner loop.                           │
  252.  ├───────────────┼────────────────────────────────────────────────────────────┤
  253.  │    NOAPAR     │  Optimization Problem: Multiplication by certain negative  │
  254.  │               │  constants was being done incorrectly.                     │
  255.  ├───────────────┼────────────────────────────────────────────────────────────┤
  256.  │    PJ06022    │  Optimization Problem: A parameter register was not being  │
  257.  │               │  kept alive until the end of a loop when the last use of   │
  258.  │               │  the parameter is within the loop.                         │
  259.  ├───────────────┼────────────────────────────────────────────────────────────┤
  260.  │    PJ05928    │  Floating Point Number Formatting Problem:  Printf         │
  261.  │               │  formating with %g was crashing if the precision           │
  262.  │               │  requested exceeded 16 digits.                             │
  263.  ├───────────────┼────────────────────────────────────────────────────────────┤
  264.  │    PJ06439    │  Ceil and Floor Functions did not restore 387 flags.       │
  265.  ├───────────────┼────────────────────────────────────────────────────────────┤
  266.  │    PJ06454    │  Exception Handler Problem: If an exception occurs during  │
  267.  │               │  a library critical routine, and a second user exception   │
  268.  │               │  occurs while in a nested critical routine belonging to    │
  269.  │               │  the first exception, the exception handler will loop and  │
  270.  │               │  hang the process.                                         │
  271.  ├───────────────┼────────────────────────────────────────────────────────────┤
  272.  │    PJ06436    │  Optimization Problem: Statements of the form:             │
  273.  │               │  "if (bool) {x.a = const} else {x.b = const}" were being   │
  274.  │               │  simplified incorrectly to "x.a=const".                    │
  275.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  276.  │                                                                            │
  277.  │                All the fixes listed above were included in CS00026         │
  278.  │                                                                            │
  279.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  280.  │    NOAPAR     │  DBCS enablement changes to IPMD.                          │
  281.  │               │  Add the keyboard status indicator to the dialogs.         │
  282.  ├───────────────┼────────────────────────────────────────────────────────────┤
  283.  │    NOAPAR     │  DBCS enabled.  Fixed the stack probe option.              │
  284.  │               │  Updated help text for the stack probe option and added    │
  285.  │               │  the key help for the DDE4CSET.DLL.                        │
  286.  ├───────────────┼────────────────────────────────────────────────────────────┤
  287.  │    PJ06460    │  Optimization Problem: If an extern is modified inside a   │
  288.  │               │  loop while it's in a register, jumping from within that   │
  289.  │               │  loop to a return could sometimes bypass the code that     │
  290.  │               │  copies the register back to memory.                       │
  291.  ├───────────────┼────────────────────────────────────────────────────────────┤
  292.  │    PJ06459    │  Optimization Problem: Consecutive calls to the memmove,   │
  293.  │               │  memcpy, or memset functions with similar destination      │
  294.  │               │  addresses could fail if the returned address from the     │
  295.  │               │  first call is used before the second call.                │
  296.  ├───────────────┼────────────────────────────────────────────────────────────┤
  297.  │    PJ06584    │  Occasionally with optimization, loop exits coinciding with│
  298.  │               │  function exits caused incorrect termination of the loop.  │
  299.  ├───────────────┼────────────────────────────────────────────────────────────┤
  300.  │    PJ06610    │  Optimization Problem: Statements of the form:             │
  301.  │               │  "if (bool) {x = const0} else {x = const1}" could cause    │
  302.  │               │  a compile-time exception if "x" is an address.            │
  303.  ├───────────────┼────────────────────────────────────────────────────────────┤
  304.  │    PJ06593    │  Optimization Problem: Statements of the form given above  │
  305.  │               │  (PJ06610) could be incorrectly optimized if the "bool"    │
  306.  │               │  expression does not contain a relational or equality      │
  307.  │               │  operator.  For example: (bool) or (!bool).                │
  308.  ├───────────────┼────────────────────────────────────────────────────────────┤
  309.  │    PJ06637    │  Passing structs by value during _Optlink calls could cause│
  310.  │               │  the caller to incorrectly set up subsequent parameters.   │
  311.  ├───────────────┼────────────────────────────────────────────────────────────┤
  312.  │    PJ06742    │  The compiler could incorrectly set up the return register │
  313.  │               │  for calls to _DosFlatToSel with 16-bit function pointers, │
  314.  │               │  and thus cause register selection problems.               │
  315.  ├───────────────┼────────────────────────────────────────────────────────────┤
  316.  │    PJ06583    │  Optimization Problem: Gotos within the inner loop of a    │
  317.  │               │  nested loop could cause incorrect spilling of a variable  │
  318.  │               │  if the variable was used in the inner loop but not in     │
  319.  │               │  the outer loops.                                          │
  320.  ├───────────────┼────────────────────────────────────────────────────────────┤
  321.  │    PJ06813    │  Optimization Problem: A floating-point cast of the same   │
  322.  │               │  integer variable both before and inside an "if" could     │
  323.  │               │  cause the floating-point stack to become inconsistant.    │
  324.  ├───────────────┼────────────────────────────────────────────────────────────┤
  325.  │    PJ06623    │  Freopen Library Function: freopen function did not allow  │
  326.  │               │  the changing of the text/binary mode of a standard stream │
  327.  │               │  without redirecting to a different file.  For example:    │
  328.  │               │  freopen( "", "rb", stdin );                               │
  329.  ├───────────────┼────────────────────────────────────────────────────────────┤
  330.  │    PJ06904    │  Relax some of the restrictions on arrays of incomplete    │
  331.  │               │  types so that cfront-generated code can compile.          │
  332.  ├───────────────┼────────────────────────────────────────────────────────────┤
  333.  │    PJ06776    │  When a comma operator is used to evaluate the address     │
  334.  │               │  of a function being called, an internal compiler error    │
  335.  │               │  occurs.  Code Generation of Front End now fixed.          │
  336.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  337.  │                                                                            │
  338.  │                All the fixes listed above were included in CS00028         │
  339.  │                                                                            │
  340.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  341.  │    PJ06624    │  Optimization Problem: Using the address of a parameter    │
  342.  │               │  passed in a register could cause the compiler to trap     │
  343.  │               │  if basic blocks are merged.                               │
  344.  ├───────────────┼────────────────────────────────────────────────────────────┤
  345.  │    PJ06768    │  Optimization Problem: Multiplying two addresses that have │
  346.  │               │  been cast to integers could cause the compiler to trap.   │
  347.  ├───────────────┼────────────────────────────────────────────────────────────┤
  348.  │    PJ06846    │  Optimization Problem: A large number of consecutive       │
  349.  │               │  statements that each use values calculated in previous    │
  350.  │               │  statements could cause the swapper to grow very large.    │
  351.  ├───────────────┼────────────────────────────────────────────────────────────┤
  352.  │    PJ06841    │  Optimization Problem: The compiler could trap if the last │
  353.  │               │  "if" in a loop turns into a jump to the top of the loop.  │
  354.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  355.  │                                                                            │
  356.  │                All the fixes listed above were included in CS00030         │
  357.  │                                                                            │
  358.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  359.  │    PJ06929    │  Optimization Problem: A ternary within a loop could in    │
  360.  │               │  very rare cases cause a global register to be incorrectly │
  361.  │               │  clobbered.                                                │
  362.  ├───────────────┼────────────────────────────────────────────────────────────┤
  363.  │    PJ06881    │  Folding of the following expressions incorrectly removed  │
  364.  │               │  x if x had side effects:  (0  /  x)  --->  0              │
  365.  │               │                            (0  %  x)  --->  0              │
  366.  │               │                            (x  %  1)  --->  0              │
  367.  │               │                            (x  % -1)  --->  0              │
  368.  │               │                            (x  *  0)  --->  0              │
  369.  │               │                            (x  &  0)  --->  0              │
  370.  │               │                            (x  | -1)  ---> -1              │
  371.  ├───────────────┼────────────────────────────────────────────────────────────┤
  372.  │    PJ06862    │  Optimization Problem: This is a more general fix to the   │
  373.  │               │  problem dealt with in PJ06846.                            │
  374.  ├───────────────┼────────────────────────────────────────────────────────────┤
  375.  │    PJ06908    │  Without optimization, casts from an unsigned short to a   │
  376.  │               │  double could yield incorrect conversions.  The problem    │
  377.  │               │  disappears when compiling with /O+.                       │
  378.  ├───────────────┼────────────────────────────────────────────────────────────┤
  379.  │    NOAPAR     │  Allow ASCII characters above 0x80 to display in the       │
  380.  │               │  source view of the debugger                               │
  381.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  382.  │                                                                            │
  383.  │                All the fixes listed above were included in CS00032         │
  384.  │                                                                            │
  385.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  386.  │    PJ07151    │  Optimization Problem: Transformation of a simple loop to  │
  387.  │               │  either a memset or a memcpy could create initialization   │
  388.  │               │  problems if the loop induction variable is unsigned.      │
  389.  ├───────────────┼────────────────────────────────────────────────────────────┤
  390.  │    PJ07244    │  Optimization Problem: The constant value stored during    │
  391.  │               │  the builtin memset could be incorrectly calculated for    │
  392.  │               │  char and short types.                                     │
  393.  ├───────────────┼────────────────────────────────────────────────────────────┤
  394.  │    PJ06920    │  Preprocessor Problem: If a macro replacement token is     │
  395.  │               │  empty, in some cases we were erroneously substituting     │
  396.  │               │  it with a right parenthesis.                              │
  397.  ├───────────────┼────────────────────────────────────────────────────────────┤
  398.  │    PJ07198    │  Optimization Problem: Dead store removal within loops     │
  399.  │               │  failed to consider conditional stores and thus could      │
  400.  │               │  incorrectly remove a store that was not dead.             │
  401.  ├───────────────┼────────────────────────────────────────────────────────────┤
  402.  │    PJ06024    │  Optimization Problem: Bad invariant code motion could     │
  403.  │               │  result in a general protection fault at compile-time.     │
  404.  ├───────────────┼────────────────────────────────────────────────────────────┤
  405.  │    PJ07215    │  Optimization Problem: Calls to 16-bit functions could     │
  406.  │               │  cause inappropriate tail-call optimization to occur.      │
  407.  ├───────────────┼────────────────────────────────────────────────────────────┤
  408.  │    PJ07253    │  An internal problem could cause a compile-time general    │
  409.  │               │  protection fault when generating debugger information     │
  410.  │               │  without optimization.                                     │
  411.  ├───────────────┼────────────────────────────────────────────────────────────┤
  412.  │    PJ07259    │  FE Problem: When utilizing a pointer to a pointer to data,│
  413.  │               │  the compiler is only dereferencing the pointer once.      │
  414.  ├───────────────┼────────────────────────────────────────────────────────────┤
  415.  │    NOAPAR     │  Optimization Problem: An internal problem could cause     │
  416.  │               │  a compile-time general protection fault when keeping a    │
  417.  │               │  floating-point parameter alive in a register.             │
  418.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  419.  │                                                                            │
  420.  │                All the fixes listed above were included in CS00034         │
  421.  │                                                                            │
  422.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  423.  │    NOAPAR     │  Optimization Problem: Strength reduction of a             │
  424.  │               │  compiler-generated constant could result in a general     │
  425.  │               │  protection fault at compile-time.                         │
  426.  ├───────────────┼────────────────────────────────────────────────────────────┤
  427.  │    NOAPAR     │  Optimization Problem: Tail recursion elimination could    │
  428.  │               │  incorrectly handle parameter aliases.                     │
  429.  ├───────────────┼────────────────────────────────────────────────────────────┤
  430.  │    NOAPAR     │  BE Problem: Incorrect code may be generated for _Far16    │
  431.  │               │  _Pascal callback functions that return floating-point     │
  432.  │               │   types.                                                   │
  433.  ├───────────────┼────────────────────────────────────────────────────────────┤
  434.  │    PJ07295    │  Performance improvement of strstr.                        │
  435.  ├───────────────┼────────────────────────────────────────────────────────────┤
  436.  │    PJ07356    │  _fullpath was not returning the correct result when       │
  437.  │               │  ..\ was passed in as the partial path.                    │
  438.  ├───────────────┼────────────────────────────────────────────────────────────┤
  439.  │    NOAPAR     │  BE Problem: Incorrect code may be generated with the      │
  440.  │               │  combination of _alloca and #pragma handler.               │
  441.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  442.  │                                                                            │
  443.  │                All the fixes listed above were included in CS00036         │
  444.  │                                                                            │
  445.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  446.  │    PJ07414    │  Initialization Problem: Floating point 387 not cleared    │
  447.  │               │  during runtime initialization.                            │
  448.  ├───────────────┼────────────────────────────────────────────────────────────┤
  449.  │    PJ07631    │  Calloc Problem: Storage returned from calloc was not      │
  450.  │               │  set to zeroes after a realloc to a smaller size.          │
  451.  ├───────────────┼────────────────────────────────────────────────────────────┤
  452.  │    NOAPAR     │  Dump Problem: Incorrect NPX values were being displayed   │
  453.  │               │  for floating point exception dumps.                       │
  454.  ├───────────────┼────────────────────────────────────────────────────────────┤
  455.  │    NOAPAR     │  Fastsem: Making Fastsem multiprocessor safe.              │
  456.  ├───────────────┼────────────────────────────────────────────────────────────┤
  457.  │    PJ07672    │  I/O problem:  When a nonseekable device (e.g. LPT1, CON,  │
  458.  │               │  pipe, COM1) is opened with append mode, any attempt to    │
  459.  │               │  write to such device will fail with an OS/2 error 132.    │
  460.  ├───────────────┼────────────────────────────────────────────────────────────┤
  461.  │    PJ07673    │  FE Problem: Pointer to structure member (that is a struct)│
  462.  │               │  assigned to pointer to structure member (also a struct)   │
  463.  │               │  and then applying dot operator caused incorrect code.     │
  464.  ├───────────────┼────────────────────────────────────────────────────────────┤
  465.  │    PJ07600    │  DDE4.NDX - Removed incorrect references to the            │
  466.  │               │  toolkit information.                                      │
  467.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  468.  │                                                                            │
  469.  │                All the fixes listed above were included in CS00038         │
  470.  │                                                                            │
  471.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  472.  │    PJ07710    │  Optimization Problem: Casting char or short types to a    │
  473.  │               │  long type and then performing a bitwise AND on the result │
  474.  │               │  could lead to incorrect code generation if the upper 16   │
  475.  │               │  bits of the AND mask contain set bits.                    │
  476.  ├───────────────┼────────────────────────────────────────────────────────────┤
  477.  │    NOAPAR     │  Optimization Problem: A do loop with a complex while      │
  478.  │               │  condition could be incorrectly unrolled.                  │
  479.  ├───────────────┼────────────────────────────────────────────────────────────┤
  480.  │    NOAPAR     │  Optimization Problem: An internal problem could cause     │
  481.  │               │  a compile-time general protection fault when destroying   │
  482.  │               │  unreachable code.                                         │
  483.  ├───────────────┼────────────────────────────────────────────────────────────┤
  484.  │    PJ07429    │  Optimization Problem: If the last use of a floating-point │
  485.  │               │  parameter occurs near the beginning of a function before  │
  486.  │               │  any control flow statements, that parameter could be left │
  487.  │               │  on the floating-point stack when the function returns.    │
  488.  ├───────────────┼────────────────────────────────────────────────────────────┤
  489.  │    PJ07422    │  FE Problem: Compiler is erroneously generating warning    │
  490.  │               │  message EDC0830 on some enum usage when compiled with     │
  491.  │               │  -Ke+ switch.                                              │
  492.  ├───────────────┼────────────────────────────────────────────────────────────┤
  493.  │    PJ07766    │  Compiler Trap: The compiler would generate an exception   │
  494.  │               │  if a bitfield was post-incremented and used as the right  │
  495.  │               │  hand side of an assignment within the same statement.     │
  496.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  497.  │                                                                            │
  498.  │                All the fixes listed above were included in CS00040         │
  499.  │                                                                            │
  500.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  501.  │    PJ07908    │  Library Problem: Exception occurs when user presses       │
  502.  │               │  control c in a conio input routine.                       │
  503.  ├───────────────┼────────────────────────────────────────────────────────────┤
  504.  │    PJ07909    │  Library Problem: Memory allocation performance improvement│
  505.  ├───────────────┼────────────────────────────────────────────────────────────┤
  506.  │    PJ07984    │  Optimization Problem: Constant propagation could be       │
  507.  │               │  performed incorrectly when a store to one member of a     │
  508.  │               │  union clobbers a store to another member.                 │
  509.  ├───────────────┼────────────────────────────────────────────────────────────┤
  510.  │    PJ07986    │  Optimization Problem: If the last usage of a register     │
  511.  │               │  parameter is a store in the last block of a loop, then    │
  512.  │               │  incorrect code could be generated.                        │
  513.  ├───────────────┼────────────────────────────────────────────────────────────┤
  514.  │    PJ08032    │  Optimization Problem: Post-incrementing a variable that   │
  515.  │               │  is used as a parameter to consecutive function calls could│
  516.  │               │  cause incorrect constant propagation.                     │
  517.  ├───────────────┼────────────────────────────────────────────────────────────┤
  518.  │    PJ08046    │  Library Problem: Change macro definition of isascii.      │
  519.  ├───────────────┼────────────────────────────────────────────────────────────┤
  520.  │    PJ08065    │  BE Problem: Pointer subtraction, where the pointers point │
  521.  │               │  to members of a structure, could cause incorrect code     │
  522.  │               │  generation.                                               │
  523.  ├───────────────┼────────────────────────────────────────────────────────────┤
  524.  │    PJ08066    │  Optimization Problem: A ternary that uses volatile unions │
  525.  │               │  could cause incorrect code generation if the result of the│
  526.  │               │  conditional expression is used immediately after.         │
  527.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  528.  │                                                                            │
  529.  │                All the fixes listed above were included in CS00042         │
  530.  │                                                                            │
  531.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  532.  │    NOAPAR     │  Compiler Trap:  An internal problem could cause           │
  533.  │               │  a general protection fault during compilation.            │
  534.  ├───────────────┼────────────────────────────────────────────────────────────┤
  535.  │    NOAPAR     │  Library Problem:  Fixed obscure malloc/heapmin bug.       │
  536.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  537.  │                                                                            │
  538.  │                All the fixes listed above were included in CS00044         │
  539.  │                                                                            │
  540.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  541.  │    NOAPAR     │  Optimization Problem: An internal problem with loop       │
  542.  │               │  invariant code motion could cause a compile-time error.   │
  543.  ├───────────────┼────────────────────────────────────────────────────────────┤
  544.  │    PJ08413    │  BE Problem: Under certain conditions, memset was not      │
  545.  │               │  clearing the upper 2 bytes of the value register.         │
  546.  ├───────────────┼────────────────────────────────────────────────────────────┤
  547.  │    PJ08285    │  BE Problem: Incorrect code generated when right shifting  │
  548.  │               │  an unsigned char, which has been casted to a long, and    │
  549.  │               │  then assigning the result to an unsigned char.            │
  550.  ├───────────────┼────────────────────────────────────────────────────────────┤
  551.  │    PJ08300    │  RT Problem: _fullpath cannot parse "G:" , "C:", etc.      │
  552.  │               │  This is an API behaviour. Since C386 can parse the        │
  553.  │               │  above correctly, we decided to modify the call to         │
  554.  │               │  the API to accept "C:", "G:", etc.                        │
  555.  ├───────────────┼────────────────────────────────────────────────────────────┤
  556.  │    PJ08415    │  Optimization Problem: Global folding could be performed   │
  557.  │               │  incorrectly when a store to one member of a union clobbers│
  558.  │               │  a store to another member.                                │
  559.  ├───────────────┼────────────────────────────────────────────────────────────┤
  560.  │    PJ08286    │  Optimization Problem: Gotos near the bottom of a loop     │
  561.  │               │  which jump to code right after the loop could cause       │
  562.  │               │  incorrect code to be generated.                           │
  563.  ├───────────────┼────────────────────────────────────────────────────────────┤
  564.  │    PJ08456    │  BE Problem: Returning a struct by value could result in   │
  565.  │               │  incorrect code generation if the return statement calls   │
  566.  │               │  another function whose return type is a pointer to struct.│
  567.  ├───────────────┼────────────────────────────────────────────────────────────┤
  568.  │    NOAPAR     │  Optimization Problem: Tail call optimization could        │
  569.  │               │  generate incorrect code if the current function contains  │
  570.  │               │  a call to _alloca.                                        │
  571.  ├───────────────┼────────────────────────────────────────────────────────────┤
  572.  │    PJ08473    │  FE Problem: Casts from function pointers to segmented     │
  573.  │               │  data pointers were improperly being flagged as errors.    │
  574.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  575.  │                                                                            │
  576.  │                All the fixes listed above were included in CS00046         │
  577.  │                                                                            │
  578.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  579.  │    PJ08488    │  Optimization Problem: A parameter register could be       │
  580.  │               │  incorrectly clobbered if a use follows a def.             │
  581.  ├───────────────┼────────────────────────────────────────────────────────────┤
  582.  │    PJ08489    │  Optimization Problem: The register assigner could         │
  583.  │               │  choose the wrong register when trying to optimize the     │
  584.  │               │  use of byte registers. (ie: AL vs AH)                     │
  585.  ├───────────────┼────────────────────────────────────────────────────────────┤
  586.  │    PJ08487    │  Optimization Problem: A problem in the builtin memmove    │
  587.  │               │  could cause a run-time general protection fault.          │
  588.  ├───────────────┼────────────────────────────────────────────────────────────┤
  589.  │    PJ08486    │  BE Problem: Assigning a function returning an aggregate   │
  590.  │               │  to an array element whose index results from evaluating   │
  591.  │               │  another function could cause incorrect code generation.   │
  592.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  593.  │                                                                            │
  594.  │                All the fixes listed above were included in CS00048         │
  595.  │                                                                            │
  596.  ╞═══════════════╤════════════════════════════════════════════════════════════╡
  597.  │    PJ08712    │  BE Problem: Casting 0xFFFF0001 to unsigned long and then  │
  598.  │               │  to unsigned short incorrectly gives 0 instead of 1.       │
  599.  ├───────────────┼────────────────────────────────────────────────────────────┤
  600.  │    PJ00000    │  FE Problem: pointers in 16-bit function definitions       │
  601.  │               │  were not getting _Seg16 qualifiers.                       │
  602.  ├───────────────┼────────────────────────────────────────────────────────────┤
  603.  │    PJ08715    │  Optimization Problem: An internal problem with strength   │
  604.  │               │  reduction could cause a compile-time error.               │
  605.  ├───────────────┼────────────────────────────────────────────────────────────┤
  606.  │    PJ08714    │  BE Problem: An internal problem with code generation      │
  607.  │               │  could cause a compile-time general protection fault when  │
  608.  │               │  generating debugger information.                          │
  609.  ├───────────────┼────────────────────────────────────────────────────────────┤
  610.  │    NOAPAR     │  BE Problem: Copying large parameters (> 4096 bytes) onto  │
  611.  │               │  the stack could be done incorrectly.                      │
  612.  ├───────────────┼────────────────────────────────────────────────────────────┤
  613.  │    NOAPAR     │  BE Problem: An internal problem occuring while generating │
  614.  │               │  an assembler listing file could cause a compile-time      │
  615.  │               │  general protection fault.                                 │
  616.  ├───────────────┼────────────────────────────────────────────────────────────┤
  617.  │    PJ08753    │  RT Problem: When flushing a buffer of size greater than   │
  618.  │               │  8192 (8K) bytes and the buffer contains no LF, the library│
  619.  │               │  will trap with a General Protection fault.  This usually  │
  620.  │               │  happens when the user sets the buffer size using setvbuf  │
  621.  │               │  to a value greater than 8192.                             │
  622.  ├───────────────┼────────────────────────────────────────────────────────────┤
  623.  │    NOAPAR     │  RT Problem: Function _getdcwd incorrectly returns NULL    │
  624.  │               │  and sets errno to 60 when the pointer passed to _getdcwd  │
  625.  │               │  function as the second parameter is NULL.                 │
  626.  ├───────────────┼────────────────────────────────────────────────────────────┤
  627.  │    NOAPAR     │  FE Problem: Front-end might fail unpredictably when       │
  628.  │               │  /Fl or /L option is specified without source listing (/Ls)│
  629.  ╞═══════════════╧════════════════════════════════════════════════════════════╡
  630.  │                                                                            │
  631.  │                All the fixes listed above were included in CS00050         │
  632.  │                                                                            │
  633.  ╘════════════════════════════════════════════════════════════════════════════╛
  634.