TODO list: - add separate symbol/offset handling (= fix some constant initialisation bugs) - add 'CType' structure to optimize type handling (= compile even faster) - suppress unneeded hash table for Symbols (= compile even faster) - - better local variables handling (needed for other targets) - setjmp is not supported properly in bound checking. - To check: bound checking and float/long long/struct copy code - To fix: 'sizeof' generate code if too complex expression is given. - fix bound check code with '&' on local variables (currently done only for local arrays). - free all allocated data and use longjmp for errors (useful for libtcc use) Not critical: - C99: add variable size arrays - C99: add complex types - 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 - 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). - 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)()