Skip to content

Commit ec6c623

Browse files
committed
[SimplifyLibCalls] Accept IRBuilderBase; NFC
1 parent 28ffe38 commit ec6c623

File tree

2 files changed

+191
-186
lines changed

2 files changed

+191
-186
lines changed

llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h

Lines changed: 85 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616

1717
#include "llvm/ADT/STLExtras.h"
1818
#include "llvm/Analysis/TargetLibraryInfo.h"
19-
#include "llvm/IR/IRBuilder.h"
2019

2120
namespace llvm {
2221
class StringRef;
2322
class Value;
2423
class CallInst;
2524
class DataLayout;
2625
class Instruction;
26+
class IRBuilderBase;
2727
class TargetLibraryInfo;
2828
class BasicBlock;
2929
class Function;
@@ -53,23 +53,23 @@ class FortifiedLibCallSimplifier {
5353
Value *optimizeCall(CallInst *CI);
5454

5555
private:
56-
Value *optimizeMemCpyChk(CallInst *CI, IRBuilder<> &B);
57-
Value *optimizeMemMoveChk(CallInst *CI, IRBuilder<> &B);
58-
Value *optimizeMemSetChk(CallInst *CI, IRBuilder<> &B);
56+
Value *optimizeMemCpyChk(CallInst *CI, IRBuilderBase &B);
57+
Value *optimizeMemMoveChk(CallInst *CI, IRBuilderBase &B);
58+
Value *optimizeMemSetChk(CallInst *CI, IRBuilderBase &B);
5959

6060
/// Str/Stp cpy are similar enough to be handled in the same functions.
61-
Value *optimizeStrpCpyChk(CallInst *CI, IRBuilder<> &B, LibFunc Func);
62-
Value *optimizeStrpNCpyChk(CallInst *CI, IRBuilder<> &B, LibFunc Func);
63-
Value *optimizeStrLenChk(CallInst *CI, IRBuilder<> &B);
64-
Value *optimizeMemCCpyChk(CallInst *CI, IRBuilder<> &B);
65-
Value *optimizeSNPrintfChk(CallInst *CI, IRBuilder<> &B);
66-
Value *optimizeSPrintfChk(CallInst *CI,IRBuilder<> &B);
67-
Value *optimizeStrCatChk(CallInst *CI, IRBuilder<> &B);
68-
Value *optimizeStrLCat(CallInst *CI, IRBuilder<> &B);
69-
Value *optimizeStrNCatChk(CallInst *CI, IRBuilder<> &B);
70-
Value *optimizeStrLCpyChk(CallInst *CI, IRBuilder<> &B);
71-
Value *optimizeVSNPrintfChk(CallInst *CI, IRBuilder<> &B);
72-
Value *optimizeVSPrintfChk(CallInst *CI, IRBuilder<> &B);
61+
Value *optimizeStrpCpyChk(CallInst *CI, IRBuilderBase &B, LibFunc Func);
62+
Value *optimizeStrpNCpyChk(CallInst *CI, IRBuilderBase &B, LibFunc Func);
63+
Value *optimizeStrLenChk(CallInst *CI, IRBuilderBase &B);
64+
Value *optimizeMemCCpyChk(CallInst *CI, IRBuilderBase &B);
65+
Value *optimizeSNPrintfChk(CallInst *CI, IRBuilderBase &B);
66+
Value *optimizeSPrintfChk(CallInst *CI,IRBuilderBase &B);
67+
Value *optimizeStrCatChk(CallInst *CI, IRBuilderBase &B);
68+
Value *optimizeStrLCat(CallInst *CI, IRBuilderBase &B);
69+
Value *optimizeStrNCatChk(CallInst *CI, IRBuilderBase &B);
70+
Value *optimizeStrLCpyChk(CallInst *CI, IRBuilderBase &B);
71+
Value *optimizeVSNPrintfChk(CallInst *CI, IRBuilderBase &B);
72+
Value *optimizeVSPrintfChk(CallInst *CI, IRBuilderBase &B);
7373

7474
/// Checks whether the call \p CI to a fortified libcall is foldable
7575
/// to the non-fortified version.
@@ -133,7 +133,7 @@ class LibCallSimplifier {
133133
eraseFromParent(I);
134134
}
135135

136-
Value *foldMallocMemset(CallInst *Memset, IRBuilder<> &B);
136+
Value *foldMallocMemset(CallInst *Memset, IRBuilderBase &B);
137137

138138
public:
139139
LibCallSimplifier(
@@ -155,95 +155,96 @@ class LibCallSimplifier {
155155

156156
private:
157157
// String and Memory Library Call Optimizations
158-
Value *optimizeStrCat(CallInst *CI, IRBuilder<> &B);
159-
Value *optimizeStrNCat(CallInst *CI, IRBuilder<> &B);
160-
Value *optimizeStrChr(CallInst *CI, IRBuilder<> &B);
161-
Value *optimizeStrRChr(CallInst *CI, IRBuilder<> &B);
162-
Value *optimizeStrCmp(CallInst *CI, IRBuilder<> &B);
163-
Value *optimizeStrNCmp(CallInst *CI, IRBuilder<> &B);
164-
Value *optimizeStrNDup(CallInst *CI, IRBuilder<> &B);
165-
Value *optimizeStrCpy(CallInst *CI, IRBuilder<> &B);
166-
Value *optimizeStpCpy(CallInst *CI, IRBuilder<> &B);
167-
Value *optimizeStrNCpy(CallInst *CI, IRBuilder<> &B);
168-
Value *optimizeStrLen(CallInst *CI, IRBuilder<> &B);
169-
Value *optimizeStrPBrk(CallInst *CI, IRBuilder<> &B);
170-
Value *optimizeStrTo(CallInst *CI, IRBuilder<> &B);
171-
Value *optimizeStrSpn(CallInst *CI, IRBuilder<> &B);
172-
Value *optimizeStrCSpn(CallInst *CI, IRBuilder<> &B);
173-
Value *optimizeStrStr(CallInst *CI, IRBuilder<> &B);
174-
Value *optimizeMemChr(CallInst *CI, IRBuilder<> &B);
175-
Value *optimizeMemRChr(CallInst *CI, IRBuilder<> &B);
176-
Value *optimizeMemCmp(CallInst *CI, IRBuilder<> &B);
177-
Value *optimizeBCmp(CallInst *CI, IRBuilder<> &B);
178-
Value *optimizeMemCmpBCmpCommon(CallInst *CI, IRBuilder<> &B);
179-
Value *optimizeMemCCpy(CallInst *CI, IRBuilder<> &B);
180-
Value *optimizeMemPCpy(CallInst *CI, IRBuilder<> &B);
181-
Value *optimizeMemCpy(CallInst *CI, IRBuilder<> &B);
182-
Value *optimizeMemMove(CallInst *CI, IRBuilder<> &B);
183-
Value *optimizeMemSet(CallInst *CI, IRBuilder<> &B);
184-
Value *optimizeRealloc(CallInst *CI, IRBuilder<> &B);
185-
Value *optimizeWcslen(CallInst *CI, IRBuilder<> &B);
186-
Value *optimizeBCopy(CallInst *CI, IRBuilder<> &B);
158+
Value *optimizeStrCat(CallInst *CI, IRBuilderBase &B);
159+
Value *optimizeStrNCat(CallInst *CI, IRBuilderBase &B);
160+
Value *optimizeStrChr(CallInst *CI, IRBuilderBase &B);
161+
Value *optimizeStrRChr(CallInst *CI, IRBuilderBase &B);
162+
Value *optimizeStrCmp(CallInst *CI, IRBuilderBase &B);
163+
Value *optimizeStrNCmp(CallInst *CI, IRBuilderBase &B);
164+
Value *optimizeStrNDup(CallInst *CI, IRBuilderBase &B);
165+
Value *optimizeStrCpy(CallInst *CI, IRBuilderBase &B);
166+
Value *optimizeStpCpy(CallInst *CI, IRBuilderBase &B);
167+
Value *optimizeStrNCpy(CallInst *CI, IRBuilderBase &B);
168+
Value *optimizeStrLen(CallInst *CI, IRBuilderBase &B);
169+
Value *optimizeStrPBrk(CallInst *CI, IRBuilderBase &B);
170+
Value *optimizeStrTo(CallInst *CI, IRBuilderBase &B);
171+
Value *optimizeStrSpn(CallInst *CI, IRBuilderBase &B);
172+
Value *optimizeStrCSpn(CallInst *CI, IRBuilderBase &B);
173+
Value *optimizeStrStr(CallInst *CI, IRBuilderBase &B);
174+
Value *optimizeMemChr(CallInst *CI, IRBuilderBase &B);
175+
Value *optimizeMemRChr(CallInst *CI, IRBuilderBase &B);
176+
Value *optimizeMemCmp(CallInst *CI, IRBuilderBase &B);
177+
Value *optimizeBCmp(CallInst *CI, IRBuilderBase &B);
178+
Value *optimizeMemCmpBCmpCommon(CallInst *CI, IRBuilderBase &B);
179+
Value *optimizeMemCCpy(CallInst *CI, IRBuilderBase &B);
180+
Value *optimizeMemPCpy(CallInst *CI, IRBuilderBase &B);
181+
Value *optimizeMemCpy(CallInst *CI, IRBuilderBase &B);
182+
Value *optimizeMemMove(CallInst *CI, IRBuilderBase &B);
183+
Value *optimizeMemSet(CallInst *CI, IRBuilderBase &B);
184+
Value *optimizeRealloc(CallInst *CI, IRBuilderBase &B);
185+
Value *optimizeWcslen(CallInst *CI, IRBuilderBase &B);
186+
Value *optimizeBCopy(CallInst *CI, IRBuilderBase &B);
187187
// Wrapper for all String/Memory Library Call Optimizations
188-
Value *optimizeStringMemoryLibCall(CallInst *CI, IRBuilder<> &B);
188+
Value *optimizeStringMemoryLibCall(CallInst *CI, IRBuilderBase &B);
189189

190190
// Math Library Optimizations
191-
Value *optimizeCAbs(CallInst *CI, IRBuilder<> &B);
192-
Value *optimizePow(CallInst *CI, IRBuilder<> &B);
193-
Value *replacePowWithExp(CallInst *Pow, IRBuilder<> &B);
194-
Value *replacePowWithSqrt(CallInst *Pow, IRBuilder<> &B);
195-
Value *optimizeExp2(CallInst *CI, IRBuilder<> &B);
196-
Value *optimizeFMinFMax(CallInst *CI, IRBuilder<> &B);
197-
Value *optimizeLog(CallInst *CI, IRBuilder<> &B);
198-
Value *optimizeSqrt(CallInst *CI, IRBuilder<> &B);
199-
Value *optimizeSinCosPi(CallInst *CI, IRBuilder<> &B);
200-
Value *optimizeTan(CallInst *CI, IRBuilder<> &B);
191+
Value *optimizeCAbs(CallInst *CI, IRBuilderBase &B);
192+
Value *optimizePow(CallInst *CI, IRBuilderBase &B);
193+
Value *replacePowWithExp(CallInst *Pow, IRBuilderBase &B);
194+
Value *replacePowWithSqrt(CallInst *Pow, IRBuilderBase &B);
195+
Value *optimizeExp2(CallInst *CI, IRBuilderBase &B);
196+
Value *optimizeFMinFMax(CallInst *CI, IRBuilderBase &B);
197+
Value *optimizeLog(CallInst *CI, IRBuilderBase &B);
198+
Value *optimizeSqrt(CallInst *CI, IRBuilderBase &B);
199+
Value *optimizeSinCosPi(CallInst *CI, IRBuilderBase &B);
200+
Value *optimizeTan(CallInst *CI, IRBuilderBase &B);
201201
// Wrapper for all floating point library call optimizations
202202
Value *optimizeFloatingPointLibCall(CallInst *CI, LibFunc Func,
203-
IRBuilder<> &B);
203+
IRBuilderBase &B);
204204

205205
// Integer Library Call Optimizations
206-
Value *optimizeFFS(CallInst *CI, IRBuilder<> &B);
207-
Value *optimizeFls(CallInst *CI, IRBuilder<> &B);
208-
Value *optimizeAbs(CallInst *CI, IRBuilder<> &B);
209-
Value *optimizeIsDigit(CallInst *CI, IRBuilder<> &B);
210-
Value *optimizeIsAscii(CallInst *CI, IRBuilder<> &B);
211-
Value *optimizeToAscii(CallInst *CI, IRBuilder<> &B);
212-
Value *optimizeAtoi(CallInst *CI, IRBuilder<> &B);
213-
Value *optimizeStrtol(CallInst *CI, IRBuilder<> &B);
206+
Value *optimizeFFS(CallInst *CI, IRBuilderBase &B);
207+
Value *optimizeFls(CallInst *CI, IRBuilderBase &B);
208+
Value *optimizeAbs(CallInst *CI, IRBuilderBase &B);
209+
Value *optimizeIsDigit(CallInst *CI, IRBuilderBase &B);
210+
Value *optimizeIsAscii(CallInst *CI, IRBuilderBase &B);
211+
Value *optimizeToAscii(CallInst *CI, IRBuilderBase &B);
212+
Value *optimizeAtoi(CallInst *CI, IRBuilderBase &B);
213+
Value *optimizeStrtol(CallInst *CI, IRBuilderBase &B);
214214

215215
// Formatting and IO Library Call Optimizations
216-
Value *optimizeErrorReporting(CallInst *CI, IRBuilder<> &B,
216+
Value *optimizeErrorReporting(CallInst *CI, IRBuilderBase &B,
217217
int StreamArg = -1);
218-
Value *optimizePrintF(CallInst *CI, IRBuilder<> &B);
219-
Value *optimizeSPrintF(CallInst *CI, IRBuilder<> &B);
220-
Value *optimizeSnPrintF(CallInst *CI, IRBuilder<> &B);
221-
Value *optimizeFPrintF(CallInst *CI, IRBuilder<> &B);
222-
Value *optimizeFWrite(CallInst *CI, IRBuilder<> &B);
223-
Value *optimizeFRead(CallInst *CI, IRBuilder<> &B);
224-
Value *optimizeFPuts(CallInst *CI, IRBuilder<> &B);
225-
Value *optimizeFGets(CallInst *CI, IRBuilder<> &B);
226-
Value *optimizeFPutc(CallInst *CI, IRBuilder<> &B);
227-
Value *optimizeFGetc(CallInst *CI, IRBuilder<> &B);
228-
Value *optimizePuts(CallInst *CI, IRBuilder<> &B);
218+
Value *optimizePrintF(CallInst *CI, IRBuilderBase &B);
219+
Value *optimizeSPrintF(CallInst *CI, IRBuilderBase &B);
220+
Value *optimizeSnPrintF(CallInst *CI, IRBuilderBase &B);
221+
Value *optimizeFPrintF(CallInst *CI, IRBuilderBase &B);
222+
Value *optimizeFWrite(CallInst *CI, IRBuilderBase &B);
223+
Value *optimizeFRead(CallInst *CI, IRBuilderBase &B);
224+
Value *optimizeFPuts(CallInst *CI, IRBuilderBase &B);
225+
Value *optimizeFGets(CallInst *CI, IRBuilderBase &B);
226+
Value *optimizeFPutc(CallInst *CI, IRBuilderBase &B);
227+
Value *optimizeFGetc(CallInst *CI, IRBuilderBase &B);
228+
Value *optimizePuts(CallInst *CI, IRBuilderBase &B);
229229

230230
// Helper methods
231-
Value *emitStrLenMemCpy(Value *Src, Value *Dst, uint64_t Len, IRBuilder<> &B);
231+
Value *emitStrLenMemCpy(Value *Src, Value *Dst, uint64_t Len,
232+
IRBuilderBase &B);
232233
void classifyArgUse(Value *Val, Function *F, bool IsFloat,
233234
SmallVectorImpl<CallInst *> &SinCalls,
234235
SmallVectorImpl<CallInst *> &CosCalls,
235236
SmallVectorImpl<CallInst *> &SinCosCalls);
236-
Value *optimizePrintFString(CallInst *CI, IRBuilder<> &B);
237-
Value *optimizeSPrintFString(CallInst *CI, IRBuilder<> &B);
238-
Value *optimizeSnPrintFString(CallInst *CI, IRBuilder<> &B);
239-
Value *optimizeFPrintFString(CallInst *CI, IRBuilder<> &B);
237+
Value *optimizePrintFString(CallInst *CI, IRBuilderBase &B);
238+
Value *optimizeSPrintFString(CallInst *CI, IRBuilderBase &B);
239+
Value *optimizeSnPrintFString(CallInst *CI, IRBuilderBase &B);
240+
Value *optimizeFPrintFString(CallInst *CI, IRBuilderBase &B);
240241

241242
/// hasFloatVersion - Checks if there is a float version of the specified
242243
/// function by checking for an existing function with name FuncName + f
243244
bool hasFloatVersion(StringRef FuncName);
244245

245246
/// Shared code to optimize strlen+wcslen.
246-
Value *optimizeStringLength(CallInst *CI, IRBuilder<> &B, unsigned CharSize);
247+
Value *optimizeStringLength(CallInst *CI, IRBuilderBase &B, unsigned CharSize);
247248
};
248249
} // End llvm namespace
249250

0 commit comments

Comments
 (0)