LLVM
8.0.1
|
#include "CoroInternal.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/CFG.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/circular_raw_ostream.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "coro-suspend-crossing" |
#define | DEBUG_TYPE "coro-frame" |
Typedefs | |
using | SpillInfo = SmallVector< Spill, 8 > |
Enumerations | |
enum | { SmallVectorThreshold = 32 } |
#define DEBUG_TYPE "coro-suspend-crossing" |
Definition at line 260 of file CoroFrame.cpp.
#define DEBUG_TYPE "coro-frame" |
Definition at line 260 of file CoroFrame.cpp.
using SpillInfo = SmallVector<Spill, 8> |
Definition at line 296 of file CoroFrame.cpp.
anonymous enum |
Enumerator | |
---|---|
SmallVectorThreshold |
Definition at line 39 of file CoroFrame.cpp.
|
static |
Definition at line 372 of file CoroFrame.cpp.
References C, llvm::coro::Shape::CoroSuspends, llvm::StructType::create(), llvm::FunctionType::get(), llvm::Function::getContext(), llvm::Module::getDataLayout(), llvm::PointerType::getElementType(), llvm::Type::getInt1Ty(), llvm::Type::getIntNTy(), llvm::Value::getName(), llvm::GlobalValue::getParent(), llvm::Type::getPointerTo(), llvm::AllocaInst::getType(), llvm::Value::getType(), llvm::Type::getVoidTy(), llvm::Log2_64_Ceil(), llvm::max(), Name, llvm::coro::Shape::PromiseAlloca, and llvm::StructType::setBody().
Referenced by llvm::coro::buildCoroutineFrame().
Definition at line 299 of file CoroFrame.cpp.
References llvm::alignTo(), Context, llvm::dbgs(), llvm::Value::dump(), E, llvm::ArrayType::get(), llvm::DataLayout::getABITypeAlignment(), llvm::Type::getInt8Ty(), llvm::DataLayout::getTypeAllocSize(), and llvm::max().
Referenced by llvm::RegBankSelect::EdgeInsertPoint::canMaterialize(), computeBranchTargetAndInversion(), DeleteTriviallyDeadInstructions(), DoInitialMatch(), llvm::FullDependence::isSplitable(), mayUsePostIncMode(), operator<<(), llvm::AppleAcceleratorTable::readAtoms(), and llvm::ScoreboardHazardRecognizer::Reset().
|
static |
Definition at line 644 of file CoroFrame.cpp.
References llvm::PHINode::addIncoming(), llvm::Instruction::clone(), llvm::BasicBlock::Create(), llvm::BranchInst::Create(), llvm::CleanupPadInst::Create(), llvm::CleanupReturnInst::Create(), llvm::BasicBlock::getContext(), llvm::BasicBlock::getFirstNonPHI(), llvm::BasicBlock::getParent(), llvm::BasicBlock::getTerminator(), llvm::Instruction::isEHPad(), llvm_unreachable, setUnwindEdgeTo(), llvm::SplitEdge(), llvm::MCID::Terminator, and updatePhiNodes().
Referenced by rewritePHIs().
|
static |
Definition at line 472 of file CoroFrame.cpp.
References llvm::coro::Shape::AllocaSpillBlock, assert(), llvm::coro::Shape::CoroBegin, E, llvm::SmallVectorImpl< T >::emplace_back(), llvm::coro::Shape::FrameTy, llvm::BasicBlock::front(), G, llvm::BasicBlock::getFirstInsertionPt(), llvm::Value::getName(), getParent(), llvm::Type::getPointerTo(), llvm::BasicBlock::getTerminator(), P, llvm::coro::Shape::PromiseAlloca, llvm::coro::Shape::PromiseField, llvm::report_fatal_error(), llvm::BasicBlock::splitBasicBlock(), splitBeforeCatchSwitch(), and llvm::SplitEdge().
Referenced by llvm::coro::buildCoroutineFrame().
|
static |
Definition at line 756 of file CoroFrame.cpp.
References I.
Referenced by llvm::coro::buildCoroutineFrame().
|
static |
Definition at line 749 of file CoroFrame.cpp.
Referenced by llvm::coro::buildCoroutineFrame().
|
static |
Definition at line 809 of file CoroFrame.cpp.
References llvm::dbgs(), llvm::DominatorTree::dominates(), E, llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getNextNode(), I, LLVM_DEBUG, llvm::SmallVectorTemplateBase< T >::push_back(), llvm::report_fatal_error(), and llvm::Value::users().
Referenced by llvm::coro::buildCoroutineFrame().
|
static |
Definition at line 763 of file CoroFrame.cpp.
References assert(), E, llvm::BasicBlock::getFirstInsertionPt(), llvm::Value::getName(), llvm::Instruction::insertBefore(), and llvm::Value::setName().
Referenced by llvm::coro::buildCoroutineFrame().
|
static |
Definition at line 675 of file CoroFrame.cpp.
References llvm::PHINode::addIncoming(), llvm::PHINode::Create(), llvm::dyn_cast(), ehAwareSplitEdge(), llvm::Instruction::eraseFromParent(), llvm::StringRef::front(), llvm::BasicBlock::front(), llvm::BasicBlock::getFirstNonPHI(), llvm::Value::getName(), llvm::Value::getType(), llvm::pred_begin(), llvm::pred_end(), llvm::Value::replaceAllUsesWith(), and llvm::Value::takeName().
Referenced by llvm::coro::buildCoroutineFrame(), and rewritePHIs().
|
static |
Definition at line 735 of file CoroFrame.cpp.
References llvm::SmallVectorTemplateBase< T >::push_back(), and rewritePHIs().
|
static |
Definition at line 604 of file CoroFrame.cpp.
References llvm_unreachable.
Referenced by ehAwareSplitEdge().
|
static |
Definition at line 861 of file CoroFrame.cpp.
References llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getNextNode(), Name, and splitBlockIfNotFirst().
Referenced by llvm::coro::buildCoroutineFrame().
|
static |
Definition at line 438 of file CoroFrame.cpp.
References llvm::CleanupPadInst::Create(), llvm::CleanupReturnInst::Create(), llvm::Instruction::eraseFromParent(), llvm::Instruction::getParent(), llvm::CatchSwitchInst::getParentPad(), llvm::BasicBlock::getTerminator(), and llvm::BasicBlock::splitBasicBlock().
Referenced by insertSpills().
|
static |
Definition at line 848 of file CoroFrame.cpp.
References llvm::Instruction::getParent(), I, and llvm::Value::setName().
Referenced by splitAround().
|
static |
Definition at line 617 of file CoroFrame.cpp.
References assert(), llvm::BasicBlock::begin(), llvm::PHINode::getBasicBlockIndex(), llvm::PHINode::getIncomingBlock(), I, and llvm::PHINode::setIncomingBlock().
Referenced by ehAwareSplitEdge().