@@ -3293,40 +3293,24 @@ Search::seedInvalidRequireds()
32933293class FindEndRequiredVisitor : public PathEndVisitor
32943294{
32953295public:
3296- FindEndRequiredVisitor (RequiredCmp * required_cmp,
3296+ FindEndRequiredVisitor (RequiredCmp & required_cmp,
32973297 const StaState *sta);
32983298 FindEndRequiredVisitor (const StaState *sta);
3299- ~FindEndRequiredVisitor () override ;
33003299 PathEndVisitor *copy () const override ;
33013300 void visit (PathEnd *path_end) override ;
33023301
33033302protected:
33043303 const StaState *sta_;
3305- RequiredCmp *required_cmp_;
3306- bool own_required_cmp_;
3304+ RequiredCmp &required_cmp_;
33073305};
33083306
3309- FindEndRequiredVisitor::FindEndRequiredVisitor (RequiredCmp * required_cmp,
3307+ FindEndRequiredVisitor::FindEndRequiredVisitor (RequiredCmp & required_cmp,
33103308 const StaState *sta) :
33113309 sta_(sta),
3312- required_cmp_(required_cmp),
3313- own_required_cmp_(false )
3310+ required_cmp_(required_cmp)
33143311{
33153312}
33163313
3317- FindEndRequiredVisitor::FindEndRequiredVisitor (const StaState *sta) :
3318- sta_(sta),
3319- required_cmp_(new RequiredCmp),
3320- own_required_cmp_(true )
3321- {
3322- }
3323-
3324- FindEndRequiredVisitor::~FindEndRequiredVisitor ()
3325- {
3326- if (own_required_cmp_)
3327- delete required_cmp_;
3328- }
3329-
33303314PathEndVisitor *
33313315FindEndRequiredVisitor::copy () const
33323316{
@@ -3341,7 +3325,7 @@ FindEndRequiredVisitor::visit(PathEnd *path_end)
33413325 const MinMax *min_max = path->minMax (sta_)->opposite ();
33423326 size_t path_index = path->pathIndex (sta_);
33433327 Required required = path_end->requiredTime (sta_);
3344- required_cmp_-> requiredSet (path_index, required, min_max, sta_);
3328+ required_cmp_. requiredSet (path_index, required, min_max, sta_);
33453329 }
33463330}
33473331
@@ -3351,7 +3335,7 @@ Search::seedRequired(Vertex *vertex)
33513335 debugPrint (debug_, " search" , 2 , " required seed {}" ,
33523336 vertex->to_string (this ));
33533337 RequiredCmp required_cmp;
3354- FindEndRequiredVisitor seeder (& required_cmp, this );
3338+ FindEndRequiredVisitor seeder (required_cmp, this );
33553339 required_cmp.requiredsInit (vertex, this );
33563340 visit_path_ends_->visitPathEnds (vertex, &seeder);
33573341 // Enqueue fanin vertices for back-propagating required times.
@@ -3363,7 +3347,7 @@ void
33633347Search::seedRequiredEnqueueFanin (Vertex *vertex)
33643348{
33653349 RequiredCmp required_cmp;
3366- FindEndRequiredVisitor seeder (& required_cmp, this );
3350+ FindEndRequiredVisitor seeder (required_cmp, this );
33673351 required_cmp.requiredsInit (vertex, this );
33683352 visit_path_ends_->visitPathEnds (vertex, &seeder);
33693353 // Enqueue fanin vertices for back-propagating required times.
@@ -3438,21 +3422,18 @@ RequiredCmp::required(size_t path_index)
34383422
34393423RequiredVisitor::RequiredVisitor (const StaState *sta) :
34403424 PathVisitor(sta),
3441- required_cmp_(new RequiredCmp),
34423425 visit_path_ends_(new VisitPathEnds(sta))
34433426{
34443427}
34453428
34463429RequiredVisitor::RequiredVisitor (const RequiredVisitor &required_visitor) :
34473430 PathVisitor(required_visitor.search()->evalPred(), true, &required_visitor),
3448- required_cmp_(new RequiredCmp),
34493431 visit_path_ends_(new VisitPathEnds(&required_visitor))
34503432{
34513433}
34523434
34533435RequiredVisitor::~RequiredVisitor ()
34543436{
3455- delete required_cmp_;
34563437 delete visit_path_ends_;
34573438}
34583439
@@ -3467,15 +3448,15 @@ RequiredVisitor::visit(Vertex *vertex)
34673448{
34683449 debugPrint (debug_, " search" , 2 , " find required {}" ,
34693450 vertex->to_string (this ));
3470- required_cmp_-> requiredsInit (vertex, this );
3451+ required_cmp_. requiredsInit (vertex, this );
34713452 // Back propagate requireds from fanout.
34723453 visitFanoutPaths (vertex);
34733454 // Check for constraints at endpoints that set required times.
34743455 if (search_->isEndpoint (vertex)) {
34753456 FindEndRequiredVisitor seeder (required_cmp_, this );
34763457 visit_path_ends_->visitPathEnds (vertex, &seeder);
34773458 }
3478- bool changed = required_cmp_-> requiredsSave (vertex, this );
3459+ bool changed = required_cmp_. requiredsSave (vertex, this );
34793460 search_->tnsInvalid (vertex);
34803461
34813462 if (changed)
@@ -3521,8 +3502,8 @@ RequiredVisitor::visitFromToPath(const Pin *,
35213502 delayAsString (arc_delay, this ),
35223503 delayAsString (from_required, this ),
35233504 min_max == MinMax::max () ? " <" : " >" ,
3524- delayAsString (required_cmp_-> required (path_index), this ));
3525- required_cmp_-> requiredSet (path_index, from_required, req_min, this );
3505+ delayAsString (required_cmp_. required (path_index), this ));
3506+ required_cmp_. requiredSet (path_index, from_required, req_min, this );
35263507 }
35273508 else {
35283509 if (search_->crprApproxMissingRequireds ()) {
@@ -3545,8 +3526,8 @@ RequiredVisitor::visitFromToPath(const Pin *,
35453526 delayAsString (arc_delay, this ),
35463527 delayAsString (from_required, this ),
35473528 min_max == MinMax::max () ? " <" : " >" ,
3548- delayAsString (required_cmp_-> required (path_index), this ));
3549- required_cmp_-> requiredSet (path_index, from_required, req_min, this );
3529+ delayAsString (required_cmp_. required (path_index), this ));
3530+ required_cmp_. requiredSet (path_index, from_required, req_min, this );
35503531 break ;
35513532 }
35523533 }
0 commit comments