forked from OSchip/llvm-project
[SimplifyCFG] Fix nondeterministic iteration order
We iterate over the result from SafeToMergeTerminators, so make it a SmallSetVector instead of a SmallPtrSet. Should fix stage3 convergence builds. llvm-svn: 280342
This commit is contained in:
parent
77564f92e8
commit
21744689b9
|
@ -176,7 +176,7 @@ public:
|
||||||
/// terminator instructions together.
|
/// terminator instructions together.
|
||||||
static bool
|
static bool
|
||||||
SafeToMergeTerminators(TerminatorInst *SI1, TerminatorInst *SI2,
|
SafeToMergeTerminators(TerminatorInst *SI1, TerminatorInst *SI2,
|
||||||
SmallPtrSetImpl<BasicBlock *> *FailBlocks = nullptr) {
|
SmallSetVector<BasicBlock *, 4> *FailBlocks = nullptr) {
|
||||||
if (SI1 == SI2)
|
if (SI1 == SI2)
|
||||||
return false; // Can't merge with self!
|
return false; // Can't merge with self!
|
||||||
|
|
||||||
|
@ -961,7 +961,7 @@ bool SimplifyCFGOpt::FoldValueComparisonIntoPredecessors(TerminatorInst *TI,
|
||||||
Value *PCV = isValueEqualityComparison(PTI); // PredCondVal
|
Value *PCV = isValueEqualityComparison(PTI); // PredCondVal
|
||||||
|
|
||||||
if (PCV == CV && TI != PTI) {
|
if (PCV == CV && TI != PTI) {
|
||||||
SmallPtrSet<BasicBlock*, 4> FailBlocks;
|
SmallSetVector<BasicBlock*, 4> FailBlocks;
|
||||||
if (!SafeToMergeTerminators(TI, PTI, &FailBlocks)) {
|
if (!SafeToMergeTerminators(TI, PTI, &FailBlocks)) {
|
||||||
for (auto *Succ : FailBlocks) {
|
for (auto *Succ : FailBlocks) {
|
||||||
std::vector<BasicBlock*> Blocks = { TI->getParent() };
|
std::vector<BasicBlock*> Blocks = { TI->getParent() };
|
||||||
|
|
Loading…
Reference in New Issue