Improving llvm-projects build

Hi everyone,

I fairly regularly build LLVM (a forked up-to-date repo containing some
custom LLVM passes). But when the build is large, it takes up almost all of
my remaining RAM (~4 to 5 gigs). I usually run those builds at nights for it
to complete.

Though I would like the build to not clog up entire RAM and just use some
portion of it, so that I can also work alongside (and my system won't
freeze). My current CMAKE command is:

cmake -G Ninja -DLLVM_TARGETS_TO_BUILD="X86;AMDGPU" \
    -DLLVM_ENABLE_ASSERTIONS=ON \
    -DCMAKE_C_COMPILER=/usr/bin/clang \
    -DCMAKE_CXX_COMPILER=/usr/bin/clang++ \
    -DCMAKE_BUILD_TYPE=Debug \
    -DLLVM_CCACHE_BUILD=ON \
    -DLLVM_USE_LINKER=gold \
    -DCMAKE_EXPORT_COMPILE_COMMANDS=1 \
    ../llvm/

I found a SO answer claiming `gold` can improve upon memory usage, but I
found almost no improvement.

Are there ways to restrict memory limit during build? Also, I should
mention that I would like to build a Debug version as it is helpful.

Thank you

Hi,

Try adding:

-D LLVM_PARALLEL_LINK_JOBS=1

to your CMake invocation. This lowers the number of parallel link jobs, which (at last in my experience) tend to be the largest RAM consumers during a build.

-Dimitry

Thanks for the link, Florian.

Thanks a lot, Dimitry. I added this option and it was extremely helpful.
It limited usage of RAM to ~1.5 gigs.