aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Transforms/Scalar/SimplifyLibCalls.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/Transforms/Scalar/SimplifyLibCalls.cpp b/lib/Transforms/Scalar/SimplifyLibCalls.cpp
index 058cd3c561..5941ea6571 100644
--- a/lib/Transforms/Scalar/SimplifyLibCalls.cpp
+++ b/lib/Transforms/Scalar/SimplifyLibCalls.cpp
@@ -49,13 +49,10 @@ protected:
Function *Caller;
const TargetData *TD;
LLVMContext* Context;
- bool OptChkCall; // True if it's optimizing a *_chk libcall.
public:
- LibCallOptimization() : OptChkCall(false) { }
+ LibCallOptimization() { }
virtual ~LibCallOptimization() {}
- void setOptChkCall(bool c) { OptChkCall = c; }
-
/// CallOptimizer - This pure virtual method is implemented by base classes to
/// do various optimizations. If this returns null then no transformation was
/// performed. If it returns CI, then it transformed the call and CI is to be
@@ -353,6 +350,10 @@ struct StrNCmpOpt : public LibCallOptimization {
// 'strcpy' Optimizations
struct StrCpyOpt : public LibCallOptimization {
+ bool OptChkCall; // True if it's optimizing a __strcpy_chk libcall.
+
+ StrCpyOpt(bool c) : OptChkCall(c) {}
+
virtual Value *CallOptimizer(Function *Callee, CallInst *CI, IRBuilder<> &B) {
// Verify the "strcpy" function prototype.
unsigned NumParams = OptChkCall ? 3 : 2;
@@ -1188,8 +1189,7 @@ namespace {
bool Modified; // This is only used by doInitialization.
public:
static char ID; // Pass identification
- SimplifyLibCalls() : FunctionPass(&ID) {}
-
+ SimplifyLibCalls() : FunctionPass(&ID), StrCpy(false), StrCpyChk(true) {}
void InitOptimizations();
bool runOnFunction(Function &F);
@@ -1240,7 +1240,6 @@ void SimplifyLibCalls::InitOptimizations() {
Optimizations["memset"] = &MemSet;
// _chk variants of String and Memory LibCall Optimizations.
- StrCpyChk.setOptChkCall(true);
Optimizations["__strcpy_chk"] = &StrCpyChk;
// Math Library Optimizations