[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