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

Lou Wynn via cfe-dev cfe-dev at lists.llvm.org
Tue Sep 18 19:06:25 PDT 2018


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/IntegerOverflowChecker.cpp.o
[ 96%] Linking CXX static library
../../../../../lib/libclangStaticAnalyzerCheckers.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 <mailto: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/clangStaticAnalyzerCheckers.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 <mailto: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/20180918/3ca4d372/attachment.html>


More information about the cfe-dev mailing list