|
LLVM
3.7.0
|
#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, DominatorTree *DT, LoopInfo *LI, bool PreserveLCSSA, bool &HasLoopExit) |
| UpdateAnalysisInformation - Update DominatorTree, LoopInfo, and LCCSA analysis information. More... | |
| static void | UpdatePHINodes (BasicBlock *OrigBB, BasicBlock *NewBB, ArrayRef< BasicBlock * > Preds, BranchInst *BI, AliasAnalysis *AA, bool HasLoopExit) |
| UpdatePHINodes - Update the PHI nodes in OrigBB to include the values coming from NewBB. More... | |
|
static |
UpdateAnalysisInformation - Update DominatorTree, LoopInfo, and LCCSA analysis information.
Definition at line 317 of file BasicBlockUtils.cpp.
References llvm::LoopBase< N, M >::addBasicBlockToLoop(), llvm::ArrayRef< T >::begin(), llvm::LoopBase< N, M >::contains(), llvm::ArrayRef< T >::end(), llvm::LoopBase< N, M >::getLoopDepth(), llvm::LoopInfoBase< N, M >::getLoopFor(), llvm::LoopBase< N, M >::moveToHeader(), llvm::AArch64CC::PL, and llvm::DominatorTreeBase< N >::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 394 of file BasicBlockUtils.cpp.
References llvm::PHINode::addIncoming(), llvm::ArrayRef< T >::begin(), llvm::BasicBlock::begin(), llvm::PHINode::Create(), llvm::ArrayRef< T >::end(), 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().
1.8.6