--- lib/Lex/Pragma.cpp	(revision 129637)
+++ lib/Lex/Pragma.cpp	(copie de travail)
@@ -898,8 +898,7 @@
       return;
     }
 
-    std::string WarningName(Literal.GetString(),
-                            Literal.GetString()+Literal.GetStringLength());
+    llvm::StringRef WarningName(Literal.GetString(), Literal.GetStringLength());
 
     if (WarningName.size() < 3 || WarningName[0] != '-' ||
         WarningName[1] != 'W') {
@@ -908,8 +907,7 @@
       return;
     }
 
-    llvm::StringRef WarningNameRef(WarningName.c_str()+2, WarningName.size()-2);
-    if (PP.getDiagnostics().setDiagnosticGroupMapping(WarningNameRef,
+    if (PP.getDiagnostics().setDiagnosticGroupMapping(WarningName.substr(2),
                                                       Map, DiagLoc))
       PP.Diag(StrToks[0].getLocation(),
               diag::warn_pragma_diagnostic_unknown_warning) << WarningName;
