<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p><tt><font size="+1">~/work/git-repos/llvm/release-git$ which
          clang<br>
          /usr/bin/clang<br>
        </font></tt></p>
    <p><tt><font size="+1">~/work/git-repos/llvm/release-git$ clang -###<br>
          clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)<br>
          Target: x86_64-pc-linux-gnu<br>
          Thread model: posix<br>
          InstalledDir: /usr/bin</font></tt></p>
    <p><tt><font size="+1"><br>
        </font></tt></p>
    <p><tt><font size="+1">I also tried with a self-built clang, and got
          the same error.</font></tt></p>
    <p><tt><font size="+1"></font></tt><br>
    </p>
    <pre class="moz-signature" cols="72">Thanks,
Lou
</pre>
    <div class="moz-cite-prefix"><br>
      On 09/19/2018 02:41 PM, Kristóf Umann wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAGcXOD7AcuQoQw54HT8Znxjnx1qHLTvwFNXstjqa9JOdNyON_A@mail.gmail.com">
      <div dir="auto">Are you using a prebuild binary? Are you sure
        you're using the clang you'd like to compile with? (`which
        clang`?)</div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On 19 Sep 2018 23:38, "Lou Wynn" <<a
            href="mailto:lewisurn@gmail.com" moz-do-not-send="true">lewisurn@gmail.com</a>>
          wrote:<br type="attribution">
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div text="#000000" bgcolor="#FFFFFF">
              <p><font size="+1">When I use clang to compile (gcc is
                  fine), I got cmake error:<br>
                </font></p>
              <p><tt><font size="+1">-- Performing Test
                    HAVE_CXX_ATOMICS_WITHOUT_LIB<br>
                    -- Performing Test HAVE_CXX_ATOMICS_WITHOUT_LIB -
                    Failed<br>
                    -- Looking for __atomic_fetch_add_4 in atomic<br>
                    -- Looking for __atomic_fetch_add_4 in atomic -
                    found<br>
                    -- Performing Test HAVE_CXX_ATOMICS_WITH_LIB<br>
                    -- Performing Test HAVE_CXX_ATOMICS_WITH_LIB -
                    Failed<br>
                    CMake Error at cmake/modules/CheckAtomic.<wbr>cmake:50
                    (message):<br>
                      Host compiler must support std::atomic!<br>
                    Call Stack (most recent call first):<br>
                      cmake/config-ix.cmake:323 (include)<br>
                      CMakeLists.txt:577 (include)</font></tt></p>
              <p><tt><font size="+1"><br>
                  </font></tt></p>
              <p><font size="+1">How can I fix it? </font><font
                  size="+1"><font size="+1">I checkout source code from
                    the git mirror. I'm running ubuntu 16.04.1 LTS.<br>
                  </font></font></p>
              <p><br>
              </p>
              <pre class="m_8167128743136673462moz-signature" cols="72">Thanks,
