@@ -104,8 +104,8 @@ class AbstractDenseForwardDataFlowAnalysis : public DataFlowAnalysis {
104
104
// / dependency. That is, every time the lattice after anchor is updated, the
105
105
// / dependent program point must be visited, and the newly triggered visit
106
106
// / might update the lattice on dependent.
107
- const AbstractDenseLattice *getLatticeFor (ProgramPoint *dependent,
108
- LatticeAnchor anchor);
107
+ virtual const AbstractDenseLattice *getLatticeFor (ProgramPoint *dependent,
108
+ LatticeAnchor anchor) = 0 ;
109
109
110
110
// / Set the dense lattice at control flow entry point and propagate an update
111
111
// / if it changed.
@@ -265,6 +265,15 @@ class DenseForwardDataFlowAnalysis
265
265
return getOrCreate<LatticeT>(anchor);
266
266
}
267
267
268
+ // / Get the dense lattice on the given lattice anchor and add dependent as its
269
+ // / dependency. That is, every time the lattice after anchor is updated, the
270
+ // / dependent program point must be visited, and the newly triggered visit
271
+ // / might update the lattice on dependent.
272
+ const AbstractDenseLattice *getLatticeFor (ProgramPoint *dependent,
273
+ LatticeAnchor anchor) override {
274
+ return getOrCreateFor<LatticeT>(dependent, anchor);
275
+ }
276
+
268
277
// / Set the dense lattice at control flow entry point and propagate an update
269
278
// / if it changed.
270
279
virtual void setToEntryState (LatticeT *lattice) = 0;
@@ -357,8 +366,8 @@ class AbstractDenseBackwardDataFlowAnalysis : public DataFlowAnalysis {
357
366
// / dependency. That is, every time the lattice after anchor is updated, the
358
367
// / dependent program point must be visited, and the newly triggered visit
359
368
// / might update the lattice before dependent.
360
- const AbstractDenseLattice *getLatticeFor (ProgramPoint *dependent,
361
- LatticeAnchor anchor);
369
+ virtual const AbstractDenseLattice *getLatticeFor (ProgramPoint *dependent,
370
+ LatticeAnchor anchor) = 0 ;
362
371
363
372
// / Set the dense lattice before at the control flow exit point and propagate
364
373
// / the update if it changed.
@@ -528,6 +537,15 @@ class DenseBackwardDataFlowAnalysis
528
537
return getOrCreate<LatticeT>(anchor);
529
538
}
530
539
540
+ // / Get the dense lattice on the given lattice anchor and add dependent as its
541
+ // / dependency. That is, every time the lattice after anchor is updated, the
542
+ // / dependent program point must be visited, and the newly triggered visit
543
+ // / might update the lattice before dependent.
544
+ const virtual AbstractDenseLattice *
545
+ getLatticeFor (ProgramPoint *dependent, LatticeAnchor anchor) override {
546
+ return getOrCreateFor<LatticeT>(dependent, anchor);
547
+ }
548
+
531
549
// / Set the dense lattice at control flow exit point (after the terminator)
532
550
// / and propagate an update if it changed.
533
551
virtual void setToExitState (LatticeT *lattice) = 0;
0 commit comments