| @@ -1,63 +1,65 @@ |
| 1 | TODO list: | 1 | TODO list: |
| 2 | | 2 | |
| 3 | - FPU st(0) is left unclean (incompatible with optimized gcc/msc code) | 3 | Bugs: |
| | 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 |
| 4 | | 8 | |
| 5 | - bug with defines: | | |
| 6 | #define spin_lock(lock) do { } while (0) | | |
| 7 | #define wq_spin_lock spin_lock | | |
| 8 | #define TEST() wq_spin_lock(a) | | |
| 9 | - typedefs can be structure fields | | |
| 10 | - see bugfixes.diff + improvement.diff from Daniel Glockner | | |
| 11 | - constructors | 9 | - constructors |
| 12 | - cast bug (Peter Wang) | 10 | - cast bug (Peter Wang) |
| 13 | - define incomplete type if defined several times (Peter Wang). | 11 | - define incomplete type if defined several times (Peter Wang). |
| 14 | - long long constant evaluation | | |
| 15 | - configure --cc=tcc (still one bug in libtcc1.c) | 12 | - configure --cc=tcc (still one bug in libtcc1.c) |
| 16 | - disable-asm and disable-bcheck options | | |
| 17 | - test binutils/gcc compile | 13 | - test binutils/gcc compile |
| 18 | - add alloca(), __builtin_expect() | | |
| 19 | - gcc '-E' option. | | |
| 20 | - optimize VT_LOCAL + const | | |
| 21 | - tci patch + argument. | 14 | - tci patch + argument. |
| 22 | - '-b' bug. | | |
| 23 | - atexit (Nigel Horne) | | |
| 24 | - see -lxxx bug (Michael Charity). | 15 | - see -lxxx bug (Michael Charity). |
| 25 | - see transparent union pb in /urs/include/sys/socket.h | 16 | - see transparent union pb in /urs/include/sys/socket.h |
| 26 | - precise behaviour of typeof with arrays ? (__put_user macro) | 17 | - precise behaviour of typeof with arrays ? (__put_user macro) |
| 27 | - #include_next support for /usr/include/limits ? | | |
| 28 | but should suffice for most cases) | 18 | but should suffice for most cases) |
| 29 | - handle '? x, y : z' in unsized variable initialization (',' is | 19 | - handle '? x, y : z' in unsized variable initialization (',' is |
| 30 | considered incorrectly as separator in preparser) | 20 | considered incorrectly as separator in preparser) |
| 31 | - function pointers/lvalues in ? : (linux kernel net/core/dev.c) | 21 | - transform functions to function pointers in function parameters |
| 32 | - transform functions to function pointers in function parameters (net/ipv4/ip_output.c) | 22 | (net/ipv4/ip_output.c) |
| 33 | - fix function pointer type display | 23 | - fix function pointer type display |
| 34 | - fix bound exit on RedHat 7.3 | | |
| 35 | - check lcc test suite -> fix bitfield binary operations | 24 | - check lcc test suite -> fix bitfield binary operations |
| 36 | - check section alignment in C | 25 | - check section alignment in C |
| 37 | - fix invalid cast in comparison 'if (v == (int8_t)v)' | 26 | - fix invalid cast in comparison 'if (v == (int8_t)v)' |
| 38 | - packed attribute | | |
| 39 | - finish varargs.h support (gcc 3.2 testsuite issue) | 27 | - finish varargs.h support (gcc 3.2 testsuite issue) |
| 40 | - fix static functions declared inside block | 28 | - fix static functions declared inside block |
| 41 | - C99: add variable size arrays (gcc 3.2 testsuite issue) | | |
| 42 | - C99: add complex types (gcc 3.2 testsuite issue) | | |
| 43 | - postfix compound literals (see 20010124-1.c) | | |
| 44 | - fix multiple unions init | 29 | - fix multiple unions init |
| | 30 | - sizeof, alignof, typeof can still generate code in some cases. |
| | 31 | - Fix the remaining libtcc memory leaks. |
| | 32 | - make libtcc fully reentrant (except for the compilation stage itself). |
| | 33 | |
| | 34 | Bound checking: |
| | 35 | |
| | 36 | - '-b' bug. |
| | 37 | - fix bound exit on RedHat 7.3 |
| 45 | - setjmp is not supported properly in bound checking. | 38 | - setjmp is not supported properly in bound checking. |
| 46 | - better local variables handling (needed for other targets) | | |
| 47 | - fix bound check code with '&' on local variables (currently done | 39 | - fix bound check code with '&' on local variables (currently done |
| 48 | only for local arrays). | 40 | only for local arrays). |
| 49 | - sizeof, alignof, typeof can still generate code in some cases. | | |
| 50 | - bound checking and float/long long/struct copy code. bound | 41 | - bound checking and float/long long/struct copy code. bound |
| 51 | checking and symbol + offset optimization | 42 | checking and symbol + offset optimization |
| 52 | - Fix the remaining libtcc memory leaks. | 43 | |
| 53 | - make libtcc fully reentrant (except for the compilation stage itself). | 44 | Missing features: |
| 54 | - '-MD' option | 45 | |
| | 46 | - disable-asm and disable-bcheck options |
| | 47 | - __builtin_expect() |
| | 48 | - improve '-E' option. |
| | 49 | - add '-MD' option |
| | 50 | - atexit (Nigel Horne) |
| | 51 | - packed attribute |
| | 52 | - C99: add variable size arrays (gcc 3.2 testsuite issue) |
| | 53 | - C99: add complex types (gcc 3.2 testsuite issue) |
| | 54 | - postfix compound literals (see 20010124-1.c) |
| 55 | | 55 | |
| 56 | Optimizations: | 56 | Optimizations: |
| 57 | | 57 | |
| 58 | - suppress specific anonymous symbol handling | 58 | - suppress specific anonymous symbol handling |
| 59 | - more parse optimizations (=even faster compilation) | 59 | - more parse optimizations (=even faster compilation) |
| 60 | - memory alloc optimizations (=even faster compilation) | 60 | - memory alloc optimizations (=even faster compilation) |
| | 61 | - optimize VT_LOCAL + const |
| | 62 | - better local variables handling (needed for other targets) |
| 61 | | 63 | |
| 62 | Not critical: | 64 | Not critical: |
| 63 | | 65 | |
| @@ -73,11 +75,21 @@ Not critical: · 9 unmodified lines |
| 73 | - add portable byte code generator and interpreter for other | 75 | - add portable byte code generator and interpreter for other |
| 74 | unsupported architectures. | 76 | unsupported architectures. |
| 75 | - C++: variable declaration in for, minimal 'class' support. | 77 | - C++: variable declaration in for, minimal 'class' support. |
| 76 | - win32: add __stdcall, __intxx. use resolve for bchecked malloc et | 78 | - win32: __intxx. use resolve for bchecked malloc et al. |
| 77 | al. check GetModuleHandle for dlls. check exception code (exception | 79 | check exception code (exception filter func). |
| 78 | filter func). | | |
| 79 | - handle void (__attribute__() *ptr)() | 80 | - handle void (__attribute__() *ptr)() |
| 80 | | 81 | |
| | 82 | Fixed (probably): |
| 81 | | 83 | |
| 82 | | 84 | - bug with defines: |
| 83 | | 85 | #define spin_lock(lock) do { } while (0) |
| | 86 | #define wq_spin_lock spin_lock |
| | 87 | #define TEST() wq_spin_lock(a) |
| | 88 | - typedefs can be structure fields |
| | 89 | - see bugfixes.diff + improvement.diff from Daniel Glockner |
| | 90 | - long long constant evaluation |
| | 91 | - add alloca() |
| | 92 | - gcc '-E' option. |
| | 93 | - #include_next support for /usr/include/limits ? |
| | 94 | - function pointers/lvalues in ? : (linux kernel net/core/dev.c) |
| | 95 | - win32: add __stdcall, check GetModuleHandle for dlls. |