[cfe-dev] speed up clang build after modifying checker code of static analyzer

Kristóf Umann via cfe-dev cfe-dev at lists.llvm.org
Wed Sep 19 14:58:47 PDT 2018


Uhh. I never encountered that error, so I can't offer anything that google
can not :(

All the other tips however others and I gave should speed up compilation
and linking, so gcc is fine if you are having a lot of trouble building
with clang, especially if linking is the most ime consuming part. Though it
would be beneficial to get to the bottom of this if you have the time.

One more thing, building shared libraries will make linking a whole lot
faster (the resulting binary will be slower, but that won't hurt much in a
debug build anyway) -DBUILD_SHARED_LIBS=ON.

On 19 Sep 2018 23:44, "Lou Wynn" <lewisurn at gmail.com> wrote:

~/work/git-repos/llvm/release-git$ which clang
/usr/bin/clang

~/work/git-repos/llvm/release-git$ clang -###
clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin


I also tried with a self-built clang, and got the same error.


Thanks,
Lou


On 09/19/2018 02:41 PM, Kristóf Umann wrote:

Are you using a prebuild binary? Are you sure you're using the clang you'd
like to compile with? (`which clang`?)

On 19 Sep 2018 23:38, "Lou Wynn" <lewisurn at gmail.com> wrote:

> When I use clang to compile (gcc is fine), I got cmake error:
>
> -- Performing Test HAVE_CXX_ATOMICS_WITHOUT_LIB
> -- Performing Test HAVE_CXX_ATOMICS_WITHOUT_LIB - Failed
> -- Looking for __atomic_fetch_add_4 in atomic
> -- Looking for __atomic_fetch_add_4 in atomic - found
> -- Performing Test HAVE_CXX_ATOMICS_WITH_LIB
> -- Performing Test HAVE_CXX_ATOMICS_WITH_LIB - Failed
> CMake Error at cmake/modules/CheckAtomic.cmake:50 (message):
>   Host compiler must support std::atomic!
> Call Stack (most recent call first):
>   cmake/config-ix.cmake:323 (include)
>   CMakeLists.txt:577 (include)
>
>
> How can I fix it? I checkout source code from the git mirror. I'm running
> ubuntu 16.04.1 LTS.
>
>
> Thanks,
> Lou
>
>
> On 09/19/2018 12:02 AM, Kristóf Umann wrote:
>
> Hi!
>
> A couple tips I can give:
>   * 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.
>   * 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.
>
> 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.
>
> I know because I made that mistake :).
>
> Cheers,
> Kristóf Umann
>
>
> On 19 Sep 2018 04:06, "Lou Wynn via cfe-dev" <cfe-dev at lists.llvm.org>
> wrote:
>
> I do need debug information because tracing code is a great way for me to
> get familiarized with clang and the static analyzer.
>
> 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.
>
> [ 96%] Built target clangStaticAnalyzerCore
>
> Scanning dependencies of target clangStaticAnalyzerCheckers
> [ 96%] Building CXX object tools/clang/lib/StaticAnalyzer
> /Checkers/CMakeFiles/clangStaticAnalyzerCheckers.dir/Integer
> OverflowChecker.cpp.o
> [ 96%] Linking CXX static library ../../../../../lib/libclangSta
> ticAnalyzerCheckers.a
> [100%] Built target clangStaticAnalyzerCheckers
> [100%] Linking CXX executable ../../../../bin/clang  <-- this take most
> time now
> [100%] Built target clang
>
> real    2m22.707s
> user    2m10.812s
> sys     0m14.936s
>
> Thanks,
> Lou
>
> On 09/18/2018 06:25 PM, Reid Kleckner wrote:
>
> 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.
>
> 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.
>
> On Tue, Sep 18, 2018 at 5:42 PM Lou Wynn via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>
>> Hi,
>>
>> I'm writing my first clang static analyzer checker. I wrote the scaffold
>> code to add the checker into clang. But every time when I change the
>> checker implementation code, the build process after generating the
>> checker object file is very slow. It's over 4 minutes in my laptop,
>> which has the i7-6820HQ four core CPU and 32G memory. The generated
>> clang binary is over 2G. The affected artifacts are as follows:
>>
>> ---------------------
>>
>> Scanning dependencies of target clangStaticAnalyzerCheckers
>> [ 95%] Building CXX object
>> tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/clangStat
>> icAnalyzerCheckers.dir/IntegerOverflowChecker.cpp.o
>> [ 95%] Linking CXX static library
>> ../../../../../lib/libclangStaticAnalyzerCheckers.a
>> [ 98%] Built target clangStaticAnalyzerCheckers
>> [ 98%] Linking CXX executable ../../../../bin/arcmt-test
>> [ 98%] Linking CXX executable ../../../../bin/clang-check
>> [ 98%] Linking CXX executable ../../../../bin/clang
>> [ 98%] Linking CXX shared library ../../../../lib/libclang.so
>> [ 98%] Built target arcmt-test   <--- this seems to take the most time
>> [ 98%] Built target libclang
>> [ 98%] Linking CXX executable ../../../../bin/c-arcmt-test
>> [ 98%] Linking CXX executable ../../../../bin/c-index-test
>> [ 98%] Built target c-arcmt-test
>> [ 98%] Built target clang-check
>> [ 98%] Built target clang
>> [100%] Built target c-index-test
>>
>> real    4m23.014s
>> user    8m4.032s
>> sys     0m51.992s
>>
>> ---------------------
>>
>> How can I speed up the build process so that I don't have to wait for
>> almost 4.5 minute for a single change in the implementation code? I only
>> work on the checker of the static analyzer.
>>
>> --
>> Thanks,
>> Lou
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180919/d8bcbf2c/attachment.html>


More information about the cfe-dev mailing list