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