|
LLVM
3.7.0
|
#include "llvm/Transforms/Scalar/SimplifyCFG.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/AssumptionCache.h"#include "llvm/Analysis/TargetTransformInfo.h"#include "llvm/IR/Attributes.h"#include "llvm/IR/CFG.h"#include "llvm/IR/Constants.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/IntrinsicInst.h"#include "llvm/IR/Module.h"#include "llvm/Pass.h"#include "llvm/Support/CommandLine.h"#include "llvm/Transforms/Utils/Local.h"#include "llvm/Transforms/Scalar.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "simplifycfg" |
Functions | |
| STATISTIC (NumSimpl,"Number of blocks simplified") | |
| static bool | mergeEmptyReturnBlocks (Function &F) |
| If we have more than one empty (other than phi node) return blocks, merge them together to promote recursive block merging. More... | |
| static bool | iterativelySimplifyCFG (Function &F, const TargetTransformInfo &TTI, AssumptionCache *AC, unsigned BonusInstThreshold) |
| Call SimplifyCFG on all the blocks in the function, iterating until no more changes are made. More... | |
| static bool | simplifyFunctionCFG (Function &F, const TargetTransformInfo &TTI, AssumptionCache *AC, int BonusInstThreshold) |
| INITIALIZE_PASS_BEGIN (CFGSimplifyPass,"simplifycfg","Simplify the CFG", false, false) INITIALIZE_PASS_END(CFGSimplifyPass | |
Variables | |
| static cl::opt< unsigned > | UserBonusInstThreshold ("bonus-inst-threshold", cl::Hidden, cl::init(1), cl::desc("Control the number of bonus instructions (default = 1)")) |
| simplifycfg | |
| Simplify the | CFG |
| Simplify the | false |
| #define DEBUG_TYPE "simplifycfg" |
Definition at line 43 of file SimplifyCFGPass.cpp.
|
static |
Call SimplifyCFG on all the blocks in the function, iterating until no more changes are made.
Definition at line 129 of file SimplifyCFGPass.cpp.
References llvm::Function::begin(), llvm::Function::end(), and llvm::SimplifyCFG().
Referenced by simplifyFunctionCFG().
If we have more than one empty (other than phi node) return blocks, merge them together to promote recursive block merging.
Definition at line 53 of file SimplifyCFGPass.cpp.
References llvm::PHINode::addIncoming(), llvm::BasicBlock::begin(), llvm::Function::begin(), llvm::PHINode::Create(), llvm::BranchInst::Create(), llvm::dyn_cast(), llvm::Function::end(), llvm::Instruction::eraseFromParent(), llvm::BasicBlock::eraseFromParent(), llvm::BasicBlock::front(), llvm::User::getNumOperands(), llvm::User::getOperand(), llvm::BasicBlock::getTerminator(), llvm::Value::getType(), I, llvm::pred_begin(), llvm::pred_end(), llvm::Value::replaceAllUsesWith(), llvm::MipsISD::Ret, and llvm::User::setOperand().
Referenced by simplifyFunctionCFG().
|
static |
Definition at line 149 of file SimplifyCFGPass.cpp.
References iterativelySimplifyCFG(), mergeEmptyReturnBlocks(), and llvm::removeUnreachableBlocks().
Referenced by llvm::SimplifyCFGPass::run().
| STATISTIC | ( | NumSimpl | , |
| "Number of blocks simplified" | |||
| ) |
| Simplify the CFG |
Definition at line 229 of file SimplifyCFGPass.cpp.
| Simplify the false |
Definition at line 229 of file SimplifyCFGPass.cpp.
| simplifycfg |
Definition at line 229 of file SimplifyCFGPass.cpp.
|
static |
1.8.6