Back to wiki
Random standard-conforming known things that should be added to pcc: - Currently all known usable C99 stuff is added. Internal cleanups: - Cleanup prototype parsing and checking. - Ensure that the instruction matcher do not assume that it will reclaim a register if a direct match of something else than a register is done as a leg node. This may require additions to visit and su fields in table and node. - Teach the register allocator how to allocate multiple registers at once. This is not the same as register pairs; pairing is handled as a separate register class. This is used for example when a type is not supported by the underlying hardware, like long long on i386 or long on pdp11. - Support structs and unions in TEMPs, so that their members can be optimized. - Do stack space allocations using graph coloring to minimize stack usage on small-memory machines. - Use a special STACK TEMP node when registers are spilled in pass2. Allow for target to decide where a spilled node should end up. - Add a clever c2 pass to handle instruction interleaving. - Make parameter passing common code. - Let register allocator coalesce registers with multiple classes if they carry the same type. - Make the Sethi-Ullman computation clever enough to understand paired registers, like long long on i386. This will help on targets with few registers. GCC compatibility: - PCC has GCC compatibility enabled by default, but there are a number of language constructs that may not be fully implemented, like attributes. - There's similar work needed in the C preprocessor area. #pragmas are the first thing that comes to mind. Portability: - The i386 and amd64 are now stable enough to build most C programs, including PCC itself. More work is needed to make it available in other platforms, especially MIPS and ARM. - Testing PCC in more recent versions of supported operating systems, especially the BSD flavors.
Powered by rcshistory.cgi 0.3