|
LLVM
4.0.0
|
#include "CoroInternal.h"#include "llvm/Analysis/AliasAnalysis.h"#include "llvm/Analysis/InstructionSimplify.h"#include "llvm/IR/InstIterator.h"#include "llvm/Pass.h"#include "llvm/Support/ErrorHandling.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "coro-elide" |
Functions | |
| static void | replaceWithConstant (Constant *Value, SmallVectorImpl< CoroSubFnInst * > &Users) |
| static bool | operandReferences (CallInst *CI, AllocaInst *Frame, AAResults &AA) |
| static void | removeTailCallAttribute (AllocaInst *Frame, AAResults &AA) |
| static Type * | getFrameType (Function *Resume) |
| static Instruction * | getFirstNonAllocaInTheEntryBlock (Function *F) |
| static bool | replaceDevirtTrigger (Function &F) |
| INITIALIZE_PASS_BEGIN (CoroElide,"coro-elide","Coroutine frame allocation elision and indirect calls replacement", false, false) INITIALIZE_PASS_END(CoroElide | |
Variables | |
| coro | elide |
| coro Coroutine frame allocation elision and indirect calls | replacement |
| coro Coroutine frame allocation elision and indirect calls | false |
| #define DEBUG_TYPE "coro-elide" |
Definition at line 23 of file CoroElide.cpp.
|
static |
Definition at line 100 of file CoroElide.cpp.
References llvm::Function::getEntryBlock(), I, and llvm_unreachable.
Definition at line 94 of file CoroElide.cpp.
References llvm::Function::getArgumentList().
| INITIALIZE_PASS_BEGIN | ( | CoroElide | , |
| "coro-elide" | , | ||
| "Coroutine frame allocation elision and indirect calls replacement" | , | ||
| false | , | ||
| false | |||
| ) |
|
static |
Definition at line 68 of file CoroElide.cpp.
References llvm::AAResults::alias(), llvm::NoAlias, and llvm::User::operand_values().
Referenced by removeTailCallAttribute().
|
static |
Definition at line 78 of file CoroElide.cpp.
References llvm::Call, F, llvm::Instruction::getFunction(), I, llvm::instructions(), operandReferences(), and llvm::report_fatal_error().
Definition at line 235 of file CoroElide.cpp.
References assert(), CORO_DEVIRT_TRIGGER_FN, llvm::SmallVectorBase::empty(), llvm::Module::getFunction(), llvm::GlobalValue::getParent(), I, llvm::instructions(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), replaceWithConstant(), and llvm::CoroSubFnInst::RestartTrigger.
|
static |
Definition at line 45 of file CoroElide.cpp.
References assert(), llvm::SmallVectorBase::empty(), llvm::SmallVectorTemplateCommon< T >::front(), llvm::ConstantExpr::getBitCast(), llvm::Value::getType(), I, llvm::Type::isPointerTy(), and llvm::replaceAndRecursivelySimplify().
Referenced by replaceDevirtTrigger().
| coro elide |
Definition at line 313 of file CoroElide.cpp.
| coro Coroutine frame allocation elision and indirect calls false |
Definition at line 313 of file CoroElide.cpp.
| coro Coroutine frame allocation elision and indirect calls replacement |
Definition at line 313 of file CoroElide.cpp.
1.8.6