diff options
| author | Uneven Prankster <unevenprankster@protonmail.com> | 2023-10-15 21:28:29 -0300 |
|---|---|---|
| committer | Uneven Prankster <unevenprankster@protonmail.com> | 2023-10-15 21:28:29 -0300 |
| commit | 1c0cc775732201f4c4d3ee0d6772be786b3b4aa1 (patch) | |
| tree | f5d692d046868261275c7430a624c3ea9ed75d3d /tinycc/TODO | |
| parent | a89f892640cf12f75c7ce18e6e88c70a8d3965ed (diff) | |
A lot has certainly happened!
Diffstat (limited to 'tinycc/TODO')
| -rw-r--r-- | tinycc/TODO | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/tinycc/TODO b/tinycc/TODO deleted file mode 100644 index 9a38b6b..0000000 --- a/tinycc/TODO +++ /dev/null @@ -1,106 +0,0 @@ -TODO list: - -Releases: -- release tcc on a regular basis (which interval? 3 months?) - -Bugs: - -- i386 fastcall is mostly wrong -- FPU st(0) is left unclean (kwisatz haderach). Incompatible with - optimized gcc/msc code -- see transparent union pb in /urs/include/sys/socket.h -- precise behaviour of typeof with arrays ? (__put_user macro) - but should suffice for most cases) -- handle '? x, y : z' in unsized variable initialization (',' is - considered incorrectly as separator in preparser) -- transform functions to function pointers in function parameters - (net/ipv4/ip_output.c) -- fix function pointer type display -- check section alignment in C -- fix invalid cast in comparison 'if (v == (int8_t)v)' -- finish varargs.h support (gcc 3.2 testsuite issue) -- fix static functions declared inside block -- fix multiple unions init -- make libtcc fully reentrant (except for the compilation stage itself). -- struct/union/enum definitions in nested scopes (see also Debian bug #770657) -- __STDC_IEC_559__: float f(void) { static float x = 0.0 / 0.0; return x; } -- memory may be leaked after errors (longjmp). - -Portability: - -- it is assumed that int is 32-bit and sizeof(int) == 4 -- int is used when host or target size_t would make more sense -- TCC handles target floating-point (fp) values using the host's fp - arithmetic, which is simple and fast but may lead to exceptions - and inaccuracy and wrong representations when cross-compiling - -Linking: - -- static linking (-static) does sort of work - works with musl libc - glibc requires libc.so even when statically linked (very bad, but not - up to tcc) - -Bound checking: - -- fix bound exit on RedHat 7.3 -- setjmp is not supported properly in bound checking. -- fix bound check code with '&' on local variables (currently done - only for local arrays). -- bound checking and float/long long/struct copy code. bound - checking and symbol + offset optimization - -Missing features: - -- disable-asm and disable-bcheck options -- __builtin_expect() -- atexit (Nigel Horne) -- C99: add complex types (gcc 3.2 testsuite issue) -- postfix compound literals (see 20010124-1.c) -- interactive mode / integrated debugger - -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: - -- 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 generator and improve codegen for RISC (need - to suppress VT_LOCAL and use a base register instead). -- fix preprocessor symbol redefinition -- add portable byte code generator and interpreter for other - unsupported architectures. -- C++: variable declaration in for, minimal 'class' support. -- win32: __intxx. use resolve for bchecked malloc et al. - check exception code (exception filter func). -- handle void (__attribute__() *ptr)() -- VLAs are implemented in a way that is not compatible with signals: - http://lists.gnu.org/archive/html/tinycc-devel/2015-11/msg00018.html - -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. -- macro substitution with nested definitions (ShangHongzhang) -- with "-run" and libtcc, a PLT is now built. -- '-E' option was improved -- packed attribute is now supported -- ARM and ARM64 code generators have been added. |
