LLVM API Documentation
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/CFG.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/MemoryDependenceAnalysis.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/Support/ErrorHandling.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 void UpdateAnalysisInformation | ( | BasicBlock * | OldBB, |
BasicBlock * | NewBB, | ||
ArrayRef< BasicBlock * > | Preds, | ||
Pass * | P, | ||
bool & | HasLoopExit | ||
) | [static] |
UpdateAnalysisInformation - Update DominatorTree, LoopInfo, and LCCSA analysis information.
Definition at line 307 of file BasicBlockUtils.cpp.
References llvm::LoopBase< BlockT, LoopT >::addBasicBlockToLoop(), llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), llvm::Pass::getAnalysisIfAvailable(), llvm::LoopInfo::getBase(), llvm::LoopBase< BlockT, LoopT >::getLoopDepth(), llvm::LoopInfo::getLoopFor(), llvm::LCSSAID, LI, llvm::Pass::mustPreserveAnalysisID(), and llvm::AArch64CC::PL.
Referenced by llvm::SplitBlockPredecessors(), and llvm::SplitLandingPadPredecessors().
static void UpdatePHINodes | ( | BasicBlock * | OrigBB, |
BasicBlock * | NewBB, | ||
ArrayRef< BasicBlock * > | Preds, | ||
BranchInst * | BI, | ||
Pass * | P, | ||
bool | HasLoopExit | ||
) | [static] |
UpdatePHINodes - Update the PHI nodes in OrigBB to include the values coming from NewBB. This also updates AliasAnalysis, if available.
Definition at line 383 of file BasicBlockUtils.cpp.
References llvm::PHINode::addIncoming(), llvm::ArrayRef< T >::begin(), llvm::BasicBlock::begin(), llvm::AliasAnalysis::copyValue(), llvm::PHINode::Create(), llvm::ArrayRef< T >::end(), llvm::Pass::getAnalysisIfAvailable(), llvm::PHINode::getIncomingBlock(), llvm::PHINode::getIncomingValue(), llvm::PHINode::getIncomingValueForBlock(), llvm::Value::getName(), llvm::PHINode::getNumIncomingValues(), llvm::Value::getType(), I, llvm::PHINode::removeIncomingValue(), and llvm::ArrayRef< T >::size().
Referenced by llvm::SplitBlockPredecessors(), and llvm::SplitLandingPadPredecessors().