Lou
 </pre>
              <div class="m_8167128743136673462moz-cite-prefix">On
                09/19/2018 12:02 AM, Kristóf Umann wrote:<br>
              </div>
              <blockquote type="cite">
                <div dir="auto">Hi!
                  <div dir="auto"><br>
                  </div>
                  <div dir="auto">A couple tips I can give:</div>
                  <div dir="auto">  * Compile with clang. Make sure you
                    use a release build for this purpose, optimized with
                    LTO. I usually just download a prebuild binary and
                    go with that. Clang tends to be about 2-3 times
                    faster than gcc.</div>
                  <div dir="auto">  * For linking, use LLD, a linker
                    part of the LLVM family. Especially with -j8, it
                    will make a significant difference. Your next best
                    option is gnu gold.</div>
                  <div dir="auto"><br>
                  </div>
                  <div dir="auto">Great to hear about a new checker! I'd
                    encourage you to upload your work in progress early
                    on to phabricator, even if it only contains an empty
                    callback, because an entire working solution (if
                    lengthy enough) can drastically increase the time it
                    takes to review it.</div>
                  <div dir="auto"><br>
                  </div>
                  <div dir="auto">I know because I made that mistake :).</div>
                  <div dir="auto"><br>
                  </div>
                  <div dir="auto">Cheers,</div>
                  <div dir="auto">Kristóf Umann</div>
                  <br>
                  <div class="gmail_extra" dir="auto"><br>
                    <div class="gmail_quote">On 19 Sep 2018 04:06, "Lou
                      Wynn via cfe-dev" <<a
                        href="mailto:cfe-dev@lists.llvm.org"
                        target="_blank" moz-do-not-send="true">cfe-dev@lists.llvm.org</a>>
                      wrote:<br type="attribution">
                      <blockquote class="m_8167128743136673462quote"
                        style="margin:0 0 0 .8ex;border-left:1px #ccc
                        solid;padding-left:1ex">
                        <div text="#000000" bgcolor="#FFFFFF">
                          <p>I do need debug information because tracing
                            code is a great way for me to get
                            familiarized with clang and the static
                            analyzer.</p>
                          <p>I've managed to run "make -j8 clang" at the
                            top of the build directory. However, the
                            final linking process takes too long now. Is
                            there a way to build a thin version that
                            only runs the static analyzer? I think that
                            I can at least cut the code gen part out of
                            the build process but have no idea how. The
                            only command I run is "clang -cc1 -analyze
                            -analyzer-checker=xxx" It'd be great if I
                            could reduce the final object file to few
                            hundred megabytes.<br>
                          </p>
                          <p><tt>[ 96%] Built target
                              clangStaticAnalyzerCore</tt></p>
                          <div class="m_8167128743136673462quoted-text"><tt><br>
                            </tt><tt>Scanning dependencies of target
                              clangStaticAnalyzerCheckers</tt><tt><br>
                            </tt></div>
                          <tt>[ 96%] Building CXX object
                            tools/clang/lib/StaticAnalyzer<wbr>/Checkers/CMakeFiles/clangStat<wbr>icAnalyzerCheckers.dir/<wbr>IntegerOverflowChecker.cpp.o</tt><tt><br>
                          </tt><tt>[ 96%] Linking CXX static library
                            ../../../../../lib/libclangSta<wbr>ticAnalyzerCheckers.a</tt><tt><br>
                          </tt><tt>[100%] Built target
                            clangStaticAnalyzerCheckers</tt><tt><br>
                          </tt><tt>[100%] Linking CXX executable
                            ../../../../bin/clang  <-- this take most
                            time now</tt><tt><br>
                          </tt><tt>[100%] Built target clang</tt><tt><br>
                          </tt><tt><br>
                          </tt><tt>real    2m22.707s</tt><tt><br>
                          </tt><tt>user    2m10.812s</tt><tt><br>
                          </tt><tt>sys     0m14.936s</tt><tt><br>
                          </tt><br>
                          <pre class="m_8167128743136673462m_-5433425466101596033moz-signature" cols="72">Thanks,
