@@ -673,18 +673,6 @@ struct SemanticARCOptVisitor
673
673
eraseInstruction (i);
674
674
}
675
675
676
- // / Pop values off of visitedSinceLastMutation, adding .some values to the
677
- // / worklist.
678
- void drainVisitedSinceLastMutationIntoWorklist () {
679
- while (!visitedSinceLastMutation.empty ()) {
680
- Optional<SILValue> nextValue = visitedSinceLastMutation.pop_back_val ();
681
- if (!nextValue.hasValue ()) {
682
- continue ;
683
- }
684
- worklist.insert (*nextValue);
685
- }
686
- }
687
-
688
676
// / Remove all results of the given instruction from the worklist and then
689
677
// / erase the instruction. Assumes that the instruction does not have any
690
678
// / users left.
@@ -698,7 +686,13 @@ struct SemanticARCOptVisitor
698
686
i->eraseFromParent ();
699
687
700
688
// Add everything else from visitedSinceLastMutation to the worklist.
701
- drainVisitedSinceLastMutationIntoWorklist ();
689
+ for (auto opt : visitedSinceLastMutation) {
690
+ if (!opt.hasValue ()) {
691
+ continue ;
692
+ }
693
+ worklist.insert (*opt);
694
+ }
695
+ visitedSinceLastMutation.clear ();
702
696
}
703
697
704
698
InstModCallbacks getCallbacks () {
@@ -1004,9 +998,14 @@ bool SemanticARCOptVisitor::optimize() {
1004
998
assumingAtFixedPoint = true ;
1005
999
SWIFT_DEFER { assumingAtFixedPoint = false ; };
1006
1000
1007
- // Add everything in visitedSinceLastMutation to the worklist so we
1008
- // recompute our fixed point.
1009
- drainVisitedSinceLastMutationIntoWorklist ();
1001
+ // Add everything in visitedSinceLastMutation to the worklist.
1002
+ for (auto opt : visitedSinceLastMutation) {
1003
+ if (!opt.hasValue ()) {
1004
+ continue ;
1005
+ }
1006
+ worklist.insert (*opt);
1007
+ }
1008
+ visitedSinceLastMutation.clear ();
1010
1009
1011
1010
// Then re-run the worklist. We shouldn't modify anything since we are at a
1012
1011
// fixed point and are just using this to seed the
0 commit comments