<div dir="ltr">Yes.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 9, 2018 at 9:00 AM, Yuka Takahashi <span dir="ltr"><<a href="mailto:yukatkh@gmail.com" target="_blank">yukatkh@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Nico,<div><br></div><div>Thanks for your comment!</div><div><br></div><div>I do agree that this code is hacky. Do you mean to ask tablegen to generate Checkers.inc under Driver so that we can do like this? :</div><div><span class=""><div>  #define CHECKER(FULLNAME, CLASS, DESCFILE, HT, G, H)  FULLNAME ","</div></span><div>  #include "clang/Driver/Checkers.inc"</div><div>  #undef GET_CHECKERS</div></div><div><br></div><div>Cheers,</div><div>Yuka</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2018-04-07 4:28 GMT+02:00 Nico Weber <span dir="ltr"><<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Yuka,<div><br></div><div>sorry about the late review comment on this. I just happened to see that this lets Driver's Option.inc depend on StaticAnalyzer/Checker's Checker.inc. However, Driver does not depend on StaticAnalyzer/Checker. In practice, it works ok because of all tablegen targets being collected into clang-tablegen-targets and driver depending on that (<a href="http://llvm-cs.pcc.me.uk/tools/clang/CMakeLists.txt#442" target="_blank">http://llvm-cs.pcc.me.uk/tool<wbr>s/clang/CMakeLists.txt#442</a>), but it still feels a bit hacky that Driver's tablegen output depends on code generated by StaticAnalyzer/Checker. Maybe we should move Checker.td into Driver now?</div><span class="m_5915894361130716585HOEnZb"><font color="#888888"><div><br></div><div>Nico</div></font></span></div><div class="m_5915894361130716585HOEnZb"><div class="m_5915894361130716585h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 28, 2017 at 8:09 PM, Yuka Takahashi 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">Author: yamaguchi<br>
Date: Mon Aug 28 17:09:31 2017<br>
New Revision: 311958<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=311958&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=311958&view=rev</a><br>
Log:<br>
Revert "Revert r311552: [Bash-autocompletion] Add support for static analyzer flags"<br>
<br>
This reverts commit 7c46b80c022e18d43c1fdafb117b0c<wbr>409c5a6d1e.<br>
<br>
r311552 broke lld buildbot because I've changed OptionInfos type from<br>
ArrayRef to vector. However the bug is fixed, so I'll commit this again.<br>
<br>
Modified:<br>
    cfe/trunk/include/clang/Driver<wbr>/CC1Options.td<br>
    cfe/trunk/lib/Driver/DriverOpt<wbr>ions.cpp<br>
    cfe/trunk/test/Driver/autocomp<wbr>lete.c<br>
<br>
Modified: cfe/trunk/include/clang/Driver<wbr>/CC1Options.td<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=311958&r1=311957&r2=311958&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/cfe/trunk/include/clang/<wbr>Driver/CC1Options.td?rev=31195<wbr>8&r1=311957&r2=311958&view=<wbr>diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/include/clang/Driver<wbr>/CC1Options.td (original)<br>
+++ cfe/trunk/include/clang/Driver<wbr>/CC1Options.td Mon Aug 28 17:09:31 2017<br>
@@ -99,7 +99,19 @@ def analyzer_stats : Flag<["-"], "analyz<br>
   HelpText<"Print internal analyzer statistics.">;<br>
<br>
 def analyzer_checker : Separate<["-"], "analyzer-checker">,<br>
-  HelpText<"Choose analyzer checkers to enable">;<br>
+  HelpText<"Choose analyzer checkers to enable">,<br>
+  ValuesCode<[{<br>
+    const char *Values =<br>
+    #define GET_CHECKERS<br>
+    #define CHECKER(FULLNAME, CLASS, DESCFILE, HT, G, H)  FULLNAME ","<br>
+    #include "clang/StaticAnalyzer/Checkers<wbr>/Checkers.inc"<br>
+    #undef GET_CHECKERS<br>
+    #define GET_PACKAGES<br>
+    #define PACKAGE(FULLNAME, G, D)  FULLNAME ","<br>
+    #include "clang/StaticAnalyzer/Checkers<wbr>/Checkers.inc"<br>
+    #undef GET_PACKAGES<br>
+    ;<br>
+  }]>;<br>
 def analyzer_checker_EQ : Joined<["-"], "analyzer-checker=">,<br>
   Alias<analyzer_checker>;<br>
<br>
<br>
Modified: cfe/trunk/lib/Driver/DriverOpt<wbr>ions.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/DriverOptions.cpp?rev=311958&r1=311957&r2=311958&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/cfe/trunk/lib/Driver/Dri<wbr>verOptions.cpp?rev=311958&r1=3<wbr>11957&r2=311958&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/lib/Driver/DriverOpt<wbr>ions.cpp (original)<br>
+++ cfe/trunk/lib/Driver/DriverOpt<wbr>ions.cpp Mon Aug 28 17:09:31 2017<br>
@@ -11,6 +11,7 @@<br>
 #include "llvm/ADT/STLExtras.h"<br>
 #include "llvm/Option/OptTable.h"<br>
 #include "llvm/Option/Option.h"<br>
+#include <cassert><br>
<br>
 using namespace clang::driver;<br>
 using namespace clang::driver::options;<br>
@@ -40,5 +41,13 @@ public:<br>
 }<br>
<br>
 std::unique_ptr<OptTable> clang::driver::createDriverOpt<wbr>Table() {<br>
-  return llvm::make_unique<DriverOptTab<wbr>le>();<br>
+  auto Result = llvm::make_unique<DriverOptTab<wbr>le>();<br>
+  // Options.inc is included in DriverOptions.cpp, and calls OptTable's<br>
+  // addValues function.<br>
+  // Opt is a variable used in the code fragment in Options.inc.<br>
+  OptTable &Opt = *Result;<br>
+#define OPTTABLE_ARG_INIT<br>
+#include "clang/Driver/Options.inc"<br>
+#undef OPTTABLE_ARG_INIT<br>
+  return std::move(Result);<br>
 }<br>
<br>
Modified: cfe/trunk/test/Driver/autocomp<wbr>lete.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/autocomplete.c?rev=311958&r1=311957&r2=311958&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/cfe/trunk/test/Driver/au<wbr>tocomplete.c?rev=311958&r1=311<wbr>957&r2=311958&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/test/Driver/autocomp<wbr>lete.c (original)<br>
+++ cfe/trunk/test/Driver/autocomp<wbr>lete.c Mon Aug 28 17:09:31 2017<br>
@@ -93,3 +93,5 @@<br>
 // WARNING-NEXT: -Wmax-unsigned-zero<br>
 // RUN: %clang --autocomplete=-Wno-invalid-pp<wbr>- | FileCheck %s -check-prefix=NOWARNING<br>
 // NOWARNING: -Wno-invalid-pp-token<br>
+// RUN: %clang --autocomplete=-analyzer-check<wbr>er, | FileCheck %s -check-prefix=ANALYZER<br>
+// ANALYZER: unix.Malloc<br>
<br>
<br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">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>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>