diff --git a/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp
index e9a612c..98109fd 100644
--- a/lib/Driver/ToolChain.cpp
+++ b/lib/Driver/ToolChain.cpp
@@ -208,8 +208,8 @@
   }
 }
 
-void ToolChain::AddClangCXXStdlibLibArgs(const ArgList &Args,
-                                         ArgStringList &CmdArgs) const {
+void ToolChain::AddCXXStdlibLibArgs(const ArgList &Args,
+                                    ArgStringList &CmdArgs) const {
   CXXStdlibType Type = GetCXXStdlibType(Args);
 
   switch (Type) {
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp
index 865f290..c1b44e4 100644
--- a/lib/Driver/ToolChains.cpp
+++ b/lib/Driver/ToolChains.cpp
@@ -578,7 +578,7 @@
   setTarget(iPhoneVersion, Major, Minor, Micro);
 }
 
-void DarwinClang::AddClangCXXStdlibLibArgs(const ArgList &Args,
+void DarwinClang::AddCXXStdlibLibArgs(const ArgList &Args,
                                       ArgStringList &CmdArgs) const {
   CXXStdlibType Type = GetCXXStdlibType(Args);
 
diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h
index f806e9f..6062855 100644
--- a/lib/Driver/ToolChains.h
+++ b/lib/Driver/ToolChains.h
@@ -223,8 +223,8 @@
   virtual void AddLinkRuntimeLibArgs(const ArgList &Args,
                                      ArgStringList &CmdArgs) const;
 
-  virtual void AddClangCXXStdlibLibArgs(const ArgList &Args,
-                                        ArgStringList &CmdArgs) const;
+  virtual void AddCXXStdlibLibArgs(const ArgList &Args,
+                                   ArgStringList &CmdArgs) const;
 
   /// }
 };
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 6d66af5..1e1af35 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -115,7 +115,7 @@
 
     // Handle reserved library options.
     if (A.getOption().matches(options::OPT_Z_reserved_lib_stdcxx)) {
-      TC.AddClangCXXStdlibLibArgs(Args, CmdArgs);
+      TC.AddCXXStdlibLibArgs(Args, CmdArgs);
     } else
       A.renderAsInput(Args, CmdArgs);
   }
@@ -2540,7 +2540,7 @@
   if (!Args.hasArg(options::OPT_nostdlib) &&
       !Args.hasArg(options::OPT_nodefaultlibs)) {
     if (getToolChain().getDriver().CCCIsCXX)
-      getToolChain().AddClangCXXStdlibLibArgs(Args, CmdArgs);
+      getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
 
     // link_ssp spec is empty.
 
@@ -2802,7 +2802,7 @@
   if (!Args.hasArg(options::OPT_nostdlib) &&
       !Args.hasArg(options::OPT_nodefaultlibs)) {
     if (D.CCCIsCXX) {
-      getToolChain().AddClangCXXStdlibLibArgs(Args, CmdArgs);
+      getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
       CmdArgs.push_back("-lm");
     }
 
@@ -2932,7 +2932,7 @@
   if (!Args.hasArg(options::OPT_nostdlib) &&
       !Args.hasArg(options::OPT_nodefaultlibs)) {
     if (D.CCCIsCXX) {
-      getToolChain().AddClangCXXStdlibLibArgs(Args, CmdArgs);
+      getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
       CmdArgs.push_back("-lm");
     }
     // FIXME: For some reason GCC passes -lgcc and -lgcc_s before adding
@@ -3067,7 +3067,7 @@
   if (!Args.hasArg(options::OPT_nostdlib) &&
       !Args.hasArg(options::OPT_nodefaultlibs)) {
     if (D.CCCIsCXX) {
-      getToolChain().AddClangCXXStdlibLibArgs(Args, CmdArgs);
+      getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
       CmdArgs.push_back("-lm");
     }
 
@@ -3202,7 +3202,7 @@
     }
 
     if (D.CCCIsCXX) {
-      getToolChain().AddClangCXXStdlibLibArgs(Args, CmdArgs);
+      getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
       CmdArgs.push_back("-lm");
     }
 
