Hello,<br><br>I have a few patches in the queues already that I have just regenerating against ToT.<br><br>1. A simple patch in StringRef.h:<br>> put assertions in StringRef(char const*) because it should not be constructed from a null pointer (strlen has undefined behavior)<br>
> replace memcmp with a version with asserts to against guard against null arguments (because the default constructor of StringRef creates a null pointer)<br><br>No functional change expected, merely an easier diagnostic (it sure helped me track down a bug I had). I didn't notice any slow-down on my Debug+Assert build playing the tests.<br>
<br>This can be found in llvm_stringref_undefined_behavior.diff.<br><br><br>2. A StringRef-ication of the DiagnosticIDs API and internals.<br><br>Simple grunt work, no functional change expected. I took the opportunity to make some cleanup in lib/Lex/Pragma.cpp and lib/Frontend/Warnings.cpp taking advantages of StringRef.<br>
<br>This can be found in clang_stringrefize_diagnostics.diff<br><br><br>3. A simple new diagnostic for non-virtual destructor in polymorphic classes.<br><br>The difference with the existing diagnostic is that instead of warning at the definition of the class, it instead warns when invoking `delete` on it. Hopefully reducing the number of false positives.<br>
<br>Unfortunately it is incomplete since a "final" class should not trigger this warning but this information does not seem to be available in the AST. I've put a FIXME near the code.<br><br>It is interestingly a very small patch, which can be found in clang_non_virtual_destructor.diff<br>
<br><br>The tests passes for all 3 patches (whether individually or as a group), at least as much as tests ever passed on my system (~80 unexpected failures because of my msys environment).<br><br>It would be great if someone with commit access could review them and get them in, it's getting difficult to produce meaningful diff with all those changes creeping in.<br>
<br>-- Matthieu.<br>