<div dir="ltr">Hm, that's a lot of overhead. Granted, it's a synthetic benchmark, but I think it'd be good to try this on some real codebase to make sure it really is negligible overhead in real-world scenarios.</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 25, 2017 at 3:09 PM, Roman Lebedev via Phabricator via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">lebedev.ri added a comment.<br>
<span class=""><br>
In <a href="https://reviews.llvm.org/D38954#906900" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D38954#906900</a>, @thakis wrote:<br>
<br>
> Can you build some large-ish codebase (say, LLVM) with and without this patch and make sure that this doesn't measurably add to build perf? (With the warning turned on, obviously.)<br>
><br>
> Other than that, this looks good to me.<br>
<br>
<br>
</span>Very contrived example:<br>
<br>
  $ head -n 3 test.cpp<br>
  #include <cstddef><br>
<br>
  int main(int argc, char* argv[]) {<br>
  $ perl -e 'print "if(argv == NULL) return 1;\n"x1000000; print "\n"' >> test.cpp<br>
  $ tail -n 2 test.cpp<br>
  }<br>
<br>
So this is a file with 1 million comparisons of pointer with `NULL`.<br>
<br>
  $ time clang -fsyntax-only -Wzero-as-null-pointer-<wbr>constant -std=c++11 test.cpp -w<br>
<br>
  real    0m8.197s<br>
  user    0m8.071s<br>
  sys     0m0.124s<br>
  $ time clang -fsyntax-only -Wzero-as-null-pointer-<wbr>constant -std=c++11 test.cpp -w<br>
<br>
  real    0m7.881s<br>
  user    0m7.728s<br>
  sys     0m0.152s<br>
  $ time clang -fsyntax-only -Wzero-as-null-pointer-<wbr>constant -std=c++11 test.cpp -w<br>
<br>
  real    0m7.212s<br>
  user    0m7.063s<br>
  sys     0m0.148s<br>
  $ time /build/llvm-build-Clang-<wbr>release/bin/clang -fsyntax-only -Wzero-as-null-pointer-<wbr>constant -std=c++11 test.cpp -w<br>
<br>
  real    0m11.200s<br>
  user    0m11.070s<br>
  sys     0m0.128s<br>
  $ time /build/llvm-build-Clang-<wbr>release/bin/clang -fsyntax-only -Wzero-as-null-pointer-<wbr>constant -std=c++11 test.cpp -w<br>
<br>
  real    0m11.141s<br>
  user    0m11.019s<br>
  sys     0m0.121s<br>
  $ time /build/llvm-build-Clang-<wbr>release/bin/clang -fsyntax-only -Wzero-as-null-pointer-<wbr>constant -std=c++11 test.cpp -w<br>
<br>
  real    0m11.254s<br>
  user    0m11.127s<br>
  sys     0m0.126s<br>
<br>
So there absolutely is some penalty, but it does not appear to be huge, at least on this contrived example.<br>
I *could* try benchmark-building llvm, but i'm still sporadically experiencing a crash <<a href="https://bugs.llvm.org/show_bug.cgi?id=34480" rel="noreferrer" target="_blank">https://bugs.llvm.org/show_<wbr>bug.cgi?id=34480</a>>, so the timings will not be comparable.<br>
<span class=""><br>
<br>
<br>
================<br>
Comment at: test/SemaCXX/warn-zero-<wbr>nullptr.cpp:68<br>
+ public:<br>
+// FIXME: this one should *NOT* warn.<br>
+  explicit TemplateClass1(int a, T default_value = 0) {} // expected-warning{{zero as null pointer constant}} expected-warning{{zero as null pointer constant}}<br>
----------------<br>
</span><span class="">thakis wrote:<br>
> Did you mean to fix this before commit?<br>
</span>Eh, i'm conflicted about this one.<br>
This is more of "for future consideration"<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
Repository:<br>
  rL LLVM<br>
<br>
<a href="https://reviews.llvm.org/D38954" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D38954</a><br>
<br>
<br>
<br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><br>
</div></div></blockquote></div><br></div>