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

Jack Howarth via llvm-dev llvm-dev at lists.llvm.org
Mon Jul 10 03:45:32 PDT 2017


On Sun, Jul 9, 2017 at 7:07 PM, Daniel Berlin <dberlin at dberlin.org> wrote:
>
>
> On Sun, Jul 9, 2017 at 3:57 PM, Jack Howarth
> <howarth.mailing.lists at gmail.com> wrote:
>>
>> 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?
>>
>
> This would be ideal, yes :)
>

This produces no regressions in the file comparison between stage2 and
stage3 except for the expected...

--- stage2/include/llvm/Config/abi-breaking.h 2017-07-09
20:42:54.000000000 -0400
+++ stage3/include/llvm/Config/abi-breaking.h 2017-07-09
21:27:57.000000000 -0400
@@ -16,7 +16,7 @@
 #define LLVM_ENABLE_ABI_BREAKING_CHECKS 0

 /* Define to enable reverse iteration of unordered llvm containers */
-#define LLVM_ENABLE_REVERSE_ITERATION 1
+#define LLVM_ENABLE_REVERSE_ITERATION 0

 /* Allow selectively disabling link-time mismatch checking so that header-only
    ADT content from LLVM can be used without linking libSupport. */

when stage2 is passed  -DLLVM_REVERSE_ITERATION:BOOL=ON and stage3 is not for
a llvm/clang/clang-tools-extra/compiler-rt/libcxx/openmp/polly 3-stage
bootstrap on x86_64-apple-darwin16.
                 Jack


More information about the llvm-dev mailing list