[Bug tree-optimization/93084] [10 regression] Infinite loop in ipa-cp when building clang with LTO+PGO

Jan Hubicka hubicka@ucw.cz
Mon Dec 30 11:01:00 GMT 2019


> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93084
> 
> --- Comment #6 from fxue at gcc dot gnu.org ---
> Could you share how you build clang with PGO, and train workload?
It needs a lot of patience.   If you have patch I can try it since I
still have the train data and corresponding gcc tree.

I do the following. Pretty much imitating what
utils/collect_and_build_with_pgo.py does.

First I build instrumented compiler and train it on testsuite (it takes
a long time and probably could be omitted)

cmake -G Ninja /aux/hubicka/llvm \
  -DCLANG_TABLEGEN=/aux/hubicka/llvm/out/stage1/bin/clang-tblgen \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_CXX_COMPILER=/aux/hubicka/trunk-install/bin/g++ \
  -DCMAKE_C_COMPILER=/aux/hubicka/trunk-install/bin/gcc \
  -DCMAKE_INSTALL_PREFIX=/aux/hubicka/llvm10-install-gccfdolto \
  -DLLVM_BINUTILS_INCDIR=/aux/hubicka/binutils-install/include/ \
  -DLLVM_BUILD_RUNTIME=No \
  -DLLVM_TABLEGEN=/aux/hubicka/llvm/out/stage1/bin/llvm-tblgen \
  -DLLVM_TARGETS_TO_BUILD=X86 \
  -DCMAKE_RANLIB=/aux/hubicka/trunk-install/bin/gcc-ranlib \
  -DCMAKE_AR=/aux/hubicka/trunk-install/bin/gcc-ar \
  -DCMAKE_C_FLAGS="-O2 -flto=auto -flifetime-dse=1 -fno-semantic-interposition -fprofile-generate" \ 
  -DCMAKE_CXX_FLAGS="-O2 -flto=auto -flifetime-dse=1 -fno-semantic-interposition -fprofile-generate" \
  -DLLVM_PARALLEL_LINK_JOBS=1
ninja clang lld
ninja check-llvm check-clang

next I do train build in new directory.

cmake -G Ninja /aux/hubicka/llvm \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_CXX_COMPILER=/aux/hubicka/llvm/out/instrumented-gcc/bin/clang++ \
  -DCMAKE_C_COMPILER=/aux/hubicka/llvm/out/instrumented-gcc/bin/clang
ninja all

then I tar gcda files collected in the first build directory

    cd /aux/hubicka/llvm/instrumented-gcc/
    tar czvf ../clang-profile.tgz `find . -name "*.gcda"`

and do final build supplying the gcda files.

tar xzvf ../clang-profile.tgz
cmake -G Ninja /aux/hubicka/llvm \
  -DCLANG_TABLEGEN=/aux/hubicka/llvm/out/stage1/bin/clang-tblgen \
  -DCMAKE_BUILD_TYPE=Release  -DCMAKE_C_FLAGS=-Wno-backend-plugin  \
  -DLLVM_TABLEGEN=/aux/hubicka/llvm/out/stage1/bin/llvm-tblgen \
  -DCMAKE_RANLIB=/aux/hubicka/trunk-install/bin/gcc-ranlib \
  -DCMAKE_AR=/aux/hubicka/trunk-install/bin/gcc-ar \
  -DCMAKE_C_FLAGS="-O2 -fno-semantic-interposition -fprofile-use -Wno-missing-profile -flto=auto -flifetime-dse=1  -fprofile-correction -Wno-error" \
  -DCMAKE_CXX_FLAGS="-O2 -fno-semantic-interposition -fprofile-use -Wno-missing-profile -flifetime-dse=1  -flto=auto -fprofile-correction -Wno-error" \
  -DLLVM_TARGETS_TO_BUILD=X86 \
  -DCMAKE_CXX_COMPILER=/aux/hubicka/trunk-install/bin/g++ \
  -DCMAKE_C_COMPILER=/aux/hubicka/trunk-install/bin/gcc  \
  -DLLVM_BINUTILS_INCDIR=/aux/hubicka/binutils-install/include/ \
  -DLLVM_PARALLEL_LINK_JOBS=1
ninja all



More information about the Gcc-bugs mailing list