diff options
| author | Aleksei Sidorin <a.sidorin@samsung.com> | 2017-11-21 11:27:47 +0000 |
|---|---|---|
| committer | Aleksei Sidorin <a.sidorin@samsung.com> | 2017-11-21 11:27:47 +0000 |
| commit | 124f5de84134095ac4cfa88eecfec1cf39995516 (patch) | |
| tree | dd6c67848cf533eabd2f2211dac58b18387b1e94 /clang/lib/Basic/Targets | |
| parent | 7ac9be1ab7def8af270ea4af430fb59eb89a2239 (diff) | |
| download | bcm5719-llvm-124f5de84134095ac4cfa88eecfec1cf39995516.tar.gz bcm5719-llvm-124f5de84134095ac4cfa88eecfec1cf39995516.zip | |
[Analyzer] Stable iteration on indirect goto LabelDecl's to avoid non-determinism (attempt 2)
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: 318754
Diffstat (limited to 'clang/lib/Basic/Targets')
0 files changed, 0 insertions, 0 deletions

