LLVM API Documentation
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/CFG.h"
#include "llvm/Analysis/Dominators.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/MemoryDependenceAnalysis.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Type.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/ValueHandle.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Utils/Local.h"
#include <algorithm>
Go to the source code of this file.
Functions | |
static void | UpdateAnalysisInformation (BasicBlock *OldBB, BasicBlock *NewBB, ArrayRef< BasicBlock * > Preds, Pass *P, bool &HasLoopExit) |
static void | UpdatePHINodes (BasicBlock *OrigBB, BasicBlock *NewBB, ArrayRef< BasicBlock * > Preds, BranchInst *BI, Pass *P, bool HasLoopExit) |
|
static |
UpdateAnalysisInformation - Update DominatorTree, LoopInfo, and LCCSA analysis information.
Definition at line 303 of file BasicBlockUtils.cpp.
References llvm::LoopBase< N, M >::addBasicBlockToLoop(), llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), llvm::Pass::getAnalysisIfAvailable(), llvm::LoopInfo::getBase(), llvm::LoopBase< N, M >::getLoopDepth(), llvm::LoopInfo::getLoopFor(), llvm::LCSSAID, LI, llvm::Pass::mustPreserveAnalysisID(), llvm::A64CC::PL, and llvm::DominatorTree::splitBlock().
Referenced by llvm::SplitBlockPredecessors(), and llvm::SplitLandingPadPredecessors().
|
static |
UpdatePHINodes - Update the PHI nodes in OrigBB to include the values coming from NewBB. This also updates AliasAnalysis, if available.
Definition at line 379 of file BasicBlockUtils.cpp.
References llvm::PHINode::addIncoming(), llvm::BasicBlock::begin(), llvm::AliasAnalysis::copyValue(), llvm::PHINode::Create(), llvm::Pass::getAnalysisIfAvailable(), llvm::PHINode::getBasicBlockIndex(), llvm::PHINode::getIncomingValueForBlock(), llvm::Value::getName(), llvm::Value::getType(), I, llvm::PHINode::removeIncomingValue(), and llvm::ArrayRef< T >::size().
Referenced by llvm::SplitBlockPredecessors(), and llvm::SplitLandingPadPredecessors().