[llvm-dev] Uncovering non-determinism in LLVM - The Next Steps

Jack Howarth via llvm-dev llvm-dev at lists.llvm.org
Sun Jul 9 15:57:44 PDT 2017

On Sun, Jul 9, 2017 at 1:26 PM, Daniel Berlin <dberlin at dberlin.org> wrote:
> On Sun, Jul 9, 2017 at 9:19 AM, Jack Howarth via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
>>        FYI, I just successfully performed a 3-stage bootstrap with
>> stage2/stage3 object file comparison on x86_64-apple-darwin16 for
>> llvm/clang/clang-tools-extra/compiler-rt/libcxx/openmp/polly using our
>> custom fink packaging scripts with the
>> -DLLVM_REVERSE_ITERATION:BOOL=ON cmake option. There were no
>> stage2/stage3 object file comparison failures or test suite
>> regressions.
>>        I do have one question though. Is there any particular reason
>> not to leave this option on for deployed release builds of the
>> compiler?
> Because it wouldn't accomplish anything.
> The goal is to have a different iteration order than the default.
> If you make this the default, that doesn't help, because now the default is
> reverse

So perhaps I am doing this wrong? Should I have have the stage2 build without
-DLLVM_REVERSE_ITERATION:BOOL=ON  and stage3 with that option
so that any variation in the object files generated for the llvm build
is picked up?

>> Other than possibly running into some extreme corner case of
>> non-deterministism that the stage2/stage3 comparisons and test suites
>> miss, is there any performance issues introduced in compile time by
>> leaving  -DLLVM_REVERSE_ITERATION:BOOL=ON defaulted on?
>> Thanks in
>> advance for any clarifications.
>>             Jack
>> ps Is it still the case that none of the llvm.org build bots are doing
>> a full 3-stage bootstrap with stage2/stage3 file comparison (ala FSF
>> gcc)?

Really? From https://llvm.org/svn/llvm-project/zorg/trunk/buildbot/osuosl/master/config/builders.py,
it seemed like those where commented out. no?

#        {'name' : "clang-3stage-ubuntu",
#         'slavenames' : ["ps4-buildslave1a"],
#         'builddir' : "clang-3stage-ubuntu",
#         'factory': ClangLTOBuilder3Stage.get3StageClangLTOBuildFactory(
#               clean=True,
#               env=None,
#               build_gold=True,
#               extra_cmake_options=[
#                   '-GNinja',
#                   '-DLLVM_TARGETS_TO_BUILD=all',
#                   '-DLLVM_BINUTILS_INCDIR=/opt/binutils/include'])},,

> Errr, last i looked, a ton were doing so?

More information about the llvm-dev mailing list