-* Need to implement constant propogation of cast instructions!
-* 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
-* Fix the const pool printer to print out constants in some sort of "sorted"
- order. Then enable TestOptimizer.sh to diff -sccp output. Currently it
- doesn't work because the diff fails because of ordering of the constant
- pool. :(
-* Should provide "castTerminator, castPHI, etc" functions in Instruction, and
- similar functions in other classes, that effectively do dynamic casts. This
- would allow code like this:
- if (I->isTerminator()) {
- TerminatorInst *TI = (TerminatorInst*)I;
- ...
- }
- to be written as:
- if (TerminatorInst *TI = I->castTerminatorInst()) {
- ...
- }
-* 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.