| * Rewrite the llvm parser/lexer in http://www.antlr.org when time permits. |
| They actually do C++. Imagine that. |
| * Fix DCE to elminate br <c>, %L1, %L1 so that it can optimize the main of |
| fib.ll better. Currently I have to do this to get best results: |
| as < fib.ll | opt -inline -sccp -dce -sccp -dce |dis |
| * fix the constprop br <x> <dst1> <dst1> case. Must handle PHI nodes correctly |
| * Fix DCE to work better, so that SCCP can show it's true value. |
| * Implement ADCE |
| * Think about whether edge split SSA form would be useful to do. |
| * Inlining should attempt to give block names the same name in the inlined |
| method (using SymbolTable::getUniqueName) |
| * The dropAllReferences code can be a noop when NDEBUG!!! |
| * Finish xvcg output |
| * pred/succ iterators on basic blocks don't handle switch statements correctly |
| * Provide a pass that eliminates critical edges from the CFG |
| * I need to provide an option to the bytecode loader to ignore memory |
| dependance edges. Instead, the VM would just treat memory operations |
| (load, store, getfield, putfield, call) as pinned instructions. |
| * Need a way to attach bytecode block info at various levels of asm code. |
| * Recognize and save comments in assembly and bytecode format |
| * Encode line number table in bytecode (like #line), optional table |
| |
| * Encode negative relative offsets in the bytecode file |
| |
| * Implement switch to switch on a constant pool array of type: |
| [{ label, int }] or [label] (lookup vs index switch) |
| * Apparently bison has a %pure_parser option. Maybe useful for Assembly/Parser |
| |
| * Implement a header file that can read either assembly or bytecode, implement |
| a writer that can output either based on what is read with this reader.. |
| * Implement the following derived types: |
| * "packed format", like this: [4 x sbyte]: Packed SIMD datatype |
| * Maybe 'tailcall' also? |
| * Include a method level bytecode block that defines a mapping between values |
| and registers that defines a minimally register allocated code. This can |
| make me finally address how to encode extensions in assembly. |
| * Bytecode reader should use extensions that may or may not be linked into the |
| application to read blocks. Thus an easy way to ignore symbol table info |
| would be to not link in that reader into the app. |