LLVM API Documentation
#include "llvm/Transforms/Scalar.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/AssumptionTracker.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/Transforms/Utils/Local.h"
Go to the source code of this file.
Defines | |
| #define | DEBUG_TYPE "simplifycfg" |
Functions | |
| STATISTIC (NumSimpl,"Number of blocks simplified") | |
| INITIALIZE_PASS_BEGIN (CFGSimplifyPass,"simplifycfg","Simplify the CFG", false, false) INITIALIZE_PASS_END(CFGSimplifyPass | |
| static bool | mergeEmptyReturnBlocks (Function &F) |
| static bool | iterativelySimplifyCFG (Function &F, const TargetTransformInfo &TTI, const DataLayout *DL, AssumptionTracker *AT) |
Variables | |
| simplifycfg | |
| Simplify the | CFG |
| Simplify the | false |
| #define DEBUG_TYPE "simplifycfg" |
Definition at line 41 of file SimplifyCFGPass.cpp.
| INITIALIZE_PASS_BEGIN | ( | CFGSimplifyPass | , |
| "simplifycfg" | , | ||
| "Simplify the CFG" | , | ||
| false | , | ||
| false | |||
| ) |
| static bool iterativelySimplifyCFG | ( | Function & | F, |
| const TargetTransformInfo & | TTI, | ||
| const DataLayout * | DL, | ||
| AssumptionTracker * | AT | ||
| ) | [static] |
iterativelySimplifyCFG - Call SimplifyCFG on all the blocks in the function, iterating until no more changes are made.
Definition at line 151 of file SimplifyCFGPass.cpp.
References llvm::Function::begin(), llvm::Function::end(), and llvm::SimplifyCFG().
| static bool mergeEmptyReturnBlocks | ( | Function & | F | ) | [static] |
mergeEmptyReturnBlocks - If we have more than one empty (other than phi node) return blocks, merge them together to promote recursive block merging.
Definition at line 75 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().
| STATISTIC | ( | NumSimpl | , |
| "Number of blocks simplified" | |||
| ) |
| Simplify the CFG |
Definition at line 65 of file SimplifyCFGPass.cpp.
| Simplify the false |
Definition at line 65 of file SimplifyCFGPass.cpp.
Definition at line 65 of file SimplifyCFGPass.cpp.