https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84436

--- Comment #12 from Romain Geissler <romain.geissler at amadeus dot com> ---
Hi,

I have tried the following script directly inside docker using the official
"debian:buster" docker image, so I hope it will not require much more
dependencies than what is written here.

Tested with x86-64.

<<END_OF_SCRIPT
#!/bin/bash

set -e

# Install a few dependencies
apt-get update
apt-get install -y curl tar build-essential cmake python

LLVM_DIRECTORY=/llvm

LLVM_TAR="http://releases.llvm.org/7.0.1/llvm-7.0.1.src.tar.xz";
CLANG_TAR="http://releases.llvm.org/7.0.1/cfe-7.0.1.src.tar.xz";
COMPILER_RT_TAR="http://releases.llvm.org/7.0.1/compiler-rt-7.0.1.src.tar.xz";

mkdir -p "${LLVM_DIRECTORY}/src"
mkdir -p "${LLVM_DIRECTORY}/build"

cd "${LLVM_DIRECTORY}/src"
curl "${LLVM_TAR}" | tar -Jx --strip-components=1 -f -
mkdir -p "${LLVM_DIRECTORY}/src/tools/clang"
cd "${LLVM_DIRECTORY}/src/tools/clang"
curl "${CLANG_TAR}" | tar -Jx --strip-components=1 -f -
mkdir -p "${LLVM_DIRECTORY}/src/projects/compiler-rt"
cd "${LLVM_DIRECTORY}/src/projects/compiler-rt"
curl "${COMPILER_RT_TAR}" | tar -Jx --strip-components=1 -f -

cd "${LLVM_DIRECTORY}/build"
cmake -G "Unix Makefiles" -C
"${LLVM_DIRECTORY}/src/tools/clang/cmake/caches/PGO.cmake"
"${LLVM_DIRECTORY}/src"
make -j 32 stage2-instrumented-generate-profdata
END_OF_SCRIPT

in order to use your own gcc, make sure that you update the $PATH environment
variable when running cmake/make.

I suggest you build clang both with and without your fix in gcc, then explore
the whole build tree and find all *.o files which differ (I hope there aren't a
lot), to check why they behave differently.

Note that it seems like gcc had an earlier regression, making the clang
bootstrap fail a bit later after building compiler-rt, with an error like:

FAILED: tools/clang/include/clang/AST/StmtNodes.inc 

cd /workdir/build/final-system/llvm-build/tools/clang/stage2-instrumented-bins
&&
/workdir/build/final-system/llvm-build/tools/clang/stage2-instrumented-bins/bin/clang-tblgen
-gen-clang-stmt-nodes -I /workdir/src/llvm-8.0.0/clang/include/clang/AST -I
/workdir/src/llvm-8.0.0/llvm/include
/workdir/src/llvm-8.0.0/clang/include/clang/AST/../Basic/StmtNodes.td -o
tools/clang/include/clang/AST/StmtNodes.inc -d
tools/clang/include/clang/AST/StmtNodes.inc.d

This is an unrelated error, which I think comes from a gcc regression too, and
which I will bisect as well.

If you need more info, just ask.

Cheers,
Romain

Reply via email to