TODO list: - '-b' bug. - atexit (Nigel Horne) - see -lxxx bug (Michael Charity). - empty 'default:' in switch. - fix asm without input/output (no % preprocessing) - handle inline functions as macros. - 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 reversed function arguments or unsized variable initialization (',' is considered incorrectly as separator in preparser) : change func argument code generator ? - function pointers/lvalues in ? : (linux kernel net/core/dev.c) - add A x86 asm constraint (linux asm-i386/div64.h) - 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 - fix static link 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 - look at patches from Scott Lafferty - look at bugs from Jason Petrasko. - support link once trick (gcc 3.2 / glibc compilation issue) - finish varargs.h support (gcc 3.2 testsuite issue) - add alloca() - 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 - test includes in libtcc_test. - look at GCC 3.2 compatibility problems. - add option for auto run - 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 Optimizations: - suppress specific anonymous symbol handling - more parse optimizations (=even faster compilation) - memory alloc optimizations (=even faster compilation) Not critical: - C99: fix multiple compound literals inits in blocks (ISOC99 normative example - only relevant when using gotos! -> must add boolean variable to tell if compound literal was already initialized). - add PowerPC or ARM code generator and improve codegen for RISC (need to suppress VT_LOCAL and use a base register instead). - interactive mode / integrated debugger - fix preprocessor symbol redefinition - better constant opt (&&, ||, ?:) - 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). - handle void (__attribute__() *ptr)()