Fix slowdown in elaboration (#2911).
This commit is contained in:
parent
c238d3da76
commit
b976b8dac9
1
Changes
1
Changes
|
|
@ -25,6 +25,7 @@ Verilator 4.203 devel
|
||||||
* Fix assertion failure in bitOpTree optimization (#2891) (#2899). [Raynard Qiao]
|
* Fix assertion failure in bitOpTree optimization (#2891) (#2899). [Raynard Qiao]
|
||||||
* Fix DPI functions not seen as vpiModule (#2893). [Todd Strader]
|
* Fix DPI functions not seen as vpiModule (#2893). [Todd Strader]
|
||||||
* Fix bounds check in VL_SEL_IWII (#2910). [Krzysztof Bieganski]
|
* Fix bounds check in VL_SEL_IWII (#2910). [Krzysztof Bieganski]
|
||||||
|
* Fix slowdown in elaboration (#2911). [Nathan Graybeal]
|
||||||
* Fix initialization of assoc in assoc array (#2914). [myftptoyman]
|
* Fix initialization of assoc in assoc array (#2914). [myftptoyman]
|
||||||
* Fix make support for gmake 3.x (#2920) (#2921). [Philipp Wagner]
|
* Fix make support for gmake 3.x (#2920) (#2921). [Philipp Wagner]
|
||||||
* Fix VPI memory access for packed arrays (#2922). [Todd Strader]
|
* Fix VPI memory access for packed arrays (#2922). [Todd Strader]
|
||||||
|
|
|
||||||
|
|
@ -492,7 +492,7 @@ private:
|
||||||
// signed: Unsigned (11.8.1)
|
// signed: Unsigned (11.8.1)
|
||||||
// width: LHS + RHS
|
// width: LHS + RHS
|
||||||
AstNodeDType* vdtypep = m_vup->dtypeNullSkipRefp();
|
AstNodeDType* vdtypep = m_vup->dtypeNullSkipRefp();
|
||||||
userIterateAndNext(vdtypep, WidthVP(SELF, BOTH).p());
|
userIterate(vdtypep, WidthVP(SELF, BOTH).p());
|
||||||
if (VN_IS(vdtypep, QueueDType)) {
|
if (VN_IS(vdtypep, QueueDType)) {
|
||||||
// Queue "element 0" is lhsp, so we need to swap arguments
|
// Queue "element 0" is lhsp, so we need to swap arguments
|
||||||
auto* newp = new AstConsQueue(nodep->fileline(), nodep->rhsp()->unlinkFrBack(),
|
auto* newp = new AstConsQueue(nodep->fileline(), nodep->rhsp()->unlinkFrBack(),
|
||||||
|
|
@ -2457,7 +2457,7 @@ private:
|
||||||
AstNodeDType* fromDtp = nodep->fromp()->dtypep()->skipRefToEnump();
|
AstNodeDType* fromDtp = nodep->fromp()->dtypep()->skipRefToEnump();
|
||||||
AstBasicDType* basicp = fromDtp ? fromDtp->basicp() : nullptr;
|
AstBasicDType* basicp = fromDtp ? fromDtp->basicp() : nullptr;
|
||||||
UINFO(9, " from dt " << fromDtp << endl);
|
UINFO(9, " from dt " << fromDtp << endl);
|
||||||
userIterateAndNext(fromDtp, WidthVP(SELF, BOTH).p());
|
userIterate(fromDtp, WidthVP(SELF, BOTH).p());
|
||||||
if (AstEnumDType* adtypep = VN_CAST(fromDtp, EnumDType)) {
|
if (AstEnumDType* adtypep = VN_CAST(fromDtp, EnumDType)) {
|
||||||
methodCallEnum(nodep, adtypep);
|
methodCallEnum(nodep, adtypep);
|
||||||
} else if (AstAssocArrayDType* adtypep = VN_CAST(fromDtp, AssocArrayDType)) {
|
} else if (AstAssocArrayDType* adtypep = VN_CAST(fromDtp, AssocArrayDType)) {
|
||||||
|
|
@ -3310,7 +3310,9 @@ private:
|
||||||
while (const AstConstDType* vdtypep = VN_CAST(dtypep, ConstDType)) {
|
while (const AstConstDType* vdtypep = VN_CAST(dtypep, ConstDType)) {
|
||||||
dtypep = vdtypep->subDTypep()->skipRefp();
|
dtypep = vdtypep->subDTypep()->skipRefp();
|
||||||
}
|
}
|
||||||
userIterateAndNext(dtypep, WidthVP(SELF, BOTH).p());
|
|
||||||
|
userIterate(dtypep, WidthVP(SELF, BOTH).p());
|
||||||
|
|
||||||
if (auto* vdtypep = VN_CAST(dtypep, NodeUOrStructDType)) {
|
if (auto* vdtypep = VN_CAST(dtypep, NodeUOrStructDType)) {
|
||||||
VL_DO_DANGLING(patternUOrStruct(nodep, vdtypep, defaultp), nodep);
|
VL_DO_DANGLING(patternUOrStruct(nodep, vdtypep, defaultp), nodep);
|
||||||
} else if (auto* vdtypep = VN_CAST(dtypep, NodeArrayDType)) {
|
} else if (auto* vdtypep = VN_CAST(dtypep, NodeArrayDType)) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue