http://163.25.101.87/~yen3/wiki/doku.php?id=llvm:llvm_notes
- llvm commands
- Convert C/C++ code to llvm IR
llvm-g++ -emit-llvm -S test.cpp -o test.ll
- Convert llvm IR to llvm bitcode
llvm-as test.ll -o test.bc
- Print Control Flow Graph
opt -dot-cfg test.bc
- Print Dominator Tree Graph
opt -dot-dom test.bc
- Conver C++ code to C code
llvm-g++ -emit-llvm test.cpp -o program.bc -c llc -march=c program.bc -o program.c
- analysis(ADT analysis, rule check, redundant check, frame remap)
- Alias analysis
- alias memory/register (immutable/mutable) label
- check different two frames when the input arg is depended from another?
- CFG analysis
- domain tree, basic block(entry, exist, loop, if/else), operator, reg/mem location
- loop (vector)
- for(i=0;i<10 a1="" a2="" b1="" b2="" c1="" c2="" i="" li="" nbsp=""> 10>
- vector(c1,c2) <= {a1,b1} {a2,b2}
- register analysis
- virtual register to physical register(arm r0~r10) , rega, regb, regc
- memory analysis
- load/store analysis(store is depended on load?)
- parallel load/store with different address block in the same BB
- dependent analysis
- (depend memory? load/store check)
- a[0] = 1; # load from constant input
- b = a[0]; # b is depend from previous assignment, store to output
- split iterator
- for(i=0; i<10 ...="" a="" i="" li="" nbsp="" org=""> 10>
- fcheck each unit memory block dependence
沒有留言:
張貼留言