Hello,<br><br>This patch StringRefize DiagnosticIDs API (and internals).<br><br>I had some troubles because of macro expansion: not easy to see that a StringRef was built from a null pointer and track down the crash... but could the issue via an assert in the StringRef class itself. I've submitted the patch for this already, hopefully it'll get applied so that others have an easier time figuring out what's going wrong when they introduce StringRef.<br>
<br>Apart from this, there are two functions that could perhaps benefit from deeper changes, in the clients of DiagnosticIDs:<br>- ProcessWarningOptions in lib/FrontEnd/Warnings.cpp, which deals with processing the -W family of options. There is a lot of manipulation of OptStart / OptEnd pointers that I think could be easily translated into using StringRef<br>
- PragmaDiagnosticHandler::HandlePragma in lib/Lex/Pragma.cpp, I believe WarningName could be a StringRef, but I need to investigate what Literal.GetString returns to be sure it's possible<br><br>I'll handle this as two follow-up patches, dependent on this one, unless you think it's better to merge the changes into this patch.<br>
<br>Please review.<br>Matthieu.<br>