15 #ifndef LLVM_TRANSFORMS_UTILS_BUILDLIBCALLS_H
16 #define LLVM_TRANSFORMS_UTILS_BUILDLIBCALLS_H
23 class TargetLibraryInfo;
31 Value *
EmitStrLen(Value *Ptr, IRBuilder<> &B,
const DataLayout *
TD,
32 const TargetLibraryInfo *TLI);
37 Value *
EmitStrNLen(Value *Ptr, Value *MaxLen, IRBuilder<> &B,
38 const DataLayout *
TD,
const TargetLibraryInfo *TLI);
43 Value *
EmitStrChr(Value *Ptr,
char C, IRBuilder<> &B,
const DataLayout *
TD,
44 const TargetLibraryInfo *TLI);
47 Value *
EmitStrNCmp(Value *Ptr1, Value *Ptr2, Value *Len, IRBuilder<> &B,
48 const DataLayout *
TD,
const TargetLibraryInfo *TLI);
52 Value *
EmitStrCpy(Value *Dst, Value *Src, IRBuilder<> &B,
53 const DataLayout *
TD,
const TargetLibraryInfo *TLI,
54 StringRef
Name =
"strcpy");
58 Value *
EmitStrNCpy(Value *Dst, Value *Src, Value *Len, IRBuilder<> &B,
59 const DataLayout *
TD,
const TargetLibraryInfo *TLI,
60 StringRef
Name =
"strncpy");
65 Value *
EmitMemCpyChk(Value *Dst, Value *Src, Value *Len, Value *ObjSize,
66 IRBuilder<> &B,
const DataLayout *
TD,
67 const TargetLibraryInfo *TLI);
71 Value *
EmitMemChr(Value *Ptr, Value *Val, Value *Len, IRBuilder<> &B,
72 const DataLayout *
TD,
const TargetLibraryInfo *TLI);
75 Value *
EmitMemCmp(Value *Ptr1, Value *Ptr2, Value *Len, IRBuilder<> &B,
76 const DataLayout *
TD,
const TargetLibraryInfo *TLI);
84 const AttributeSet &Attrs);
88 Value *
EmitPutChar(Value *Char, IRBuilder<> &B,
const DataLayout *
TD,
89 const TargetLibraryInfo *TLI);
93 Value *
EmitPutS(Value *Str, IRBuilder<> &B,
const DataLayout *
TD,
94 const TargetLibraryInfo *TLI);
99 const DataLayout *
TD,
const TargetLibraryInfo *TLI);
103 Value *
EmitFPutS(Value *Str, Value *
File, IRBuilder<> &B,
const DataLayout *
TD,
104 const TargetLibraryInfo *TLI);
108 Value *
EmitFWrite(Value *Ptr, Value *Size, Value *
File, IRBuilder<> &B,
109 const DataLayout *
TD,
const TargetLibraryInfo *TLI);
117 virtual bool isFoldable(
unsigned SizeCIOp,
unsigned SizeArgOp,
118 bool isString)
const = 0;
Value * EmitStrNLen(Value *Ptr, Value *MaxLen, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)
Value * EmitStrChr(Value *Ptr, char C, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)
Value * EmitUnaryFloatFnCall(Value *Op, StringRef Name, IRBuilder<> &B, const AttributeSet &Attrs)
bool fold(CallInst *CI, const DataLayout *TD, const TargetLibraryInfo *TLI)
virtual bool isFoldable(unsigned SizeCIOp, unsigned SizeArgOp, bool isString) const =0
Value * EmitMemChr(Value *Ptr, Value *Val, Value *Len, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)
virtual ~SimplifyFortifiedLibCalls()
Value * EmitStrNCpy(Value *Dst, Value *Src, Value *Len, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI, StringRef Name="strncpy")
virtual void replaceCall(Value *With)=0
Value * EmitPutChar(Value *Char, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)
Value * EmitStrLen(Value *Ptr, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)
Value * EmitMemCpyChk(Value *Dst, Value *Src, Value *Len, Value *ObjSize, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)
Value * EmitStrCpy(Value *Dst, Value *Src, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI, StringRef Name="strcpy")
Value * CastToCStr(Value *V, IRBuilder<> &B)
CastToCStr - Return V if it is an i8*, otherwise cast it to i8*.
Value * EmitFWrite(Value *Ptr, Value *Size, Value *File, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)
Value * EmitPutS(Value *Str, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)
LLVM Value Representation.
Value * EmitFPutS(Value *Str, Value *File, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)
Value * EmitMemCmp(Value *Ptr1, Value *Ptr2, Value *Len, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)
EmitMemCmp - Emit a call to the memcmp function.
Value * EmitStrNCmp(Value *Ptr1, Value *Ptr2, Value *Len, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)
EmitStrNCmp - Emit a call to the strncmp function to the builder.
INITIALIZE_PASS(GlobalMerge,"global-merge","Global Merge", false, false) bool GlobalMerge const DataLayout * TD
Value * EmitFPutC(Value *Char, Value *File, IRBuilder<> &B, const DataLayout *TD, const TargetLibraryInfo *TLI)