home *** CD-ROM | disk | FTP | other *** search
- The following known bugs exist:
-
- 1) Expression evaluation is recursive. With a 4K compiler stack
- the limit is approximately something like:
-
- a = (b()+(c()+(d()+(e()+f()))));
-
- Beyond this unpredictable results will occur. Raise the stack limit
- or rearrange the expression with higher order parenthesis to the left.
- Notice this would not be a problem without the grouping parenthesis
- because the compiler wouldn't have to maintain so many contexts.
-
- 2) #line directive is ignored
-
- 3) #pragma statements not passed through to the CPP file
-
- 4) 386 floating point code generation does not support checking if
- there is floating point stack overflow. Be careful!
-
- 5) List file addresses for function arguments and local variables are
- not displayed properly in the list file.
-
- 6) Floating point may or may not work. I have no way of knowing. In
- particular, on the M68K I haven't put in coprocessor sync instructions,
- if they are necessary.
-
- 7) expressions such as :
-
- a = b = c;
-
- may not return the correct value to anything other than the rightmost
- assignment. In general it will work, but if there are multiple
- implicit casts going on from one assigment to the next it may not work
- correctly.
-
- 8) % may not work properly for signed divisions
-
- 9) macro expansions will take place even inside comments, so:
-
- #define EOF (-1) /* end of file marker */
- #define _F_EOF 0x2000 /* EOF flag */
-
- then _F_EOF will expand to:
-
- 0x2000 /* (-1) /* end of file marker */ flag */
-
- and the preprocessor does NOT allow nested comments.
-
- 10) #pragma startup and #pragma rundown cause a bug in the ASM file
- that will prevent it from compiling, if any functions occur before the
- pragma.
-
- 11) casts in static initializations are ignored.