LLVM Cookbook(Packt,2015)
- *重新理解 value --> use(每个IR就是一个value,SSA)
- builder.GetInsertBlock(); //Codegen: 先有cfg框架,TDD?
- if-then-else及for循环:需用PHI合并?(重点)
- 优化步(IR层)
- $ clang -S -O0 -emit-llvm test.cpp
- $ opt -O1 -S test.ll (注意:中间分析结果可以共享,如以文件数据库的形式,或VS里的.pdb)
- 3层概念:Function::iterator --> BasicBlock::iterator --> i->getOpcodeName()
- 别名分析(AA)
- AliasAnalysis:导出AliasResult、ModRefResult(*)
- alias(a,b):--> MustAlias(肯定是)、PartialAlias、MayAlias、NoAlias
- getAdjustedAnalys