[llvm-dev] Non-determinism in LLVM codegen
Hans Wennborg via llvm-dev
llvm-dev at lists.llvm.org
Tue Dec 13 18:39:29 PST 2016
On Tue, Dec 13, 2016 at 4:57 PM, Grang, Mandeep Singh via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> Everyone,
>
> The following patch to reverse iterate SmallPtrSet's has now been merged:
> https://reviews.llvm.org/D26718
>
> This is how LLVM behavior will change due to this patch:
> - In LLVM builds with assertions enabled, SmallPtrSet's would always be
> reverse iterated by default.
> This default behavior can be overridden via the flag "-mllvm
> -reverse-iterate=<true/false>".
>
> - In LLVM builds with assertions disabled, SmallPtrSet's would continue to
> be always forward iterated.
> This behavior cannot be overridden as the above flag is available only in
> builds with assertions enabled.
>
> Currently, the following unit tests are failing in Release+Asserts mode due
> to the difference in SmallPtrSet iteration order:
> Clang :: Analysis/keychainAPI.m
> Clang :: Analysis/malloc.c
> Clang :: Rewriter/objc-modern-metadata-visibility.mm
> Clang :: SemaCXX/warn-loop-analysis.cpp
> LLVM :: Transforms/SimplifyCFG/bug-25299.ll
Wait, so you committed a patch that breaks these tests? Should you fix
them first?
IIUC, LLVM_ABI_BREAKING_CHECKS is WITH_ASSERTS by default, so your
change, which is known to break things, is enabled for those of us
enabling asserts?
Or am I misunderstanding?
More information about the llvm-dev
mailing list