[SimplifyLibCalls] Factor out str/mem libcall optimizations.
[oota-llvm.git] / lib / Transforms / Utils / SymbolRewriter.cpp
index a8f125f12dd1977941a62df955371e774df5485b..b35a662f17b5005ab3a3228c52e897f9fe0166d0 100644 (file)
@@ -113,7 +113,8 @@ bool ExplicitRewriteDescriptor<DT, ValueType, Get>::performOnModule(Module &M) {
 
 template <RewriteDescriptor::Type DT, typename ValueType,
           ValueType *(llvm::Module::*Get)(StringRef) const,
-          iterator_range<typename iplist<ValueType>::iterator> (llvm::Module::*Iterator)()>
+          iterator_range<typename iplist<ValueType>::iterator>
+          (llvm::Module::*Iterator)()>
 class PatternRewriteDescriptor : public RewriteDescriptor {
 public:
   const std::string Pattern;
@@ -131,7 +132,8 @@ public:
 
 template <RewriteDescriptor::Type DT, typename ValueType,
           ValueType *(llvm::Module::*Get)(StringRef) const,
-          iterator_range<typename iplist<ValueType>::iterator> (llvm::Module::*Iterator)()>
+          iterator_range<typename iplist<ValueType>::iterator>
+          (llvm::Module::*Iterator)()>
 bool PatternRewriteDescriptor<DT, ValueType, Get, Iterator>::
 performOnModule(Module &M) {
   bool Changed = false;
@@ -245,10 +247,6 @@ bool RewriteMapParser::parse(std::unique_ptr<MemoryBuffer> &MapFile,
 
 bool RewriteMapParser::parseEntry(yaml::Stream &YS, yaml::KeyValueNode &Entry,
                                   RewriteDescriptorList *DL) {
-  const std::string kRewriteTypeFunction = "function";
-  const std::string kRewriteTypeGlobalVariable = "global variable";
-  const std::string kRewriteTypeGlobalAlias = "global alias";
-
   yaml::ScalarNode *Key;
   yaml::MappingNode *Value;
   SmallString<32> KeyStorage;
@@ -267,11 +265,11 @@ bool RewriteMapParser::parseEntry(yaml::Stream &YS, yaml::KeyValueNode &Entry,
   }
 
   RewriteType = Key->getValue(KeyStorage);
-  if (RewriteType == kRewriteTypeFunction)
+  if (RewriteType.equals("function"))
     return parseRewriteFunctionDescriptor(YS, Key, Value, DL);
-  else if (RewriteType == kRewriteTypeGlobalVariable)
+  else if (RewriteType.equals("global variable"))
     return parseRewriteGlobalVariableDescriptor(YS, Key, Value, DL);
-  else if (RewriteType == kRewriteTypeGlobalAlias)
+  else if (RewriteType.equals("global alias"))
     return parseRewriteGlobalAliasDescriptor(YS, Key, Value, DL);
 
   YS.printError(Entry.getKey(), "unknown rewrite type");
@@ -282,11 +280,6 @@ bool RewriteMapParser::
 parseRewriteFunctionDescriptor(yaml::Stream &YS, yaml::ScalarNode *K,
                                yaml::MappingNode *Descriptor,
                                RewriteDescriptorList *DL) {
-  const std::string kDescriptorFieldSource = "source";
-  const std::string kDescriptorFieldTarget = "target";
-  const std::string kDescriptorFieldTransform = "transform";
-  const std::string kDescriptorFieldNaked = "naked";
-
   bool Naked = false;
   std::string Source;
   std::string Target;
@@ -312,7 +305,7 @@ parseRewriteFunctionDescriptor(yaml::Stream &YS, yaml::ScalarNode *K,
     }
 
     KeyValue = Key->getValue(KeyStorage);
-    if (KeyValue == kDescriptorFieldSource) {
+    if (KeyValue.equals("source")) {
       std::string Error;
 
       Source = Value->getValue(ValueStorage);
@@ -320,11 +313,11 @@ parseRewriteFunctionDescriptor(yaml::Stream &YS, yaml::ScalarNode *K,
         YS.printError(Field.getKey(), "invalid regex: " + Error);
         return false;
       }
-    } else if (KeyValue == kDescriptorFieldTarget) {
+    } else if (KeyValue.equals("target")) {
       Target = Value->getValue(ValueStorage);
-    } else if (KeyValue == kDescriptorFieldTransform) {
+    } else if (KeyValue.equals("transform")) {
       Transform = Value->getValue(ValueStorage);
-    } else if (KeyValue == kDescriptorFieldNaked) {
+    } else if (KeyValue.equals("naked")) {
       std::string Undecorated;
 
       Undecorated = Value->getValue(ValueStorage);
@@ -355,10 +348,6 @@ bool RewriteMapParser::
 parseRewriteGlobalVariableDescriptor(yaml::Stream &YS, yaml::ScalarNode *K,
                                      yaml::MappingNode *Descriptor,
                                      RewriteDescriptorList *DL) {
-  const std::string kDescriptorFieldSource = "source";
-  const std::string kDescriptorFieldTarget = "target";
-  const std::string kDescriptorFieldTransform = "transform";
-
   std::string Source;
   std::string Target;
   std::string Transform;
@@ -383,7 +372,7 @@ parseRewriteGlobalVariableDescriptor(yaml::Stream &YS, yaml::ScalarNode *K,
     }
 
     KeyValue = Key->getValue(KeyStorage);
-    if (KeyValue == kDescriptorFieldSource) {
+    if (KeyValue.equals("source")) {
       std::string Error;
 
       Source = Value->getValue(ValueStorage);
@@ -391,9 +380,9 @@ parseRewriteGlobalVariableDescriptor(yaml::Stream &YS, yaml::ScalarNode *K,
         YS.printError(Field.getKey(), "invalid regex: " + Error);
         return false;
       }
-    } else if (KeyValue == kDescriptorFieldTarget) {
+    } else if (KeyValue.equals("target")) {
       Target = Value->getValue(ValueStorage);
-    } else if (KeyValue == kDescriptorFieldTransform) {
+    } else if (KeyValue.equals("transform")) {
       Transform = Value->getValue(ValueStorage);
     } else {
       YS.printError(Field.getKey(), "unknown Key for Global Variable");
@@ -421,10 +410,6 @@ bool RewriteMapParser::
 parseRewriteGlobalAliasDescriptor(yaml::Stream &YS, yaml::ScalarNode *K,
                                   yaml::MappingNode *Descriptor,
                                   RewriteDescriptorList *DL) {
-  const std::string kDescriptorFieldSource = "source";
-  const std::string kDescriptorFieldTarget = "target";
-  const std::string kDescriptorFieldTransform = "transform";
-
   std::string Source;
   std::string Target;
   std::string Transform;
@@ -449,7 +434,7 @@ parseRewriteGlobalAliasDescriptor(yaml::Stream &YS, yaml::ScalarNode *K,
     }
 
     KeyValue = Key->getValue(KeyStorage);
-    if (KeyValue == kDescriptorFieldSource) {
+    if (KeyValue.equals("source")) {
       std::string Error;
 
       Source = Value->getValue(ValueStorage);
@@ -457,9 +442,9 @@ parseRewriteGlobalAliasDescriptor(yaml::Stream &YS, yaml::ScalarNode *K,
         YS.printError(Field.getKey(), "invalid regex: " + Error);
         return false;
       }
-    } else if (KeyValue == kDescriptorFieldTarget) {
+    } else if (KeyValue.equals("target")) {
       Target = Value->getValue(ValueStorage);
-    } else if (KeyValue == kDescriptorFieldTransform) {
+    } else if (KeyValue.equals("transform")) {
       Transform = Value->getValue(ValueStorage);
     } else {
       YS.printError(Field.getKey(), "unknown key for Global Alias");
@@ -492,7 +477,7 @@ public:
   RewriteSymbols();
   RewriteSymbols(SymbolRewriter::RewriteDescriptorList &DL);
 
-  virtual bool runOnModule(Module &M) override;
+  bool runOnModule(Module &M) override;
 
 private:
   void loadAndParseMapFiles();
@@ -509,7 +494,7 @@ RewriteSymbols::RewriteSymbols() : ModulePass(ID) {
 
 RewriteSymbols::RewriteSymbols(SymbolRewriter::RewriteDescriptorList &DL)
     : ModulePass(ID) {
-  std::swap(Descriptors, DL);
+  Descriptors.splice(Descriptors.begin(), DL);
 }
 
 bool RewriteSymbols::runOnModule(Module &M) {
@@ -532,7 +517,7 @@ void RewriteSymbols::loadAndParseMapFiles() {
 }
 
 INITIALIZE_PASS(RewriteSymbols, "rewrite-symbols", "Rewrite Symbols", false,
-                false);
+                false)
 
 ModulePass *llvm::createRewriteSymbolsPass() { return new RewriteSymbols(); }