diff options
author | Aleksei Sidorin <a.sidorin@samsung.com> | 2017-11-21 11:05:28 +0000 |
---|---|---|
committer | Aleksei Sidorin <a.sidorin@samsung.com> | 2017-11-21 11:05:28 +0000 |
commit | 3c3454b9d192c6195b7f6873312f6c08ff396ee7 (patch) | |
tree | 4ccdb87b6d0532eacf28ee2b67ec98700027a942 /llvm/lib/CodeGen/SlotIndexes.cpp | |
parent | 6bc35a93e6be166ec25cc42ab081ea161740ba3b (diff) | |
download | bcm5719-llvm-3c3454b9d192c6195b7f6873312f6c08ff396ee7.tar.gz bcm5719-llvm-3c3454b9d192c6195b7f6873312f6c08ff396ee7.zip |
[Analyzer] Non-determinism: stable iteration on indirect goto LabelDecl's
CFG wass built in non-deterministic order due to the fact that indirect
goto labels' declarations (LabelDecl's) are stored in the llvm::SmallSet
container. LabelDecl's are pointers, whose order is not deterministic,
and llvm::SmallSet sorts them by their non-deterministic addresses after
"small" container is exceeded. This leads to non-deterministic processing
of the elements of the container.
The fix is to use llvm::SmallSetVector that was designed to have
deterministic iteration order.
Patch by Ilya Palachev!
Differential Revision: https://reviews.llvm.org/D40073
llvm-svn: 318750
Diffstat (limited to 'llvm/lib/CodeGen/SlotIndexes.cpp')
0 files changed, 0 insertions, 0 deletions