update
[tinycc.git] / TODO
blob17d7204895cecbc7734c5f2caae1534521423ea2
1 TODO list:
3 - add statment expressions (linux kernel compilation)
4 - implement minimal 'asm' extension (linux kernel compilation)
5 - handle static inline, then normal prototype.
6 - support link once trick (gcc 3.2 / glibc compilation issue)
7 - finish varargs.h support (gcc 3.2 testsuite issue)
8 - add alloca()
9 - fix static functions declared inside block
10 - fix bitfield binary operations
11 - C99: add variable size arrays (gcc 3.2 testsuite issue)
12 - C99: add complex types (gcc 3.2 testsuite issue)
13 - ignore __extension__ keyword (see 20010328-1.c). 
14 - Add __restrict keyword (20010611-1.c).
15 - postfix compound literals (see 20010124-1.c)
16 - handle '? x, y : z' in reversed function arguments or unsized
17   variable initialization (',' is considered incorrectly as separator
18   in preparser) : use a "record" parse mode ?
19 - fix multiple unions init
20 - test includes in libtcc_test.
21 - look at GCC 3.2 compatibility problems.
22 - add option for auto run
23 - setjmp is not supported properly in bound checking.
24 - better local variables handling (needed for other targets)
25 - fix bound check code with '&' on local variables (currently done
26   only for local arrays).
27 - sizeof, alignof, typeof can still generate code in some cases.
28 - bound checking and float/long long/struct copy code. bound
29   checking and symbol + offset optimization
30 - Fix the remaining libtcc memory leaks.
31 - make libtcc fully reentrant (except for the compilation stage itself).
32 - '-MD' option
34 Optimizations:
36 - suppress specific anonymous symbol handling
37 - more parse optimizations (=even faster compilation)
38 - memory alloc optimizations (=even faster compilation)
40 Not critical:
42 - C99: fix multiple compound literals inits in blocks (ISOC99
43   normative example - only relevant when using gotos! -> must add
44   boolean variable to tell if compound literal was already
45   initialized).
46 - add PowerPC or ARM code generator and improve codegen for RISC (need
47   to suppress VT_LOCAL and use a base register instead).
48 - interactive mode / integrated debugger
49 - fix preprocessor symbol redefinition
50 - better constant opt (&&, ||, ?:)
51 - add portable byte code generator and interpreter for other
52   unsupported architectures.
53 - C++: variable declaration in for, minimal 'class' support.
54 - win32: add __stdcall, __intxx. use resolve for bchecked malloc et
55   al. check GetModuleHandle for dlls. check exception code (exception
56   filter func).
57 - handle void (__attribute__() *ptr)()