LLVM 18.0.0git
|
#include "llvm/Transforms/Utils/BuildLibCalls.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/MemoryBuiltins.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/Support/TypeSize.h"
#include <optional>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "build-libcalls" |
#define DEBUG_TYPE "build-libcalls" |
Definition at line 31 of file BuildLibCalls.cpp.
|
static |
Append a suffix to the function name according to the type of 'Op'.
Definition at line 1681 of file BuildLibCalls.cpp.
References Name.
Referenced by llvm::emitBinaryFloatFnCall(), and llvm::emitUnaryFloatFnCall().
|
static |
Definition at line 1743 of file BuildLibCalls.cpp.
References assert(), B, F, llvm::getOrInsertLibFunc(), llvm::Value::getType(), llvm::inferNonMandatoryLibFuncAttrs(), Name, llvm::CallBase::setAttributes(), and llvm::CallBase::setCallingConv().
Referenced by llvm::emitBinaryFloatFnCall().
|
static |
Definition at line 1437 of file BuildLibCalls.cpp.
References B, F, llvm::TargetLibraryInfo::getName(), llvm::getOrInsertLibFunc(), llvm::inferNonMandatoryLibFuncAttrs(), llvm::isLibFuncEmittable(), Operands, and llvm::CallBase::setCallingConv().
Referenced by llvm::emitBCmp(), llvm::emitMemCCpy(), llvm::emitMemChr(), llvm::emitMemCmp(), llvm::emitMemPCpy(), llvm::emitMemRChr(), llvm::emitSNPrintf(), llvm::emitSPrintf(), llvm::emitStpCpy(), llvm::emitStpNCpy(), llvm::emitStrCat(), llvm::emitStrChr(), llvm::emitStrCpy(), llvm::emitStrDup(), llvm::emitStrLCat(), llvm::emitStrLCpy(), llvm::emitStrLen(), llvm::emitStrNCat(), llvm::emitStrNCmp(), llvm::emitStrNCpy(), llvm::emitVSNPrintf(), and llvm::emitVSPrintf().
|
static |
Definition at line 1695 of file BuildLibCalls.cpp.
References assert(), B, F, llvm::getOrInsertLibFunc(), Name, llvm::CallBase::setAttributes(), and llvm::CallBase::setCallingConv().
Referenced by llvm::emitUnaryFloatFnCall().
|
static |
Definition at line 1428 of file BuildLibCalls.cpp.
References B, and llvm::TargetLibraryInfo::getIntSize().
Referenced by llvm::emitBCmp(), llvm::emitFPutC(), llvm::emitFPutS(), llvm::emitMemCCpy(), llvm::emitMemChr(), llvm::emitMemCmp(), llvm::emitMemRChr(), llvm::emitPutChar(), llvm::emitPutS(), llvm::emitSNPrintf(), llvm::emitSPrintf(), llvm::emitStrChr(), llvm::emitStrNCmp(), llvm::emitVSNPrintf(), and llvm::emitVSPrintf().
|
static |
Definition at line 1432 of file BuildLibCalls.cpp.
References B, and llvm::TargetLibraryInfo::getSizeTSize().
Referenced by llvm::emitBCmp(), llvm::emitCalloc(), llvm::emitFWrite(), llvm::emitMalloc(), llvm::emitMemCCpy(), llvm::emitMemChr(), llvm::emitMemCmp(), llvm::emitMemCpyChk(), llvm::emitMemPCpy(), llvm::emitMemRChr(), llvm::emitSNPrintf(), llvm::emitStpNCpy(), llvm::emitStrLCat(), llvm::emitStrLCpy(), llvm::emitStrLen(), llvm::emitStrNCat(), llvm::emitStrNCmp(), llvm::emitStrNCpy(), and llvm::emitVSNPrintf().
|
static |
Definition at line 1255 of file BuildLibCalls.cpp.
References A, assert(), llvm::CallingConv::C, CC, DL, F, N, and llvm::CallingConv::X86_StdCall.
Referenced by llvm::getOrInsertLibFunc().
Definition at line 215 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 222 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 238 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
|
static |
Definition at line 245 of file BuildLibCalls.cpp.
References F, and llvm::Attribute::get().
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
|
static |
Definition at line 229 of file BuildLibCalls.cpp.
References F, and llvm::Attribute::getWithAllocSizeArgs().
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
|
static |
Definition at line 1240 of file BuildLibCalls.cpp.
References F, llvm::Attribute::None, and Signed.
Referenced by llvm::getOrInsertLibFunc().
Definition at line 170 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 158 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs(), and setRetAndArgsNoUndef().
Definition at line 52 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 124 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 116 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 200 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 100 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 193 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs(), and lowerObjCCall().
Definition at line 84 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 92 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 60 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 68 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 132 of file BuildLibCalls.cpp.
References F.
Definition at line 76 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 140 of file BuildLibCalls.cpp.
References F.
Definition at line 178 of file BuildLibCalls.cpp.
References F, setArgsNoUndef(), and setRetNoUndef().
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 108 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
|
static |
Definition at line 1247 of file BuildLibCalls.cpp.
References F, llvm::Attribute::None, and Signed.
Referenced by llvm::getOrInsertLibFunc().
Definition at line 148 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs(), and setRetAndArgsNoUndef().
Definition at line 185 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
Definition at line 207 of file BuildLibCalls.cpp.
References F.
Referenced by llvm::inferNonMandatoryLibFuncAttrs().
STATISTIC | ( | NumArgMemOnly | , |
"Number of functions inferred as argmemonly" | |||
) |
STATISTIC | ( | NumInaccessibleMemOnly | , |
"Number of functions inferred as inaccessiblememonly" | |||
) |
STATISTIC | ( | NumInaccessibleMemOrArgMemOnly | , |
"Number of functions inferred as inaccessiblemem_or_argmemonly" | |||
) |
STATISTIC | ( | NumNoAlias | , |
"Number of function returns inferred as noalias" | |||
) |
STATISTIC | ( | NumNoCapture | , |
"Number of arguments inferred as nocapture" | |||
) |
STATISTIC | ( | NumNoUndef | , |
"Number of function returns inferred as noundef returns" | |||
) |
STATISTIC | ( | NumNoUnwind | , |
"Number of functions inferred as nounwind" | |||
) |
STATISTIC | ( | NumReadNone | , |
"Number of functions inferred as readnone" | |||
) |
STATISTIC | ( | NumReadOnly | , |
"Number of functions inferred as readonly" | |||
) |
STATISTIC | ( | NumReadOnlyArg | , |
"Number of arguments inferred as readonly" | |||
) |
STATISTIC | ( | NumReturnedArg | , |
"Number of arguments inferred as returned" | |||
) |
STATISTIC | ( | NumWillReturn | , |
"Number of functions inferred as willreturn" | |||
) |
STATISTIC | ( | NumWriteOnly | , |
"Number of functions inferred as writeonly" | |||
) |
STATISTIC | ( | NumWriteOnlyArg | , |
"Number of arguments inferred as writeonly" | |||
) |