1 * grep '[A-Za-z][A-Za-z]*\*)' `./getsrcs.sh ` | & less
4 * Need to implement getelementptr, load, and store for indirection through
5 arrays and multidim arrays
6 * Indirect calls should use the icall instruction
7 * Rewrite the llvm parser/lexer in http://www.antlr.org when time permits.
8 They actually do C++. Imagine that.
9 * Need to implement constant propogation of cast instructions!
10 * Fix DCE to elminate br <c>, %L1, %L1 so that it can optimize the main of
11 fib.ll better. Currently I have to do this to get best results:
12 as < fib.ll | opt -inline -sccp -dce -sccp -dce |dis
13 * fix the constprop br <x> <dst1> <dst1> case. Must handle PHI nodes correctly
14 * Fix DCE to work better, so that SCCP can show it's true value.
16 * Fix the const pool printer to print out constants in some sort of "sorted"
17 order. Then enable TestOptimizer.sh to diff -sccp output. Currently it
18 doesn't work because the diff fails because of ordering of the constant
20 * Should provide "castTerminator, castPHI, etc" functions in Instruction, and
21 similar functions in other classes, that effectively do dynamic casts. This
22 would allow code like this:
23 if (I->isTerminator()) {
24 TerminatorInst *TI = (TerminatorInst*)I;
28 if (TerminatorInst *TI = I->castTerminatorInst()) {
31 * Think about whether edge split SSA form would be useful to do.
32 * Inlining should attempt to give block names the same name in the inlined
33 method (using SymbolTable::getUniqueName)
34 * The dropAllReferences code can be a noop when NDEBUG!!!
36 * pred/succ iterators on basic blocks don't handle switch statements correctly
37 * Provide a pass that eliminates critical edges from the CFG
38 * I need to provide an option to the bytecode loader to ignore memory
39 dependance edges. Instead, the VM would just treat memory operations
40 (load, store, getfield, putfield, call) as pinned instructions.
41 * Need a way to attach bytecode block info at various levels of asm code.
42 * Recognize and save comments in assembly and bytecode format
43 * Encode line number table in bytecode (like #line), optional table
45 * Encode negative relative offsets in the bytecode file
47 * Implement switch to switch on a constant pool array of type:
48 [{ label, int }] or [label] (lookup vs index switch)
49 * Apparently bison has a %pure_parser option. Maybe useful for Assembly/Parser
51 * Implement a header file that can read either assembly or bytecode, implement
52 a writer that can output either based on what is read with this reader..
53 * Implement the following derived types:
55 * "packed format", like this: [4 x sbyte]: Packed SIMD datatype
56 * Maybe 'tailcall' also?
57 * Include a method level bytecode block that defines a mapping between values
58 and registers that defines a minimally register allocated code. This can
59 make me finally address how to encode extensions in assembly.
60 * Bytecode reader should use extensions that may or may not be linked into the
61 application to read blocks. Thus an easy way to ignore symbol table info
62 would be to not link in that reader into the app.