@@ -354,29 +354,7 @@ class DataFlowSolver {
354
354
355
355
// / Erase any analysis state associated with the given lattice anchor.
356
356
template <typename AnchorT>
357
- void eraseState (AnchorT anchor) {
358
- LatticeAnchor latticeAnchor (anchor);
359
-
360
- // Update equivalentAnchorMap.
361
- for (auto &&[TypeId, eqClass] : equivalentAnchorMap) {
362
- if (!eqClass.contains (latticeAnchor)) {
363
- continue ;
364
- }
365
- llvm::EquivalenceClasses<LatticeAnchor>::member_iterator leaderIt =
366
- eqClass.findLeader (latticeAnchor);
367
-
368
- // Update analysis states with new leader if needed.
369
- if (*leaderIt == latticeAnchor && ++leaderIt != eqClass.member_end ()) {
370
- analysisStates[*leaderIt][TypeId] =
371
- std::move (analysisStates[latticeAnchor][TypeId]);
372
- }
373
-
374
- eqClass.erase (latticeAnchor);
375
- }
376
-
377
- // Update analysis states.
378
- analysisStates.erase (latticeAnchor);
379
- }
357
+ void eraseState (AnchorT anchor);
380
358
381
359
// / Erase all analysis states.
382
360
void eraseAllStates () {
@@ -560,6 +538,31 @@ class AnalysisState {
560
538
friend class DataFlowSolver ;
561
539
};
562
540
541
+ template <typename AnchorT>
542
+ void DataFlowSolver::eraseState (AnchorT anchor) {
543
+ LatticeAnchor latticeAnchor (anchor);
544
+
545
+ // Update equivalentAnchorMap.
546
+ for (auto &&[TypeId, eqClass] : equivalentAnchorMap) {
547
+ if (!eqClass.contains (latticeAnchor)) {
548
+ continue ;
549
+ }
550
+ llvm::EquivalenceClasses<LatticeAnchor>::member_iterator leaderIt =
551
+ eqClass.findLeader (latticeAnchor);
552
+
553
+ // Update analysis states with new leader if needed.
554
+ if (*leaderIt == latticeAnchor && ++leaderIt != eqClass.member_end ()) {
555
+ analysisStates[*leaderIt][TypeId] =
556
+ std::move (analysisStates[latticeAnchor][TypeId]);
557
+ }
558
+
559
+ eqClass.erase (latticeAnchor);
560
+ }
561
+
562
+ // Update analysis states.
563
+ analysisStates.erase (latticeAnchor);
564
+ }
565
+
563
566
// ===----------------------------------------------------------------------===//
564
567
// DataFlowAnalysis
565
568
// ===----------------------------------------------------------------------===//
0 commit comments