LLVM 20.0.0git
|
#include "llvm/Transforms/Scalar/PartiallyInlineLibCalls.h"
#include "llvm/Analysis/DomTreeUpdater.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/DebugCounter.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include <optional>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "partially-inline-libcalls" |
Functions | |
DEBUG_COUNTER (PILCounter, "partially-inline-libcalls-transform", "Controls transformations in partially-inline-libcalls") | |
static bool | optimizeSQRT (CallInst *Call, Function *CalledFunc, BasicBlock &CurrBB, Function::iterator &BB, const TargetTransformInfo *TTI, DomTreeUpdater *DTU) |
static bool | runPartiallyInlineLibCalls (Function &F, TargetLibraryInfo *TLI, const TargetTransformInfo *TTI, DominatorTree *DT) |
INITIALIZE_PASS_BEGIN (PartiallyInlineLibCallsLegacyPass, "partially-inline-libcalls", "Partially inline calls to library functions", false, false) INITIALIZE_PASS_END(PartiallyInlineLibCallsLegacyPass | |
Variables | |
partially inline | libcalls |
partially inline Partially calls to library | functions |
partially inline Partially calls to library | false |
#define DEBUG_TYPE "partially-inline-libcalls" |
Definition at line 29 of file PartiallyInlineLibCalls.cpp.
DEBUG_COUNTER | ( | PILCounter | , |
"partially-inline-libcalls-transform" | , | ||
"Controls transformations in partially-inline-libcalls" | |||
) |
INITIALIZE_PASS_BEGIN | ( | PartiallyInlineLibCallsLegacyPass | , |
"partially-inline-libcalls" | , | ||
"Partially inline calls to library functions" | , | ||
false | , | ||
false | |||
) |
|
static |
Definition at line 34 of file PartiallyInlineLibCalls.cpp.
References llvm::BasicBlock::begin(), llvm::IRBuilderBase::CreateFCmpOGE(), llvm::IRBuilderBase::CreateFCmpORD(), llvm::IRBuilderBase::CreatePHI(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Value::getName(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), llvm::Instruction::getSuccessor(), llvm::BasicBlock::getTerminator(), llvm::IRBuilderBase::getTrue(), llvm::IRBuilderBase::Insert(), llvm::TargetTransformInfo::isFCmpOrdCheaperThanFCmpZero(), llvm::IRBuilderBase::SetInsertPoint(), llvm::Value::setName(), llvm::DebugCounter::shouldExecute(), and llvm::SplitBlockAndInsertIfThen().
Referenced by runPartiallyInlineLibCalls().
|
static |
Definition at line 104 of file PartiallyInlineLibCalls.cpp.
References F, llvm::TargetLibraryInfo::getLibFunc(), llvm::TargetLibraryInfo::has(), llvm::GlobalValue::hasLocalLinkage(), llvm::TargetTransformInfo::haveFastSqrt(), II, and optimizeSQRT().
Referenced by llvm::PartiallyInlineLibCallsPass::run().
Definition at line 213 of file PartiallyInlineLibCalls.cpp.
Definition at line 213 of file PartiallyInlineLibCalls.cpp.
partially inline libcalls |
Definition at line 212 of file PartiallyInlineLibCalls.cpp.