class LibCallSimplifier
Declaration
class LibCallSimplifier { /* full declaration omitted */ };
Description
LibCallSimplifier - This class implements a collection of optimizations that replace well formed calls to library functions with a more optimal form. For example, replacing 'printf("Hello!")' with 'puts("Hello!")'.
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:100
Member Variables
- private llvm::FortifiedLibCallSimplifier FortifiedSimplifier
- private const llvm::DataLayout& DL
- private const llvm::TargetLibraryInfo* TLI
- private llvm::OptimizationRemarkEmitter& ORE
- private llvm::BlockFrequencyInfo* BFI
- private llvm::ProfileSummaryInfo* PSI
- private bool UnsafeFPShrink = false
- private function_ref<void(llvm::Instruction*, llvm::Value*)> Replacer
- private function_ref<void(llvm::Instruction*)> Eraser
Method Overview
- public LibCallSimplifier(const llvm::DataLayout & DL, const llvm::TargetLibraryInfo * TLI, llvm::OptimizationRemarkEmitter & ORE, llvm::BlockFrequencyInfo * BFI, llvm::ProfileSummaryInfo * PSI, function_ref<void (llvm::Instruction *, llvm::Value *)> Replacer = &replaceAllUsesWithDefault, function_ref<void (llvm::Instruction *)> Eraser = &eraseFromParentDefault)
- private void classifyArgUse(llvm::Value * Val, llvm::Function * F, bool IsFloat, SmallVectorImpl<llvm::CallInst *> & SinCalls, SmallVectorImpl<llvm::CallInst *> & CosCalls, SmallVectorImpl<llvm::CallInst *> & SinCosCalls)
- private llvm::Value * emitStrLenMemCpy(llvm::Value * Src, llvm::Value * Dst, uint64_t Len, llvm::IRBuilderBase & B)
- private void eraseFromParent(llvm::Instruction * I)
- private static void eraseFromParentDefault(llvm::Instruction * I)
- private bool hasFloatVersion(const llvm::Module * M, llvm::StringRef FuncName)
- private llvm::Value * optimizeAbs(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeAtoi(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeBCmp(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeBCopy(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeCAbs(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- public llvm::Value * optimizeCall(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeErrorReporting(llvm::CallInst * CI, llvm::IRBuilderBase & B, int StreamArg = -1)
- private llvm::Value * optimizeExp2(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeFFS(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeFMinFMax(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeFPrintF(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeFPrintFString(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeFPuts(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeFWrite(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeFloatingPointLibCall(llvm::CallInst * CI, llvm::LibFunc Func, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeFls(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeIsAscii(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeIsDigit(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeLog(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeMemCCpy(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeMemChr(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeMemCmp(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeMemCmpBCmpCommon(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeMemCpy(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeMemMove(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeMemPCpy(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeMemRChr(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeMemSet(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizePow(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizePrintF(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizePrintFString(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizePuts(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeRealloc(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeSPrintF(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeSPrintFString(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeSinCosPi(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeSnPrintF(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeSnPrintFString(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeSqrt(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStpCpy(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrCSpn(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrCat(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrChr(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrCmp(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrCpy(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrLen(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrNCat(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrNCmp(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrNCpy(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrNDup(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrNLen(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrPBrk(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrRChr(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrSpn(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrStr(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrTo(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeStrToInt(llvm::CallInst * CI, llvm::IRBuilderBase & B, bool AsSigned)
- private llvm::Value * optimizeStringLength(llvm::CallInst * CI, llvm::IRBuilderBase & B, unsigned int CharSize, llvm::Value * Bound = nullptr)
- private llvm::Value * optimizeStringMemoryLibCall(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeTan(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeToAscii(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private llvm::Value * optimizeWcslen(llvm::CallInst * CI, llvm::IRBuilderBase & B)
- private void replaceAllUsesWith(llvm::Instruction * I, llvm::Value * With)
- private static void replaceAllUsesWithDefault(llvm::Instruction * I, llvm::Value * With)
- private llvm::Value * replacePowWithExp(llvm::CallInst * Pow, llvm::IRBuilderBase & B)
- private llvm::Value * replacePowWithSqrt(llvm::CallInst * Pow, llvm::IRBuilderBase & B)
- private void substituteInParent(llvm::Instruction * I, llvm::Value * With)
Methods
¶LibCallSimplifier(
const llvm::DataLayout& DL,
const llvm::TargetLibraryInfo* TLI,
llvm::OptimizationRemarkEmitter& ORE,
llvm::BlockFrequencyInfo* BFI,
llvm::ProfileSummaryInfo* PSI,
function_ref<void(llvm::Instruction*,
llvm::Value*)> Replacer =
&replaceAllUsesWithDefault,
function_ref<void(llvm::Instruction*)>
Eraser = &eraseFromParentDefault)
LibCallSimplifier(
const llvm::DataLayout& DL,
const llvm::TargetLibraryInfo* TLI,
llvm::OptimizationRemarkEmitter& ORE,
llvm::BlockFrequencyInfo* BFI,
llvm::ProfileSummaryInfo* PSI,
function_ref<void(llvm::Instruction*,
llvm::Value*)> Replacer =
&replaceAllUsesWithDefault,
function_ref<void(llvm::Instruction*)>
Eraser = &eraseFromParentDefault)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:136
Parameters
- const llvm::DataLayout& DL
- const llvm::TargetLibraryInfo* TLI
- llvm::OptimizationRemarkEmitter& ORE
- llvm::BlockFrequencyInfo* BFI
- llvm::ProfileSummaryInfo* PSI
- function_ref<void(llvm::Instruction*, llvm::Value*)> Replacer = &replaceAllUsesWithDefault
- function_ref<void(llvm::Instruction*)> Eraser = &eraseFromParentDefault
¶void classifyArgUse(
llvm::Value* Val,
llvm::Function* F,
bool IsFloat,
SmallVectorImpl<llvm::CallInst*>& SinCalls,
SmallVectorImpl<llvm::CallInst*>& CosCalls,
SmallVectorImpl<llvm::CallInst*>& SinCosCalls)
void classifyArgUse(
llvm::Value* Val,
llvm::Function* F,
bool IsFloat,
SmallVectorImpl<llvm::CallInst*>& SinCalls,
SmallVectorImpl<llvm::CallInst*>& CosCalls,
SmallVectorImpl<llvm::CallInst*>& SinCosCalls)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:227
Parameters
- llvm::Value* Val
- llvm::Function* F
- bool IsFloat
- SmallVectorImpl<llvm::CallInst*>& SinCalls
- SmallVectorImpl<llvm::CallInst*>& CosCalls
- SmallVectorImpl<llvm::CallInst*>& SinCosCalls
¶llvm::Value* emitStrLenMemCpy(
llvm::Value* Src,
llvm::Value* Dst,
uint64_t Len,
llvm::IRBuilderBase& B)
llvm::Value* emitStrLenMemCpy(
llvm::Value* Src,
llvm::Value* Dst,
uint64_t Len,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:225
Parameters
- llvm::Value* Src
- llvm::Value* Dst
- uint64_t Len
- llvm::IRBuilderBase& B
¶void eraseFromParent(llvm::Instruction* I)
void eraseFromParent(llvm::Instruction* I)
Description
Erase an instruction from its parent with our eraser.
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:127
Parameters
¶static void eraseFromParentDefault(
llvm::Instruction* I)
static void eraseFromParentDefault(
llvm::Instruction* I)
Description
Internal wrapper for eraseFromParent that is the default implementation.
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:121
Parameters
¶bool hasFloatVersion(const llvm::Module* M,
llvm::StringRef FuncName)
bool hasFloatVersion(const llvm::Module* M,
llvm::StringRef FuncName)
Description
hasFloatVersion - Checks if there is a float version of the specified function by checking for an existing function with name FuncName + f
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:238
Parameters
- const llvm::Module* M
- llvm::StringRef FuncName
¶llvm::Value* optimizeAbs(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeAbs(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:206
Parameters
¶llvm::Value* optimizeAtoi(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeAtoi(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:210
Parameters
¶llvm::Value* optimizeBCmp(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeBCmp(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:175
Parameters
¶llvm::Value* optimizeBCopy(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeBCopy(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:184
Parameters
¶llvm::Value* optimizeCAbs(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeCAbs(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:189
Parameters
¶llvm::Value* optimizeCall(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeCall(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Description
optimizeCall - Take the given call instruction and return a more optimal value to replace the instruction with or 0 if a more optimal form can't be found. Note that the returned value may be equal to the instruction being optimized. In this case all other instructions that use the given instruction were modified and the given instruction is dead. The call must not be an indirect call.
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:151
Parameters
¶llvm::Value* optimizeErrorReporting(
llvm::CallInst* CI,
llvm::IRBuilderBase& B,
int StreamArg = -1)
llvm::Value* optimizeErrorReporting(
llvm::CallInst* CI,
llvm::IRBuilderBase& B,
int StreamArg = -1)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:214
Parameters
- llvm::CallInst* CI
- llvm::IRBuilderBase& B
- int StreamArg = -1
¶llvm::Value* optimizeExp2(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeExp2(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:193
Parameters
¶llvm::Value* optimizeFFS(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeFFS(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:204
Parameters
¶llvm::Value* optimizeFMinFMax(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeFMinFMax(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:194
Parameters
¶llvm::Value* optimizeFPrintF(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeFPrintF(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:219
Parameters
¶llvm::Value* optimizeFPrintFString(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeFPrintFString(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:234
Parameters
¶llvm::Value* optimizeFPuts(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeFPuts(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:221
Parameters
¶llvm::Value* optimizeFWrite(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeFWrite(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:220
Parameters
¶llvm::Value* optimizeFloatingPointLibCall(
llvm::CallInst* CI,
llvm::LibFunc Func,
llvm::IRBuilderBase& B)
llvm::Value* optimizeFloatingPointLibCall(
llvm::CallInst* CI,
llvm::LibFunc Func,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:200
Parameters
- llvm::CallInst* CI
- llvm::LibFunc Func
- llvm::IRBuilderBase& B
¶llvm::Value* optimizeFls(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeFls(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:205
Parameters
¶llvm::Value* optimizeIsAscii(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeIsAscii(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:208
Parameters
¶llvm::Value* optimizeIsDigit(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeIsDigit(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:207
Parameters
¶llvm::Value* optimizeLog(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeLog(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:195
Parameters
¶llvm::Value* optimizeMemCCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeMemCCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:177
Parameters
¶llvm::Value* optimizeMemChr(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeMemChr(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:172
Parameters
¶llvm::Value* optimizeMemCmp(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeMemCmp(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:174
Parameters
¶llvm::Value* optimizeMemCmpBCmpCommon(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeMemCmpBCmpCommon(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:176
Parameters
¶llvm::Value* optimizeMemCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeMemCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:179
Parameters
¶llvm::Value* optimizeMemMove(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeMemMove(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:180
Parameters
¶llvm::Value* optimizeMemPCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeMemPCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:178
Parameters
¶llvm::Value* optimizeMemRChr(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeMemRChr(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:173
Parameters
¶llvm::Value* optimizeMemSet(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeMemSet(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:181
Parameters
¶llvm::Value* optimizePow(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizePow(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:190
Parameters
¶llvm::Value* optimizePrintF(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizePrintF(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:216
Parameters
¶llvm::Value* optimizePrintFString(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizePrintFString(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:231
Parameters
¶llvm::Value* optimizePuts(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizePuts(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:222
Parameters
¶llvm::Value* optimizeRealloc(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeRealloc(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:182
Parameters
¶llvm::Value* optimizeSPrintF(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeSPrintF(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:217
Parameters
¶llvm::Value* optimizeSPrintFString(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeSPrintFString(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:232
Parameters
¶llvm::Value* optimizeSinCosPi(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeSinCosPi(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:197
Parameters
¶llvm::Value* optimizeSnPrintF(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeSnPrintF(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:218
Parameters
¶llvm::Value* optimizeSnPrintFString(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeSnPrintFString(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:233
Parameters
¶llvm::Value* optimizeSqrt(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeSqrt(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:196
Parameters
¶llvm::Value* optimizeStpCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStpCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:163
Parameters
¶llvm::Value* optimizeStrCSpn(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrCSpn(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:170
Parameters
¶llvm::Value* optimizeStrCat(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrCat(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:155
Parameters
¶llvm::Value* optimizeStrChr(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrChr(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:157
Parameters
¶llvm::Value* optimizeStrCmp(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrCmp(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:159
Parameters
¶llvm::Value* optimizeStrCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:162
Parameters
¶llvm::Value* optimizeStrLen(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrLen(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:165
Parameters
¶llvm::Value* optimizeStrNCat(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrNCat(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:156
Parameters
¶llvm::Value* optimizeStrNCmp(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrNCmp(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:160
Parameters
¶llvm::Value* optimizeStrNCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrNCpy(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:164
Parameters
¶llvm::Value* optimizeStrNDup(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrNDup(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:161
Parameters
¶llvm::Value* optimizeStrNLen(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrNLen(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:166
Parameters
¶llvm::Value* optimizeStrPBrk(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrPBrk(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:167
Parameters
¶llvm::Value* optimizeStrRChr(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrRChr(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:158
Parameters
¶llvm::Value* optimizeStrSpn(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrSpn(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:169
Parameters
¶llvm::Value* optimizeStrStr(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrStr(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:171
Parameters
¶llvm::Value* optimizeStrTo(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStrTo(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:168
Parameters
¶llvm::Value* optimizeStrToInt(
llvm::CallInst* CI,
llvm::IRBuilderBase& B,
bool AsSigned)
llvm::Value* optimizeStrToInt(
llvm::CallInst* CI,
llvm::IRBuilderBase& B,
bool AsSigned)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:211
Parameters
- llvm::CallInst* CI
- llvm::IRBuilderBase& B
- bool AsSigned
¶llvm::Value* optimizeStringLength(
llvm::CallInst* CI,
llvm::IRBuilderBase& B,
unsigned int CharSize,
llvm::Value* Bound = nullptr)
llvm::Value* optimizeStringLength(
llvm::CallInst* CI,
llvm::IRBuilderBase& B,
unsigned int CharSize,
llvm::Value* Bound = nullptr)
Description
Shared code to optimize strlen+wcslen and strnlen+wcsnlen.
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:241
Parameters
- llvm::CallInst* CI
- llvm::IRBuilderBase& B
- unsigned int CharSize
- llvm::Value* Bound = nullptr
¶llvm::Value* optimizeStringMemoryLibCall(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeStringMemoryLibCall(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:186
Parameters
¶llvm::Value* optimizeTan(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeTan(llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:198
Parameters
¶llvm::Value* optimizeToAscii(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeToAscii(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:209
Parameters
¶llvm::Value* optimizeWcslen(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
llvm::Value* optimizeWcslen(
llvm::CallInst* CI,
llvm::IRBuilderBase& B)
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:183
Parameters
¶void replaceAllUsesWith(llvm::Instruction* I,
llvm::Value* With)
void replaceAllUsesWith(llvm::Instruction* I,
llvm::Value* With)
Description
Replace an instruction's uses with a value using our replacer.
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:124
Parameters
- llvm::Instruction* I
- llvm::Value* With
¶static void replaceAllUsesWithDefault(
llvm::Instruction* I,
llvm::Value* With)
static void replaceAllUsesWithDefault(
llvm::Instruction* I,
llvm::Value* With)
Description
Internal wrapper for RAUW that is the default implementation. Other users may provide an alternate function with this signature instead of this one.
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:116
Parameters
- llvm::Instruction* I
- llvm::Value* With
¶llvm::Value* replacePowWithExp(
llvm::CallInst* Pow,
llvm::IRBuilderBase& B)
llvm::Value* replacePowWithExp(
llvm::CallInst* Pow,
llvm::IRBuilderBase& B)
Description
Use exp{,2}(x * y) for pow(exp{,2}(x), y); ldexp(1.0, x) for pow(2.0, itofp(x)); exp2(n * x) for pow(2.0 ** n, x); exp10(x) for pow(10.0, x); exp2(log2(n) * x) for pow(n, x).
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:191
Parameters
¶llvm::Value* replacePowWithSqrt(
llvm::CallInst* Pow,
llvm::IRBuilderBase& B)
llvm::Value* replacePowWithSqrt(
llvm::CallInst* Pow,
llvm::IRBuilderBase& B)
Description
Use square root in place of pow(x, +/-0.5).
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:192
Parameters
¶void substituteInParent(llvm::Instruction* I,
llvm::Value* With)
void substituteInParent(llvm::Instruction* I,
llvm::Value* With)
Description
Replace an instruction with a value and erase it from its parent.
Declared at: llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h:130
Parameters
- llvm::Instruction* I
- llvm::Value* With