mirror of
https://github.com/verilator/verilator.git
synced 2026-09-07 10:01:11 +02:00
Remove redundant 'virtual' keywords from overridden methods
'virtual' is redundant when 'override' is present, so keep only 'override'. Add t/t_dist_cppstyle.pl to check for this.
This commit is contained in:
+56
-60
@@ -103,14 +103,12 @@ protected:
|
||||
SplitNodeVertex(V3Graph* graphp, AstNode* nodep)
|
||||
: V3GraphVertex{graphp}
|
||||
, m_nodep{nodep} {}
|
||||
virtual ~SplitNodeVertex() override = default;
|
||||
~SplitNodeVertex() override = default;
|
||||
// ACCESSORS
|
||||
// Do not make accessor for nodep(), It may change due to
|
||||
// reordering a lower block, but we don't repair it
|
||||
virtual string name() const override {
|
||||
return cvtToHex(m_nodep) + ' ' + m_nodep->prettyTypeName();
|
||||
}
|
||||
virtual FileLine* fileline() const override { return nodep()->fileline(); }
|
||||
string name() const override { return cvtToHex(m_nodep) + ' ' + m_nodep->prettyTypeName(); }
|
||||
FileLine* fileline() const override { return nodep()->fileline(); }
|
||||
|
||||
public:
|
||||
virtual AstNode* nodep() const { return m_nodep; }
|
||||
@@ -120,34 +118,34 @@ class SplitPliVertex final : public SplitNodeVertex {
|
||||
public:
|
||||
explicit SplitPliVertex(V3Graph* graphp, AstNode* nodep)
|
||||
: SplitNodeVertex{graphp, nodep} {}
|
||||
virtual ~SplitPliVertex() override = default;
|
||||
virtual string name() const override { return "*PLI*"; }
|
||||
virtual string dotColor() const override { return "green"; }
|
||||
~SplitPliVertex() override = default;
|
||||
string name() const override { return "*PLI*"; }
|
||||
string dotColor() const override { return "green"; }
|
||||
};
|
||||
|
||||
class SplitLogicVertex final : public SplitNodeVertex {
|
||||
public:
|
||||
SplitLogicVertex(V3Graph* graphp, AstNode* nodep)
|
||||
: SplitNodeVertex{graphp, nodep} {}
|
||||
virtual ~SplitLogicVertex() override = default;
|
||||
virtual string dotColor() const override { return "yellow"; }
|
||||
~SplitLogicVertex() override = default;
|
||||
string dotColor() const override { return "yellow"; }
|
||||
};
|
||||
|
||||
class SplitVarStdVertex final : public SplitNodeVertex {
|
||||
public:
|
||||
SplitVarStdVertex(V3Graph* graphp, AstNode* nodep)
|
||||
: SplitNodeVertex{graphp, nodep} {}
|
||||
virtual ~SplitVarStdVertex() override = default;
|
||||
virtual string dotColor() const override { return "skyblue"; }
|
||||
~SplitVarStdVertex() override = default;
|
||||
string dotColor() const override { return "skyblue"; }
|
||||
};
|
||||
|
||||
class SplitVarPostVertex final : public SplitNodeVertex {
|
||||
public:
|
||||
SplitVarPostVertex(V3Graph* graphp, AstNode* nodep)
|
||||
: SplitNodeVertex{graphp, nodep} {}
|
||||
virtual ~SplitVarPostVertex() override = default;
|
||||
virtual string name() const override { return string("POST ") + SplitNodeVertex::name(); }
|
||||
virtual string dotColor() const override { return "CadetBlue"; }
|
||||
~SplitVarPostVertex() override = default;
|
||||
string name() const override { return string("POST ") + SplitNodeVertex::name(); }
|
||||
string dotColor() const override { return "CadetBlue"; }
|
||||
};
|
||||
|
||||
//######################################################################
|
||||
@@ -161,7 +159,7 @@ protected:
|
||||
SplitEdge(V3Graph* graphp, V3GraphVertex* fromp, V3GraphVertex* top, int weight,
|
||||
bool cutable = CUTABLE)
|
||||
: V3GraphEdge{graphp, fromp, top, weight, cutable} {}
|
||||
virtual ~SplitEdge() override = default;
|
||||
~SplitEdge() override = default;
|
||||
|
||||
public:
|
||||
// Iterator for graph functions
|
||||
@@ -180,7 +178,7 @@ public:
|
||||
if (!oedgep) v3fatalSrc("Following edge of non-SplitEdge type");
|
||||
return (!oedgep->ignoreThisStep());
|
||||
}
|
||||
virtual string dotStyle() const override {
|
||||
string dotStyle() const override {
|
||||
return ignoreThisStep() ? "dotted" : V3GraphEdge::dotStyle();
|
||||
}
|
||||
};
|
||||
@@ -190,36 +188,36 @@ class SplitPostEdge final : public SplitEdge {
|
||||
public:
|
||||
SplitPostEdge(V3Graph* graphp, V3GraphVertex* fromp, V3GraphVertex* top)
|
||||
: SplitEdge{graphp, fromp, top, WEIGHT_NORMAL} {}
|
||||
virtual ~SplitPostEdge() override = default;
|
||||
virtual bool followScoreboard() const override { return false; }
|
||||
virtual string dotColor() const override { return "khaki"; }
|
||||
~SplitPostEdge() override = default;
|
||||
bool followScoreboard() const override { return false; }
|
||||
string dotColor() const override { return "khaki"; }
|
||||
};
|
||||
|
||||
class SplitLVEdge final : public SplitEdge {
|
||||
public:
|
||||
SplitLVEdge(V3Graph* graphp, V3GraphVertex* fromp, V3GraphVertex* top)
|
||||
: SplitEdge{graphp, fromp, top, WEIGHT_NORMAL} {}
|
||||
virtual ~SplitLVEdge() override = default;
|
||||
virtual bool followScoreboard() const override { return true; }
|
||||
virtual string dotColor() const override { return "yellowGreen"; }
|
||||
~SplitLVEdge() override = default;
|
||||
bool followScoreboard() const override { return true; }
|
||||
string dotColor() const override { return "yellowGreen"; }
|
||||
};
|
||||
|
||||
class SplitRVEdge final : public SplitEdge {
|
||||
public:
|
||||
SplitRVEdge(V3Graph* graphp, V3GraphVertex* fromp, V3GraphVertex* top)
|
||||
: SplitEdge{graphp, fromp, top, WEIGHT_NORMAL} {}
|
||||
virtual ~SplitRVEdge() override = default;
|
||||
virtual bool followScoreboard() const override { return true; }
|
||||
virtual string dotColor() const override { return "green"; }
|
||||
~SplitRVEdge() override = default;
|
||||
bool followScoreboard() const override { return true; }
|
||||
string dotColor() const override { return "green"; }
|
||||
};
|
||||
|
||||
struct SplitScorebdEdge : public SplitEdge {
|
||||
public:
|
||||
SplitScorebdEdge(V3Graph* graphp, V3GraphVertex* fromp, V3GraphVertex* top)
|
||||
: SplitEdge{graphp, fromp, top, WEIGHT_NORMAL} {}
|
||||
virtual ~SplitScorebdEdge() override = default;
|
||||
virtual bool followScoreboard() const override { return true; }
|
||||
virtual string dotColor() const override { return "blue"; }
|
||||
~SplitScorebdEdge() override = default;
|
||||
bool followScoreboard() const override { return true; }
|
||||
string dotColor() const override { return "blue"; }
|
||||
};
|
||||
|
||||
struct SplitStrictEdge : public SplitEdge {
|
||||
@@ -228,9 +226,9 @@ struct SplitStrictEdge : public SplitEdge {
|
||||
public:
|
||||
SplitStrictEdge(V3Graph* graphp, V3GraphVertex* fromp, V3GraphVertex* top)
|
||||
: SplitEdge{graphp, fromp, top, WEIGHT_NORMAL, NOT_CUTABLE} {}
|
||||
virtual ~SplitStrictEdge() override = default;
|
||||
virtual bool followScoreboard() const override { return true; }
|
||||
virtual string dotColor() const override { return "blue"; }
|
||||
~SplitStrictEdge() override = default;
|
||||
bool followScoreboard() const override { return true; }
|
||||
string dotColor() const override { return "blue"; }
|
||||
};
|
||||
|
||||
//######################################################################
|
||||
@@ -259,7 +257,7 @@ protected:
|
||||
// CONSTRUCTORS
|
||||
public:
|
||||
SplitReorderBaseVisitor() { scoreboardClear(); }
|
||||
virtual ~SplitReorderBaseVisitor() override = default;
|
||||
~SplitReorderBaseVisitor() override = default;
|
||||
|
||||
// METHODS
|
||||
protected:
|
||||
@@ -335,19 +333,19 @@ protected:
|
||||
virtual void makeRvalueEdges(SplitVarStdVertex* vstdp) = 0;
|
||||
|
||||
// VISITORS
|
||||
virtual void visit(AstAlways* nodep) override = 0;
|
||||
virtual void visit(AstNodeIf* nodep) override = 0;
|
||||
void visit(AstAlways* nodep) override = 0;
|
||||
void visit(AstNodeIf* nodep) override = 0;
|
||||
|
||||
// We don't do AstNodeFor/AstWhile loops, due to the standard question
|
||||
// of what is before vs. after
|
||||
|
||||
virtual void visit(AstAssignDly* nodep) override {
|
||||
void visit(AstAssignDly* nodep) override {
|
||||
m_inDly = true;
|
||||
UINFO(4, " ASSIGNDLY " << nodep << endl);
|
||||
iterateChildren(nodep);
|
||||
m_inDly = false;
|
||||
}
|
||||
virtual void visit(AstVarRef* nodep) override {
|
||||
void visit(AstVarRef* nodep) override {
|
||||
if (!m_stmtStackps.empty()) {
|
||||
AstVarScope* const vscp = nodep->varScopep();
|
||||
UASSERT_OBJ(vscp, nodep, "Not linked");
|
||||
@@ -410,7 +408,7 @@ protected:
|
||||
}
|
||||
}
|
||||
|
||||
virtual void visit(AstJumpGo* nodep) override {
|
||||
void visit(AstJumpGo* nodep) override {
|
||||
// Jumps will disable reordering at all levels
|
||||
// This is overly pessimistic; we could treat jumps as barriers, and
|
||||
// reorder everything between jumps/labels, however jumps are rare
|
||||
@@ -422,7 +420,7 @@ protected:
|
||||
|
||||
//--------------------
|
||||
// Default
|
||||
virtual void visit(AstNode* nodep) override {
|
||||
void visit(AstNode* nodep) override {
|
||||
// **** SPECIAL default type that sets PLI_ORDERING
|
||||
if (!m_stmtStackps.empty() && !nodep->isPure()) {
|
||||
UINFO(9, " NotSplittable " << nodep << endl);
|
||||
@@ -439,11 +437,11 @@ class ReorderVisitor final : public SplitReorderBaseVisitor {
|
||||
// CONSTRUCTORS
|
||||
public:
|
||||
explicit ReorderVisitor(AstNetlist* nodep) { iterate(nodep); }
|
||||
virtual ~ReorderVisitor() override = default;
|
||||
~ReorderVisitor() override = default;
|
||||
|
||||
// METHODS
|
||||
protected:
|
||||
virtual void makeRvalueEdges(SplitVarStdVertex* vstdp) override {
|
||||
void makeRvalueEdges(SplitVarStdVertex* vstdp) override {
|
||||
for (SplitLogicVertex* vxp : m_stmtStackps) new SplitRVEdge(&m_graph, vxp, vstdp);
|
||||
}
|
||||
|
||||
@@ -599,7 +597,7 @@ protected:
|
||||
firstp->user3p(oldBlockUser3);
|
||||
}
|
||||
|
||||
virtual void visit(AstAlways* nodep) override {
|
||||
void visit(AstAlways* nodep) override {
|
||||
UINFO(4, " ALW " << nodep << endl);
|
||||
if (debug() >= 9) nodep->dumpTree(cout, " alwIn:: ");
|
||||
scoreboardClear();
|
||||
@@ -607,7 +605,7 @@ protected:
|
||||
if (debug() >= 9) nodep->dumpTree(cout, " alwOut: ");
|
||||
}
|
||||
|
||||
virtual void visit(AstNodeIf* nodep) override {
|
||||
void visit(AstNodeIf* nodep) override {
|
||||
UINFO(4, " IF " << nodep << endl);
|
||||
iterateAndNextNull(nodep->condp());
|
||||
processBlock(nodep->ifsp());
|
||||
@@ -636,7 +634,7 @@ public:
|
||||
// Visit through *nodep and map each AstNodeIf within to the set of
|
||||
// colors it will participate in. Also find the whole set of colors.
|
||||
explicit IfColorVisitor(AstAlways* nodep) { iterate(nodep); }
|
||||
virtual ~IfColorVisitor() override = default;
|
||||
~IfColorVisitor() override = default;
|
||||
|
||||
// METHODS
|
||||
const ColorSet& colors() const { return m_colors; }
|
||||
@@ -663,13 +661,13 @@ private:
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual void visit(AstNodeIf* nodep) override {
|
||||
void visit(AstNodeIf* nodep) override {
|
||||
m_ifStack.push_back(nodep);
|
||||
trackNode(nodep);
|
||||
iterateChildren(nodep);
|
||||
m_ifStack.pop_back();
|
||||
}
|
||||
virtual void visit(AstNode* nodep) override {
|
||||
void visit(AstNode* nodep) override {
|
||||
trackNode(nodep);
|
||||
iterateChildren(nodep);
|
||||
}
|
||||
@@ -701,7 +699,7 @@ public:
|
||||
UINFO(6, " splitting always " << nodep << endl);
|
||||
}
|
||||
|
||||
virtual ~EmitSplitVisitor() override = default;
|
||||
~EmitSplitVisitor() override = default;
|
||||
|
||||
// METHODS
|
||||
void go() {
|
||||
@@ -732,7 +730,7 @@ protected:
|
||||
return new AstSplitPlaceholder(m_origAlwaysp->fileline());
|
||||
}
|
||||
|
||||
virtual void visit(AstNode* nodep) override {
|
||||
void visit(AstNode* nodep) override {
|
||||
// Anything that's not an if/else we assume is a leaf
|
||||
// (that is, something we won't split.) Don't visit further
|
||||
// into the leaf.
|
||||
@@ -754,7 +752,7 @@ protected:
|
||||
m_addAfter[color] = clonedp;
|
||||
}
|
||||
|
||||
virtual void visit(AstNodeIf* nodep) override {
|
||||
void visit(AstNodeIf* nodep) override {
|
||||
const ColorSet& colors = m_ifColorp->colors(nodep);
|
||||
using CloneMap = std::unordered_map<uint32_t, AstNodeIf*>;
|
||||
CloneMap clones;
|
||||
@@ -798,17 +796,17 @@ class RemovePlaceholdersVisitor final : public VNVisitor {
|
||||
|
||||
// CONSTRUCTORS
|
||||
RemovePlaceholdersVisitor() = default;
|
||||
virtual ~RemovePlaceholdersVisitor() override = default;
|
||||
~RemovePlaceholdersVisitor() override = default;
|
||||
|
||||
// VISITORS
|
||||
virtual void visit(AstSplitPlaceholder* nodep) override { pushDeletep(nodep->unlinkFrBack()); }
|
||||
virtual void visit(AstNodeIf* nodep) override {
|
||||
void visit(AstSplitPlaceholder* nodep) override { pushDeletep(nodep->unlinkFrBack()); }
|
||||
void visit(AstNodeIf* nodep) override {
|
||||
VL_RESTORER(m_isPure);
|
||||
m_isPure = true;
|
||||
iterateChildren(nodep);
|
||||
if (!nodep->ifsp() && !nodep->elsesp() && m_isPure) pushDeletep(nodep->unlinkFrBack());
|
||||
}
|
||||
virtual void visit(AstAlways* nodep) override {
|
||||
void visit(AstAlways* nodep) override {
|
||||
VL_RESTORER(m_isPure);
|
||||
m_isPure = true;
|
||||
iterateChildren(nodep);
|
||||
@@ -828,7 +826,7 @@ class RemovePlaceholdersVisitor final : public VNVisitor {
|
||||
}
|
||||
}
|
||||
}
|
||||
virtual void visit(AstNode* nodep) override {
|
||||
void visit(AstNode* nodep) override {
|
||||
m_isPure &= nodep->isPure();
|
||||
iterateChildren(nodep); // must visit regardless of m_isPure to remove placeholders
|
||||
}
|
||||
@@ -875,13 +873,11 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual ~SplitVisitor() override {
|
||||
V3Stats::addStat("Optimizations, Split always", m_statSplits);
|
||||
}
|
||||
~SplitVisitor() override { V3Stats::addStat("Optimizations, Split always", m_statSplits); }
|
||||
|
||||
// METHODS
|
||||
protected:
|
||||
virtual void makeRvalueEdges(SplitVarStdVertex* vstdp) override {
|
||||
void makeRvalueEdges(SplitVarStdVertex* vstdp) override {
|
||||
// Each 'if' depends on rvalues in its own conditional ONLY,
|
||||
// not rvalues in the if/else bodies.
|
||||
for (auto it = m_stmtStackps.cbegin(); it != m_stmtStackps.cend(); ++it) {
|
||||
@@ -956,7 +952,7 @@ protected:
|
||||
if (debug() >= 9) m_graph.dumpDotFilePrefixed("splitg_colored", false);
|
||||
}
|
||||
|
||||
virtual void visit(AstAlways* nodep) override {
|
||||
void visit(AstAlways* nodep) override {
|
||||
// build the scoreboard
|
||||
scoreboardClear();
|
||||
scanBlock(nodep->bodysp());
|
||||
@@ -988,7 +984,7 @@ protected:
|
||||
emitSplit.go();
|
||||
}
|
||||
}
|
||||
virtual void visit(AstNodeIf* nodep) override {
|
||||
void visit(AstNodeIf* nodep) override {
|
||||
UINFO(4, " IF " << nodep << endl);
|
||||
m_curIfConditional = nodep;
|
||||
iterateAndNextNull(nodep->condp());
|
||||
|
||||
Reference in New Issue
Block a user