Current CFG is 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 by design, 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, which is deterministic by design.
The introduced test case was creduce'd from Android5 source file.
The test file contains 100 runs, in order to make the testing stable.