Fix tracing of typedefed 1D packed arrays with --trace-structs (#7237)

Used to incorrectly unroll 1D packed arrays of 'bit' or 'logic' into
elements when using --trace-structs if the array element type was given
via a typedef. Keep them as a single signal instead.
This commit is contained in:
Geza Lore 2026-03-11 12:46:13 +00:00 committed by GitHub
parent f351882cf0
commit be429ce956
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 20858 additions and 21719 deletions

View File

@ -616,13 +616,22 @@ class TraceDeclVisitor final : public VNVisitor {
return;
}
AstNodeDType* const subtypep = nodep->subDTypep()->skipRefToEnump();
// Do not unroll if the elements are simple 'bit', or 'logic'
if (AstBasicDType* const basicp = VN_CAST(subtypep->skipRefp(), BasicDType)) {
if (basicp->isBitLogic() && !basicp->isRanged()) {
addTraceDecl(VNumRange{}, nodep->width());
return;
}
}
VL_RESTORER(m_traName);
FileLine* const flp = nodep->fileline();
addToSubFunc(new AstTracePushPrefix{flp, m_traName, VTracePrefixType::ARRAY_PACKED,
nodep->left(), nodep->right()});
AstNodeDType* const subtypep = nodep->subDTypep()->skipRefToEnump();
// Always iterate left index to right index
const int inc = nodep->rangep()->ascending() ? 1 : -1;
for (int i = nodep->left(); i != nodep->right() + inc; i += inc) {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -920,14 +920,14 @@
(out\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[0] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff[1] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 12))
(ff[2] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff[3] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff[4] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff[5] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[6] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[7] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[0\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff\[1\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 12))
(ff\[2\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff\[3\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff\[4\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out4\[0\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 7))
(out4\[1\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 12))
(out4\[2\] (T0 120) (T1 50) (TZ 0) (TX 0) (TB 0) (TC 7))
@ -5899,14 +5899,14 @@
(out\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[0] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff[1] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 12))
(ff[2] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff[3] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff[4] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff[5] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[6] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[7] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[0\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff\[1\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 12))
(ff\[2\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff\[3\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff\[4\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out4\[0\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 7))
(out4\[1\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 12))
(out4\[2\] (T0 120) (T1 50) (TZ 0) (TX 0) (TB 0) (TC 7))
@ -10932,14 +10932,14 @@
(out\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[0] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff[1] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 10))
(ff[2] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff[3] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff[4] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff[5] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[6] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[7] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[0\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff\[1\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 10))
(ff\[2\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff\[3\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff\[4\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out4\[0\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 7))
(out4\[1\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 11))
(out4\[2\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 6))
@ -15911,14 +15911,14 @@
(out\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[0] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff[1] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 10))
(ff[2] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff[3] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff[4] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff[5] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[6] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[7] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[0\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff\[1\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 10))
(ff\[2\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff\[3\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff\[4\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out4\[0\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 7))
(out4\[1\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 11))
(out4\[2\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 6))

View File

@ -921,14 +921,14 @@
(out\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[0] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff[1] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 12))
(ff[2] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff[3] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff[4] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff[5] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[6] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[7] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[0\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff\[1\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 12))
(ff\[2\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff\[3\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff\[4\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out4\[0\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 7))
(out4\[1\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 12))
(out4\[2\] (T0 120) (T1 50) (TZ 0) (TX 0) (TB 0) (TC 7))
@ -5900,14 +5900,14 @@
(out\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[0] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff[1] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 12))
(ff[2] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff[3] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff[4] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff[5] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[6] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[7] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[0\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff\[1\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 12))
(ff\[2\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff\[3\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff\[4\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out4\[0\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 7))
(out4\[1\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 12))
(out4\[2\] (T0 120) (T1 50) (TZ 0) (TX 0) (TB 0) (TC 7))
@ -10933,14 +10933,14 @@
(out\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[0] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff[1] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 10))
(ff[2] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff[3] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff[4] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff[5] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[6] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[7] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[0\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff\[1\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 10))
(ff\[2\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff\[3\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff\[4\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out4\[0\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 7))
(out4\[1\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 11))
(out4\[2\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 6))
@ -15912,14 +15912,14 @@
(out\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[0] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff[1] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 10))
(ff[2] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff[3] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff[4] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff[5] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[6] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff[7] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[0\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 8))
(ff\[1\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 10))
(ff\[2\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 7))
(ff\[3\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 3))
(ff\[4\] (T0 100) (T1 70) (TZ 0) (TX 0) (TB 0) (TC 1))
(ff\[5\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[6\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(ff\[7\] (T0 170) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
(out4\[0\] (T0 90) (T1 80) (TZ 0) (TX 0) (TB 0) (TC 7))
(out4\[1\] (T0 80) (T1 90) (TZ 0) (TX 0) (TB 0) (TC 11))
(out4\[2\] (T0 110) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 6))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff