VLA code: minor fix
[tinycc.git] / TODO
Commit [+]AuthorDateLineData
eb0e3e70 bellard2001-11-11 18:01:29 +00001TODO list:
27f6e16b bellard2001-10-27 23:48:39 +00002
265dddbe grischka2008-01-16 22:33:56 +00003Bugs:
4
5- fix macro substitution with nested definitions (ShangHongzhang)
6- FPU st(0) is left unclean (kwisatz haderach). Incompatible with
7 optimized gcc/msc code
3667408a grischka2008-01-16 20:16:35 +00008
2a6c1047 bellard2004-10-23 23:11:05 +00009- constructors
b7f12dfb bellard2003-10-04 21:29:04 +000010- cast bug (Peter Wang)
11- define incomplete type if defined several times (Peter Wang).
4e6edcdc bellard2003-05-24 16:12:58 +000012- test binutils/gcc compile
4e6edcdc bellard2003-05-24 16:12:58 +000013- tci patch + argument.
dd56ab8c bellard2003-04-13 19:50:35 +000014- see -lxxx bug (Michael Charity).
75e743d2 bellard2003-01-06 20:19:20 +000015- see transparent union pb in /urs/include/sys/socket.h
16- precise behaviour of typeof with arrays ? (__put_user macro)
75e743d2 bellard2003-01-06 20:19:20 +000017 but should suffice for most cases)
4e6edcdc bellard2003-05-24 16:12:58 +000018- handle '? x, y : z' in unsized variable initialization (',' is
19 considered incorrectly as separator in preparser)
265dddbe grischka2008-01-16 22:33:56 +000020- transform functions to function pointers in function parameters
21 (net/ipv4/ip_output.c)
75e743d2 bellard2003-01-06 20:19:20 +000022- fix function pointer type display
75e743d2 bellard2003-01-06 20:19:20 +000023- check lcc test suite -> fix bitfield binary operations
24- check section alignment in C
25- fix invalid cast in comparison 'if (v == (int8_t)v)'
dc685c6b bellard2002-12-08 14:34:02 +000026- finish varargs.h support (gcc 3.2 testsuite issue)
122198a8 bellard2002-11-24 15:58:28 +000027- fix static functions declared inside block
122198a8 bellard2002-11-24 15:58:28 +000028- fix multiple unions init
265dddbe grischka2008-01-16 22:33:56 +000029- sizeof, alignof, typeof can still generate code in some cases.
30- Fix the remaining libtcc memory leaks.
31- make libtcc fully reentrant (except for the compilation stage itself).
32
33Bound checking:
34
35- '-b' bug.
36- fix bound exit on RedHat 7.3
bc427f5b bellard2002-08-31 12:44:16 +000037- setjmp is not supported properly in bound checking.
ebe9e87c bellard2002-01-05 19:50:17 +000038- fix bound check code with '&' on local variables (currently done
39 only for local arrays).
6cd2d5d2 bellard2002-11-03 00:44:38 +000040- bound checking and float/long long/struct copy code. bound
bc427f5b bellard2002-08-31 12:44:16 +000041 checking and symbol + offset optimization
265dddbe grischka2008-01-16 22:33:56 +000042
43Missing features:
44
45- disable-asm and disable-bcheck options
46- __builtin_expect()
47- improve '-E' option.
265dddbe grischka2008-01-16 22:33:56 +000048- atexit (Nigel Horne)
49- packed attribute
265dddbe grischka2008-01-16 22:33:56 +000050- C99: add complex types (gcc 3.2 testsuite issue)
51- postfix compound literals (see 20010124-1.c)
eb0e3e70 bellard2001-11-11 18:01:29 +000052
122198a8 bellard2002-11-24 15:58:28 +000053Optimizations:
54
55- suppress specific anonymous symbol handling
56- more parse optimizations (=even faster compilation)
57- memory alloc optimizations (=even faster compilation)
265dddbe grischka2008-01-16 22:33:56 +000058- optimize VT_LOCAL + const
59- better local variables handling (needed for other targets)
122198a8 bellard2002-11-24 15:58:28 +000060
eb0e3e70 bellard2001-11-11 18:01:29 +000061Not critical:
62
524be938 bellard2002-08-18 14:34:02 +000063- C99: fix multiple compound literals inits in blocks (ISOC99
64 normative example - only relevant when using gotos! -> must add
65 boolean variable to tell if compound literal was already
66 initialized).
5370be48 bellard2002-08-18 14:44:08 +000067- add PowerPC or ARM code generator and improve codegen for RISC (need
68 to suppress VT_LOCAL and use a base register instead).
69- interactive mode / integrated debugger
a88b8558 bellard2001-12-02 21:44:40 +000070- fix preprocessor symbol redefinition
eb0e3e70 bellard2001-11-11 18:01:29 +000071- better constant opt (&&, ||, ?:)
34a14a08 bellard2001-11-18 16:33:35 +000072- add portable byte code generator and interpreter for other
73 unsupported architectures.
840d197e bellard2002-07-24 22:13:02 +000074- C++: variable declaration in for, minimal 'class' support.
265dddbe grischka2008-01-16 22:33:56 +000075- win32: __intxx. use resolve for bchecked malloc et al.
76 check exception code (exception filter func).
524be938 bellard2002-08-18 14:34:02 +000077- handle void (__attribute__() *ptr)()
122198a8 bellard2002-11-24 15:58:28 +000078
265dddbe grischka2008-01-16 22:33:56 +000079Fixed (probably):
122198a8 bellard2002-11-24 15:58:28 +000080
265dddbe grischka2008-01-16 22:33:56 +000081- bug with defines:
82 #define spin_lock(lock) do { } while (0)
83 #define wq_spin_lock spin_lock
84 #define TEST() wq_spin_lock(a)
85- typedefs can be structure fields
86- see bugfixes.diff + improvement.diff from Daniel Glockner
87- long long constant evaluation
88- add alloca()
89- gcc '-E' option.
90- #include_next support for /usr/include/limits ?
91- function pointers/lvalues in ? : (linux kernel net/core/dev.c)
92- win32: add __stdcall, check GetModuleHandle for dlls.