LLVM API Documentation
#include "llvm/Transforms/Scalar.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/CaptureTracking.h"
#include "llvm/Analysis/InlineCost.h"
#include "llvm/Analysis/InstructionSimplify.h"
#include "llvm/Analysis/Loads.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
#include "llvm/Support/CFG.h"
#include "llvm/Support/CallSite.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ValueHandle.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/Local.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "tailcallelim" |
Functions | |
STATISTIC (NumEliminated,"Number of tail calls removed") | |
STATISTIC (NumRetDuped,"Number of return duplicated") | |
STATISTIC (NumAccumAdded,"Number of accumulators introduced") | |
INITIALIZE_PASS_BEGIN (TailCallElim,"tailcallelim","Tail Call Elimination", false, false) INITIALIZE_PASS_END(TailCallElim | |
static bool | CanTRE (AllocaInst *AI) |
static bool | isDynamicConstant (Value *V, CallInst *CI, ReturnInst *RI) |
static Value * | getCommonReturnValue (ReturnInst *IgnoreRI, CallInst *CI) |
static Instruction * | FirstNonDbg (BasicBlock::iterator I) |
Variables | |
tailcallelim | |
Tail Call | Elimination |
Tail Call | false |
#define DEBUG_TYPE "tailcallelim" |
Definition at line 53 of file TailRecursionElimination.cpp.
|
static |
CanTRE - Scan the specified basic block for alloca instructions. If it contains any that are variable-sized or not in the entry block, returns false.
Definition at line 137 of file TailRecursionElimination.cpp.
References llvm::AllocaInst::getArraySize(), llvm::Function::getEntryBlock(), llvm::Instruction::getParent(), and llvm::BasicBlock::getParent().
|
static |
Definition at line 389 of file TailRecursionElimination.cpp.
References I.
|
static |
Definition at line 341 of file TailRecursionElimination.cpp.
References llvm::Function::begin(), llvm::dyn_cast(), llvm::Function::end(), llvm::User::getOperand(), llvm::Instruction::getParent(), llvm::BasicBlock::getParent(), and isDynamicConstant().
INITIALIZE_PASS_BEGIN | ( | TailCallElim | , |
"tailcallelim" | , | ||
"Tail Call Elimination" | , | ||
false | , | ||
false | |||
) |
|
static |
Definition at line 306 of file TailRecursionElimination.cpp.
References llvm::Function::arg_begin(), llvm::CallInst::getArgOperand(), llvm::Instruction::getParent(), llvm::BasicBlock::getParent(), and llvm::BasicBlock::getUniquePredecessor().
Referenced by getCommonReturnValue().
STATISTIC | ( | NumEliminated | , |
"Number of tail calls removed" | |||
) |
STATISTIC | ( | NumRetDuped | , |
"Number of return duplicated" | |||
) |
STATISTIC | ( | NumAccumAdded | , |
"Number of accumulators introduced" | |||
) |
Tail Call Elimination |
Definition at line 122 of file TailRecursionElimination.cpp.
Tail Call false |
Definition at line 122 of file TailRecursionElimination.cpp.
tailcallelim |
Definition at line 122 of file TailRecursionElimination.cpp.