Move OptChkCall off LibCallOptimization into StrCpyOpt.
authorEvan Cheng <evan.cheng@apple.com>
Wed, 24 Mar 2010 20:19:04 +0000 (20:19 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Wed, 24 Mar 2010 20:19:04 +0000 (20:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99418 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/SimplifyLibCalls.cpp

index 058cd3c561f3482fd0362bbc11e79b1a9c4d3ffb..5941ea6571b76bc58114ea0759b46f394faed0cb 100644 (file)
@@ -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