home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / develop / adev11 / c / bug_list next >
Text File  |  1995-02-27  |  8KB  |  141 lines

  1. This is the bug fix list, please check it before posting a bug report in
  2. order to reduce duplication.  The list will be sorted by greatest
  3. severity and then in order of date reported.
  4.  
  5. LEVEL is the severity of the error from the following list
  6.   4 - compiler error - failure to parse C language
  7.   3 - incorrect code is generated
  8.   2 - generated code could be improved/optimized
  9.   1 - cosmetic improvements
  10.  
  11. NEXT ID = 65
  12.  
  13. ID  LEVEL  DESCRIPTION
  14.  
  15.   -------- LIVE BUGS --------
  16. 61    4     if the first of two arguments to a function call contains an
  17.               expression with an undefined symbol the following argument
  18.               (a simple variable) is the one declared as undefined.
  19. 54    4     the compiler does not correctly pass instances of structures to
  20.               functions, it seems that was never coded in.  Passing a
  21.               structure rather than a pointer to it is a dumb idea anyway.
  22. 51    4     prototype checking for too few arguments is non-existant
  23. 38    4     the compiler forgets to generate a label for a static function
  24.               that is consistent with the label it uses when the address
  25.               of the function is stored in a function pointer.
  26. 37    4     the compiler was never coded to initialize structures local to
  27.               a function. An example statement would be;
  28.               struct st = {3, 4, DOG};
  29. 64    3     printf does not handle floats
  30. 62    3     scanf does not work at all for reasons I don't understand and
  31.               can't determine without a better debugging system.
  32. 60    3     the put_asc_l family of functions in C_lib are not implemented
  33.               thus attempts to print longs will not happen.
  34. 56    2     a "register used" tracking peep-hole optimization could markedly
  35.               improve code generation in cases such as
  36.                 * if (*chr_ptr == 's') {
  37.                         ldx   _chr_ptr
  38.                         ldab  0,x
  39.                         cmpb  #'s'
  40.                         bne   L4
  41.                 *   ...
  42.                 * } else if (*chr_ptr == 't') {
  43.                 L4
  44.                         ldx   _chr_ptr
  45.                         ldab  0,x
  46.                         cmpb  #'t'
  47.                         bne   L5
  48.                 *   ...
  49.                 * }
  50.               In the second clause both the ldx and ldab could be removed,
  51.               This is a tricky optimization and will be left undone.
  52. 44    2     change the linker to allow replacing functions
  53. 20    2     add an option/keyword/pragma to allow placement of variables
  54.               in zero page memory
  55. 21    1     allow C++ style comments
  56. 14    1     eliminate the lc_auto label used for local var access (inc  4-L1,Y)
  57.  
  58.   -------- NEWLY DEAD BUGS --------
  59.  
  60.   -------- ROTTING BUGS --------
  61. 49    4     ellipsis handling for prototype checking is incorrect
  62. 50    4     prototype checking for too many arguments is non-existant
  63. 59    3     bugs in conversions of larger types to smaller types
  64. 58    3     comparisons generating incorrect code
  65. 57    3     casts of constants are being ignored
  66. 53    3     missing ldx 0,x in direct version of switch statement
  67. 52    3     various fixes to stdio routines
  68. 45    3     the following statement breaks the compiler repeatedly
  69.               file_ptr->_buff[file_ptr->_wr_cnt++] = *((char *)file_ptr->_io_ext->_data)++;
  70. 43    3     two errors in the long branch optimizer could (although rarely)
  71.               cause a short branch range to be exceeded.
  72. 39    3     size of return values from functions is not being used.  The
  73.               default size of int is being used.
  74. 36    3     initialization of structures, longs and pointers are not correct
  75. 35    3     return of address of variable produces a 68000 addr mode
  76. 29    3     post fix auto increment of longs where result is used in further
  77.               expressions is not done
  78. 26    3     incorrect handling of char cast to int as function parameter
  79. 22    3     bugs in string usage
  80. 17    3     multiply and divide library functions need to be coded
  81. 16    3     all comparisons (if, while etc.) will not work with longs
  82.               this is due to missing 4 byte compare
  83. 15    3     one form of switch statement will not work with longs
  84.               this is due to missing 4 byte compare
  85. 12    3     various errors in local vars, using local vars, function
  86.               parameters -Stan
  87. 13    3     returning a constant from a function resulted in a 68000 instr -Stan
  88. 6     3     a short branch is always used even when a long one is req'd -Stan
  89. 7     3     the switch statement generates a sequence that crashes SAsm -Stan
  90. 5     3     increment decrement is not correct with longs -Stan
  91. 2     3     incorrect code in ?: syntax -Stan
  92. 31    2     a hangover from the 68000 version is forcing structures to an
  93.               even byte size
  94. 32    2     the assembler (SAsm) must be modified to handle zero page
  95.               XREF's  (XREF.z    L99999999) and segments
  96. 24    2     Modify linker to handle IDATA
  97. 28    2     auto increment by sizes other than char doesn't advance efficiently
  98.               for post fix forms
  99. 25    2     write c.o startup program
  100. 55    2     optimize std x/ldd x and stab x/ldab x
  101. 46    2     optimize ldd followed by cpd #0
  102. 41    2     optimize the &= and |= operators to bit ops where possible and
  103.               add a compiler option to generate 6301 bit ops instead or to
  104.               not generate bit ops if 6301 bit ops prove insufficient.
  105.               CANCEL!! 6301 can never be used effectively with C (no Y reg)
  106. 42    2     optimize the +, -, += and -= operators to do a faster version
  107.               when the operand is a simple variable.
  108. 48    2     use of float variables should now be correct.  There is also a
  109.               new library (math.lib) containing arithmatic and trigonometric
  110.               functions.
  111. 47    2     three HC11 specific builtin functions must be added; enable_intr()
  112.               = CLI, disable_intr() = SEI and wait_for_intr() = WAI
  113. 34    2     add peephole optimization cmpb #0 ==> tstb and if it follows a
  114.               ldab remove it completely
  115. 19    2     add an option to generate PROMable programs
  116.               ( the -P option generates initialized data into an IDATA segment
  117.               when the linker sees this, it creates a BSS the size of the
  118.               segment and make this segment into code. Your program must call
  119.               _init_data to cause the code image to be copied to the BSS.
  120.               This will first require a rev of the linker.)
  121. 1     2     allow for 8 bit pushes to stack instead of "pshd" in binary ops
  122.               with 8 bit operands -Stan
  123. 10    2     create a static compiler option that forces local vars to
  124.               static -Stan
  125.               ( this option is -w )
  126. 9     2     optimize incdec to use inx/dex for 2 byte operands -Stan
  127.               (this was not done, the existing method is one byte longer
  128.               but, normally, 4 cycles faster.)
  129. 4     2     automatic promotion of numerics to any size (with cbl cwl) does
  130.               not happen -Stan
  131. 8     2     the switch statement needs optimization
  132. 3     2     multiply of char * char to char forces to int size -Stan
  133. 63    1     the quiet option now defaults to on
  134. 23    1     compiler always reports same version at startup
  135. 27    1     write printf,scanf routines
  136. 40    1     due to the importance of prototypes for return values from
  137.               functions it is neccesary to add a warning whenever a
  138.               function is used before its prototype is known.
  139. 33    1     default path for includes should be ADev11:include
  140. 11    1     remove muldiv32 option
  141.