force #if #endif match in same file
[tinycc.git] / TODO
blobc8a092ad58a9a69827f194b415d2a178041434d1
1 TODO list:
3 - fix constant error msg
4 - add alloca()
5 - add typeof()
6 - add checks for multiple including of same file (= compile even faster)
7 - add 'CType' structure to optimize type handling (= compile even faster)
8 - suppress unneeded hash table for Symbols (= compile even faster)
9 - ignore at least asm extension
10 - setjmp is not supported properly in bound checking.
11 - better local variables handling (needed for other targets)
12 - fix bound check code with '&' on local variables (currently done
13   only for local arrays).
14 - To check: bound checking and float/long long/struct copy code. bound
15   checking and symbol + offset optimization
16 - To fix: 'sizeof' generate code if too complex expression is given.
17 - free all allocated data and use longjmp for errors (useful for libtcc use)
19 Not critical:
21 - C99: add variable size arrays
22 - C99: add complex types
23 - C99: fix multiple compound literals inits in blocks (ISOC99
24   normative example - only relevant when using gotos! -> must add
25   boolean variable to tell if compound literal was already
26   initialized).
27 - add PowerPC or ARM code generator and improve codegen for RISC (need
28   to suppress VT_LOCAL and use a base register instead).
29 - interactive mode / integrated debugger
30 - fix preprocessor symbol redefinition
31 - better constant opt (&&, ||, ?:)
32 - add portable byte code generator and interpreter for other
33   unsupported architectures.
34 - C++: variable declaration in for, minimal 'class' support.
35 - win32: add __stdcall, __intxx. use resolve for bchecked malloc et
36   al. check GetModuleHandle for dlls. check exception code (exception
37   filter func).
38 - handle void (__attribute__() *ptr)()
39 - handle '? x, y : z' in reversed function arguments or unsized
40   variable initialization (',' is considered incorrectly as separator
41   in preparser).