From 099920fc8ee0808e7c8ecd2cf28a975009aa09e7 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Sun, 7 Jan 2024 19:20:53 -0700 Subject: [PATCH] write_timing_model min_clock_tree_path seg fault Signed-off-by: James Cherry --- liberty/TimingArc.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/liberty/TimingArc.cc b/liberty/TimingArc.cc index cf9a7b74..17ad731b 100644 --- a/liberty/TimingArc.cc +++ b/liberty/TimingArc.cc @@ -240,11 +240,13 @@ TimingArcSet::addTimingArc(TimingArc *arc) criticalError(243, "timing arc max index exceeded\n"); arcs_.push_back(arc); - int from_rf_index = arc->fromEdge()->asRiseFall()->index(); - if (from_arc1_[from_rf_index] == nullptr) - from_arc1_[from_rf_index] = arc; - else if (from_arc2_[from_rf_index] == nullptr) - from_arc2_[from_rf_index] = arc; + if (arc->fromEdge()) { + int from_rf_index = arc->fromEdge()->asRiseFall()->index(); + if (from_arc1_[from_rf_index] == nullptr) + from_arc1_[from_rf_index] = arc; + else if (from_arc2_[from_rf_index] == nullptr) + from_arc2_[from_rf_index] = arc; + } int to_rf_index = arc->toEdge()->asRiseFall()->index(); to_arc_[to_rf_index] = arc; @@ -476,8 +478,8 @@ timingArcsLess(const TimingArcSet *arc_set1, arc_itr1++, arc_itr2++) { const TimingArc *arc1 = *arc_itr1; const TimingArc *arc2 = *arc_itr2; - int from_index1 = arc1->fromEdge()->index(); - int from_index2 = arc2->fromEdge()->index(); + int from_index1 = arc1->fromEdge() ? arc1->fromEdge()->index() : -1; + int from_index2 = arc2->fromEdge() ? arc2->fromEdge()->index() : -1; if (from_index1 < from_index2) return true; if (from_index1 > from_index2)