LLVM API Documentation
#include "llvm/Transforms/Scalar.h"#include "llvm/Constant.h"#include "llvm/Function.h"#include "llvm/Instructions.h"#include "llvm/IntrinsicInst.h"#include "llvm/Pass.h"#include "llvm/Type.h"#include "llvm/Support/CFG.h"#include "llvm/Transforms/Utils/Local.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Debug.h"#include "llvm/ADT/Statistic.h"#include <iostream>Include dependency graph for TailDuplication.cpp:

Go to the source code of this file.
Functions | |
| FunctionPass * | llvm::createTailDuplicationPass () |
| static BasicBlock * | FindObviousSharedDomOf (BasicBlock *SrcBlock, BasicBlock *DstBlock) |
Variables | |
| cl::opt< unsigned > | Threshold ("taildup-threshold", cl::desc("Max block size to tail duplicate"), cl::init(6), cl::Hidden) |
| Statistic | NumEliminated ("tailduplicate","Number of unconditional branches eliminated") |
| Statistic | NumPHINodes ("tailduplicate","Number of phi nodes inserted") |
| RegisterOpt< TailDup > | X ("tailduplicate","Tail Duplication") |
| static BasicBlock* FindObviousSharedDomOf | ( | BasicBlock * | SrcBlock, | |
| BasicBlock * | DstBlock | |||
| ) | [static] |
FindObviousSharedDomOf - We know there is a branch from SrcBlock to DestBlock, and that SrcBlock is not the only predecessor of DstBlock. If we can find a predecessor of SrcBlock that is a dominator of both SrcBlock and DstBlock, return it.
Definition at line 138 of file TailDuplication.cpp.
References PI, llvm::pred_begin(), and llvm::pred_end().
Statistic NumEliminated("tailduplicate","Number of unconditional branches eliminated") [static] |
Statistic NumPHINodes("tailduplicate","Number of phi nodes inserted") [static] |
cl::opt<unsigned> Threshold("taildup-threshold", cl::desc("Max block size to tail duplicate"), cl::init(6), cl::Hidden) [static] |
RegisterOpt<TailDup> X("tailduplicate","Tail Duplication") [static] |