From 265dddbecf8c8a5df5492caa72cf2b4e36bf00d7 Mon Sep 17 00:00:00 2001 From: grischka Date: Wed, 16 Jan 2008 22:33:56 +0000 Subject: [PATCH] Udated and cleaned up TODO. --- Makefile | 2 +- TODO | 76 +++++++++++++++++++++++++++++++++++++--------------------------- 2 files changed, 45 insertions(+), 33 deletions(-) diff --git a/Makefile b/Makefile index 502b0d42..ffd5d5f5 100644 --- a/Makefile +++ b/Makefile @@ -175,7 +175,7 @@ tiny_impdef$(EXESUF): tiny_impdef.c ifdef CONFIG_WIN32 # for windows, we must use TCC because we generate ELF objects LIBTCC1_OBJS=$(addprefix win32/lib/, crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o) libtcc1.o -LIBTCC1_CC=./tcc.exe -Bwin32 +LIBTCC1_CC=./tcc.exe -Bwin32 -DTCC_TARGET_PE else LIBTCC1_OBJS=libtcc1.o LIBTCC1_CC=$(CC) diff --git a/TODO b/TODO index 1bd4f2ee..6f49c5d5 100644 --- a/TODO +++ b/TODO @@ -1,63 +1,65 @@ TODO list: -- FPU st(0) is left unclean (incompatible with optimized gcc/msc code) +Bugs: + +- fix macro substitution with nested definitions (ShangHongzhang) +- FPU st(0) is left unclean (kwisatz haderach). Incompatible with + optimized gcc/msc code -- bug with defines: - #define spin_lock(lock) do { } while (0) - #define wq_spin_lock spin_lock - #define TEST() wq_spin_lock(a) -- typedefs can be structure fields -- see bugfixes.diff + improvement.diff from Daniel Glockner - constructors - cast bug (Peter Wang) - define incomplete type if defined several times (Peter Wang). -- long long constant evaluation - configure --cc=tcc (still one bug in libtcc1.c) -- disable-asm and disable-bcheck options - test binutils/gcc compile -- add alloca(), __builtin_expect() -- gcc '-E' option. -- optimize VT_LOCAL + const - tci patch + argument. -- '-b' bug. -- atexit (Nigel Horne) - see -lxxx bug (Michael Charity). - see transparent union pb in /urs/include/sys/socket.h - precise behaviour of typeof with arrays ? (__put_user macro) -- #include_next support for /usr/include/limits ? but should suffice for most cases) - handle '? x, y : z' in unsized variable initialization (',' is considered incorrectly as separator in preparser) -- function pointers/lvalues in ? : (linux kernel net/core/dev.c) -- transform functions to function pointers in function parameters (net/ipv4/ip_output.c) +- transform functions to function pointers in function parameters + (net/ipv4/ip_output.c) - fix function pointer type display -- fix bound exit on RedHat 7.3 - check lcc test suite -> fix bitfield binary operations - check section alignment in C - fix invalid cast in comparison 'if (v == (int8_t)v)' -- packed attribute - finish varargs.h support (gcc 3.2 testsuite issue) - fix static functions declared inside block -- C99: add variable size arrays (gcc 3.2 testsuite issue) -- C99: add complex types (gcc 3.2 testsuite issue) -- postfix compound literals (see 20010124-1.c) - fix multiple unions init +- sizeof, alignof, typeof can still generate code in some cases. +- Fix the remaining libtcc memory leaks. +- make libtcc fully reentrant (except for the compilation stage itself). + +Bound checking: + +- '-b' bug. +- fix bound exit on RedHat 7.3 - setjmp is not supported properly in bound checking. -- better local variables handling (needed for other targets) - fix bound check code with '&' on local variables (currently done only for local arrays). -- sizeof, alignof, typeof can still generate code in some cases. - bound checking and float/long long/struct copy code. bound checking and symbol + offset optimization -- Fix the remaining libtcc memory leaks. -- make libtcc fully reentrant (except for the compilation stage itself). -- '-MD' option + +Missing features: + +- disable-asm and disable-bcheck options +- __builtin_expect() +- improve '-E' option. +- add '-MD' option +- atexit (Nigel Horne) +- packed attribute +- C99: add variable size arrays (gcc 3.2 testsuite issue) +- C99: add complex types (gcc 3.2 testsuite issue) +- postfix compound literals (see 20010124-1.c) Optimizations: - suppress specific anonymous symbol handling - more parse optimizations (=even faster compilation) - memory alloc optimizations (=even faster compilation) +- optimize VT_LOCAL + const +- better local variables handling (needed for other targets) Not critical: @@ -73,11 +75,21 @@ Not critical: - add portable byte code generator and interpreter for other unsupported architectures. - C++: variable declaration in for, minimal 'class' support. -- win32: add __stdcall, __intxx. use resolve for bchecked malloc et - al. check GetModuleHandle for dlls. check exception code (exception - filter func). +- win32: __intxx. use resolve for bchecked malloc et al. + check exception code (exception filter func). - handle void (__attribute__() *ptr)() +Fixed (probably): - - +- bug with defines: + #define spin_lock(lock) do { } while (0) + #define wq_spin_lock spin_lock + #define TEST() wq_spin_lock(a) +- typedefs can be structure fields +- see bugfixes.diff + improvement.diff from Daniel Glockner +- long long constant evaluation +- add alloca() +- gcc '-E' option. +- #include_next support for /usr/include/limits ? +- function pointers/lvalues in ? : (linux kernel net/core/dev.c) +- win32: add __stdcall, check GetModuleHandle for dlls. -- 2.11.4.GIT