Lou
</pre>
                          <div class="m_8167128743136673462elided-text">
                            <div
                              class="m_8167128743136673462m_-5433425466101596033moz-cite-prefix">On
                              09/18/2018 06:25 PM, Reid Kleckner wrote:<br>
                            </div>
                            <blockquote type="cite">
                              <div dir="ltr">If the clang binary is 2GB,
                                I would recommend building in Release
                                mode with assertions enabled. Linking
                                binaries without debug information is
                                dramatically faster. This means passing
                                -DCMAKE_BUILD_TYPE=Release
                                -DLLVM_ENABLE_ASSERTIONS=ON to cmake.
                                <div><br>
                                  If you use debug information, I
                                  recommend explicitly building one
                                  target, the target you are testing
                                  (usually clang), until you feel the
                                  need to run the complete clang test
                                  suite.</div>
                              </div>
                              <br>
                              <div class="gmail_quote">
                                <div dir="ltr">On Tue, Sep 18, 2018 at
                                  5:42 PM Lou Wynn via cfe-dev <<a
                                    href="mailto:cfe-dev@lists.llvm.org"
                                    target="_blank"
                                    moz-do-not-send="true">cfe-dev@lists.llvm.org</a>>
                                  wrote:<br>
                                </div>
                                <blockquote class="gmail_quote"
                                  style="margin:0 0 0
                                  .8ex;border-left:1px #ccc
                                  solid;padding-left:1ex">Hi,<br>
                                  <br>
                                  I'm writing my first clang static
                                  analyzer checker. I wrote the scaffold<br>
                                  code to add the checker into clang.
                                  But every time when I change the<br>
                                  checker implementation code, the build
                                  process after generating the<br>
                                  checker object file is very slow. It's
                                  over 4 minutes in my laptop,<br>
                                  which has the i7-6820HQ four core CPU
                                  and 32G memory. The generated<br>
                                  clang binary is over 2G. The affected
                                  artifacts are as follows:<br>
                                  <br>
                                  ---------------------<br>
                                  <br>
                                  Scanning dependencies of target
                                  clangStaticAnalyzerCheckers<br>
                                  [ 95%] Building CXX object<br>
                                  tools/clang/lib/StaticAnalyzer<wbr>/Checkers/CMakeFiles/clangStat<wbr>icAnalyzerCheckers.dir/<wbr>IntegerOverflowChecker.cpp.o<br>
                                  [ 95%] Linking CXX static library<br>
                                  ../../../../../lib/libclangSta<wbr>ticAnalyzerCheckers.a<br>
                                  [ 98%] Built target
                                  clangStaticAnalyzerCheckers<br>
                                  [ 98%] Linking CXX executable
                                  ../../../../bin/arcmt-test<br>
                                  [ 98%] Linking CXX executable
                                  ../../../../bin/clang-check<br>
                                  [ 98%] Linking CXX executable
                                  ../../../../bin/clang<br>
                                  [ 98%] Linking CXX shared library
                                  ../../../../lib/libclang.so<br>
                                  [ 98%] Built target arcmt-test  
                                  <--- this seems to take the most
                                  time<br>
                                  [ 98%] Built target libclang<br>
                                  [ 98%] Linking CXX executable
                                  ../../../../bin/c-arcmt-test<br>
                                  [ 98%] Linking CXX executable
                                  ../../../../bin/c-index-test<br>
                                  [ 98%] Built target c-arcmt-test<br>
                                  [ 98%] Built target clang-check<br>
                                  [ 98%] Built target clang<br>
                                  [100%] Built target c-index-test<br>
                                  <br>
                                  real    4m23.014s<br>
                                  user    8m4.032s<br>
                                  sys     0m51.992s<br>
                                  <br>
                                  ---------------------<br>
                                  <br>
                                  How can I speed up the build process
                                  so that I don't have to wait for<br>
                                  almost 4.5 minute for a single change
                                  in the implementation code? I only<br>
                                  work on the checker of the static
                                  analyzer.<br>
                                  <br>
                                  -- <br>
                                  Thanks,<br>
                                  Lou<br>
                                  <br>
                                  ______________________________<wbr>_________________<br>
                                  cfe-dev mailing list<br>
                                  <a
                                    href="mailto:cfe-dev@lists.llvm.org"
                                    target="_blank"
                                    moz-do-not-send="true">cfe-dev@lists.llvm.org</a><br>
                                  <a
                                    href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
                                    rel="noreferrer" target="_blank"
                                    moz-do-not-send="true">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
                                </blockquote>
                              </div>
                            </blockquote>
                            <br>
                          </div>
                        </div>
                        <br>
                        ______________________________<wbr>_________________<br>
                        cfe-dev mailing list<br>
                        <a href="mailto:cfe-dev@lists.llvm.org"
                          target="_blank" moz-do-not-send="true">cfe-dev@lists.llvm.org</a><br>
                        <a
                          href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
                          rel="noreferrer" target="_blank"
                          moz-do-not-send="true">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
                        <br>
                      </blockquote>
                    </div>
                    <br>
                  </div>
                </div>
              </blockquote>
              <br>
            </div>
          </blockquote>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>