diff --git a/liberty/Liberty.hh b/liberty/Liberty.hh index 3b62acc7..6f45bc82 100644 --- a/liberty/Liberty.hh +++ b/liberty/Liberty.hh @@ -114,7 +114,7 @@ class LibertyLibrary : public ConcreteLibrary public: LibertyLibrary(const char *name, const char *filename); - ~LibertyLibrary(); + virtual ~LibertyLibrary(); LibertyCell *findLibertyCell(const char *name) const; void findLibertyCellsMatching(PatternMatch *pattern, LibertyCellSeq *cells); @@ -383,7 +383,7 @@ public: LibertyCell(LibertyLibrary *library, const char *name, const char *filename); - ~LibertyCell(); + virtual ~LibertyCell(); LibertyLibrary *libertyLibrary() const { return liberty_library_; } LibertyLibrary *libertyLibrary() { return liberty_library_; } LibertyPort *findLibertyPort(const char *name) const; @@ -589,7 +589,7 @@ class LibertyCellPortBitIterator : public Iterator { public: explicit LibertyCellPortBitIterator(const LibertyCell *cell); - ~LibertyCellPortBitIterator(); + virtual ~LibertyCellPortBitIterator(); bool hasNext(); LibertyPort *next(); @@ -750,7 +750,7 @@ protected: int to_index, bool is_bundle, ConcretePortSeq *members); - ~LibertyPort(); + virtual ~LibertyPort(); void setDirection(PortDirection *dir); void setMinPort(LibertyPort *min); void addScaledPort(OperatingConditions *op_cond, @@ -800,7 +800,7 @@ class LibertyPortMemberIterator : public Iterator { public: explicit LibertyPortMemberIterator(const LibertyPort *port); - ~LibertyPortMemberIterator(); + virtual ~LibertyPortMemberIterator(); virtual bool hasNext(); virtual LibertyPort *next(); @@ -817,6 +817,7 @@ public: Pvt(float process, float voltage, float temperature); + virtual ~Pvt() {} float process() const { return process_; } void setProcess(float process); float voltage() const { return voltage_; } @@ -842,7 +843,7 @@ public: float voltage, float temperature, WireloadTree wire_load_tree); - ~OperatingConditions(); + virtual ~OperatingConditions(); const char *name() const { return name_; } WireloadTree wireloadTree() const { return wire_load_tree_; } void setWireloadTree(WireloadTree tree); diff --git a/network/ConcreteLibrary.hh b/network/ConcreteLibrary.hh index 2d40c8d6..83941d0a 100644 --- a/network/ConcreteLibrary.hh +++ b/network/ConcreteLibrary.hh @@ -50,7 +50,7 @@ public: explicit ConcreteLibrary(const char *name, const char *filename, bool is_liberty); - ~ConcreteLibrary(); + virtual ~ConcreteLibrary(); const char *name() const { return name_; } void setName(const char *name); bool isLiberty() const { return is_liberty_; } @@ -90,7 +90,7 @@ class ConcreteCell { public: // Use ConcreteLibrary::deleteCell. - ~ConcreteCell(); + virtual ~ConcreteCell(); ConcreteLibrary *library() const { return library_; } const char *name() const { return name_; } const char *filename() const { return filename_; } @@ -164,7 +164,7 @@ private: class ConcretePort { public: - ~ConcretePort(); + virtual ~ConcretePort(); const char *name() const { return name_; } const char *busName() const; Cell *cell() const; diff --git a/network/ConcreteNetwork.hh b/network/ConcreteNetwork.hh index 5f7d49d5..a4c5266f 100644 --- a/network/ConcreteNetwork.hh +++ b/network/ConcreteNetwork.hh @@ -321,12 +321,11 @@ public: VertexIndex vertexIndex() const { return vertex_index_; } void setVertexIndex(VertexIndex index); -private: - DISALLOW_COPY_AND_ASSIGN(ConcretePin); +protected: + ~ConcretePin() {} ConcretePin(ConcreteInstance *instance, ConcretePort *port, ConcreteNet *net); - ~ConcretePin() {} ConcreteInstance *instance_; ConcretePort *port_; @@ -337,6 +336,9 @@ private: ConcretePin *net_prev_; VertexIndex vertex_index_; +private: + DISALLOW_COPY_AND_ASSIGN(ConcretePin); + friend class ConcreteNetwork; friend class ConcreteNet; friend class ConcreteNetPinIterator; @@ -349,17 +351,19 @@ public: ConcreteNet *net() const { return net_; } ConcretePin *pin() const { return pin_; } -private: - DISALLOW_COPY_AND_ASSIGN(ConcreteTerm); +protected: + ~ConcreteTerm() {} ConcreteTerm(ConcretePin *pin, ConcreteNet *net); - ~ConcreteTerm() {} ConcretePin *pin_; ConcreteNet *net_; // Linked list of net terms. ConcreteTerm *net_next_; +private: + DISALLOW_COPY_AND_ASSIGN(ConcreteTerm); + friend class ConcreteNetwork; friend class ConcreteNet; friend class ConcreteNetTermIterator; @@ -382,8 +386,6 @@ protected: ConcreteNet(const char *name, ConcreteInstance *instance); ~ConcreteNet(); - -private: const char *name_; ConcreteInstance *instance_; // Pointer to head of linked list of pins. diff --git a/network/SdcNetwork.cc b/network/SdcNetwork.cc index 85131e54..e4ffe597 100644 --- a/network/SdcNetwork.cc +++ b/network/SdcNetwork.cc @@ -14,6 +14,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +#include #include "Machine.hh" #include "StringUtil.hh" #include "PatternMatch.hh" diff --git a/search/ReportPath.cc b/search/ReportPath.cc index 40562cec..862195d7 100644 --- a/search/ReportPath.cc +++ b/search/ReportPath.cc @@ -1017,6 +1017,7 @@ void ReportPath::reportSummaryHeader(string &result) { reportDescription("Startpoint", result); + result += ' '; reportDescription("Endpoint", result); result += ' '; reportField("Slack", field_total_, result); @@ -1034,6 +1035,7 @@ ReportPath::reportSummaryLine(PathEnd *end, const EarlyLate *early_late = end->pathEarlyLate(this); auto startpoint = pathStartpoint(end, expanded); reportDescription(startpoint.c_str(), result); + result += ' '; auto endpoint = pathEndpoint(end); reportDescription(endpoint.c_str(), result); if (end->isUnconstrained())