Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | [Analyzer] Stable iteration on indirect goto LabelDecl's to avoid ↵ | Aleksei Sidorin | 2017-11-21 | 1 | -0/+96 |
| | | | | | | | | | | | | | | | | | | | | 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 | ||||
* | [Analyzer] Revert r318750 because incorrect files were added for commit. | Aleksei Sidorin | 2017-11-21 | 1 | -96/+0 |
| | | | | | | Sorry for the noise. llvm-svn: 318753 | ||||
* | [Analyzer] Non-determinism: stable iteration on indirect goto LabelDecl's | Aleksei Sidorin | 2017-11-21 | 1 | -0/+96 |
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 |