aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2010-03-24 20:19:04 +0000
committerEvan Cheng <evan.cheng@apple.com>2010-03-24 20:19:04 +0000
commiteb8c6459fcfaa4fb786c3e8ed8ee2769a10d7f48 (patch)
treef1b3015632fb8056226689dfe62b9f39a8c22acc
parent51ecc389a9b6ae82ff799a62cde882629fad53b0 (diff)
Move OptChkCall off LibCallOptimization into StrCpyOpt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99418 91177308-0d34-0410-b5e6-96231b3b80d8
-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