Commentary
This commit is contained in:
parent
7f12ad9d91
commit
f407d442d4
|
|
@ -45,10 +45,12 @@ private:
|
|||
// AstFTask::user1() -> int. Number of references
|
||||
const VNUser1InUse m_inuser1;
|
||||
|
||||
// STATE
|
||||
// STATE - across all visitors
|
||||
std::vector<AstCFunc*> m_cfuncsp; // List of all tasks
|
||||
|
||||
// STATE - for current visit position (use VL_RESTORER)
|
||||
int m_likely = false; // Excuses for branch likely taken
|
||||
int m_unlikely = false; // Excuses for branch likely not taken
|
||||
std::vector<AstCFunc*> m_cfuncsp; // List of all tasks
|
||||
|
||||
// METHODS
|
||||
|
||||
|
|
|
|||
|
|
@ -92,6 +92,13 @@ private:
|
|||
const VNUser4InUse m_inuser4;
|
||||
const VNUser5InUse m_inuser5;
|
||||
|
||||
// STATE - across all visitors
|
||||
std::unordered_map<const AstVarScope*, int> m_scopeVecMap; // Next var number for each scope
|
||||
std::set<AstSenTree*> m_timingDomains; // Timing resume domains
|
||||
using VarMap = std::map<const std::pair<AstNodeModule*, std::string>, AstVar*>;
|
||||
VarMap m_modVarMap; // Table of new var names created under module
|
||||
VDouble0 m_statSharedSet; // Statistic tracking
|
||||
|
||||
// STATE - for current visit position (use VL_RESTORER)
|
||||
AstActive* m_activep = nullptr; // Current activate
|
||||
const AstCFunc* m_cfuncp = nullptr; // Current public C Function
|
||||
|
|
@ -103,13 +110,6 @@ private:
|
|||
bool m_inSuspendableOrFork = false; // True in suspendable processes and forks
|
||||
bool m_ignoreBlkAndNBlk = false; // Suppress delayed assignment BLKANDNBLK
|
||||
|
||||
// STATE - across all visitors
|
||||
std::unordered_map<const AstVarScope*, int> m_scopeVecMap; // Next var number for each scope
|
||||
std::set<AstSenTree*> m_timingDomains; // Timing resume domains
|
||||
using VarMap = std::map<const std::pair<AstNodeModule*, std::string>, AstVar*>;
|
||||
VarMap m_modVarMap; // Table of new var names created under module
|
||||
VDouble0 m_statSharedSet; // Statistic tracking
|
||||
|
||||
// METHODS
|
||||
|
||||
const AstNode* containingAssignment(const AstNode* nodep) {
|
||||
|
|
|
|||
|
|
@ -57,14 +57,14 @@ private:
|
|||
AstUser4Allocator<AstCFunc, std::unordered_multimap<const AstVarScope*, AstVarRef*>>
|
||||
m_references;
|
||||
|
||||
// STATE - for current visit position (use VL_RESTORER)
|
||||
AstCFunc* m_cfuncp = nullptr; // Current active function
|
||||
uint32_t m_nodeDepth = 0; // Node depth under m_cfuncp
|
||||
|
||||
// STATE - across all visitors
|
||||
std::vector<AstVarScope*> m_varScopeps; // List of variables to consider for localization
|
||||
VDouble0 m_statLocVars; // Statistic tracking
|
||||
|
||||
// STATE - for current visit position (use VL_RESTORER)
|
||||
AstCFunc* m_cfuncp = nullptr; // Current active function
|
||||
uint32_t m_nodeDepth = 0; // Node depth under m_cfuncp
|
||||
|
||||
// METHODS
|
||||
bool isOptimizable(AstVarScope* nodep) {
|
||||
return !nodep->user1() || // Not marked as not optimizable, or ...
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@ private:
|
|||
// AstVar::user1() -> bool. Set true if already processed
|
||||
const VNUser1InUse m_inuser1;
|
||||
|
||||
// STATE
|
||||
const AstNodeModule* m_modp = nullptr;
|
||||
// STATE - for current visit position (use VL_RESTORER)
|
||||
const AstNodeModule* m_modp = nullptr; // Current module
|
||||
|
||||
// METHODS
|
||||
void rename(AstNode* nodep, bool addPvt) {
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
// Pairing heap (max-heap) with increase key and delete.
|
||||
//
|
||||
// While this is written as a generic data structure, it's interface and
|
||||
// implementation is finely tuned for it's use by V3Parm_tition, and is critical
|
||||
// implementation is finely tuned for use by V3Partition, and is critical
|
||||
// to Verilation performance, so be very careful changing anything or adding any
|
||||
// new operations that would impact either memory usage, or performance of the
|
||||
// existing operations. This data structure is fully deterministic, meaning
|
||||
|
|
|
|||
|
|
@ -53,6 +53,10 @@ private:
|
|||
const VNUser1InUse m_inuser1;
|
||||
const VNUser2InUse m_inuser2;
|
||||
|
||||
// STATE - across all visitors
|
||||
V3UniqueNames m_tempNames; // For generating unique temporary variable names
|
||||
VDouble0 m_extractedToConstPool; // Statistic tracking
|
||||
|
||||
// STATE - for current visit position (use VL_RESTORER)
|
||||
AstCFunc* m_cfuncp = nullptr; // Current block
|
||||
AstNode* m_stmtp = nullptr; // Current statement
|
||||
|
|
@ -61,10 +65,6 @@ private:
|
|||
AstTraceInc* m_inTracep = nullptr; // Inside while loop, special statement additions
|
||||
bool m_assignLhs = false; // Inside assignment lhs, don't breakup extracts
|
||||
|
||||
// STATE - across all visitors
|
||||
V3UniqueNames m_tempNames; // For generating unique temporary variable names
|
||||
VDouble0 m_extractedToConstPool; // Statistic tracking
|
||||
|
||||
// METHODS
|
||||
bool assignNoTemp(AstNodeAssign* nodep) {
|
||||
return (VN_IS(nodep->lhsp(), VarRef) && !AstVar::scVarRecurse(nodep->lhsp())
|
||||
|
|
|
|||
Loading…
Reference in New Issue