Fix gcc array-bounds false positive in sequence event lowering
This commit is contained in:
parent
2b836858ef
commit
128d999871
|
|
@ -2756,8 +2756,13 @@ class AssertNfaVisitor final : public VNVisitor {
|
||||||
|
|
||||||
// Reuse the assertion machinery to inline the sequence body and hoist
|
// Reuse the assertion machinery to inline the sequence body and hoist
|
||||||
// its clocking event; this also clears the sequence's isReferenced flag.
|
// its clocking event; this also clears the sequence's isReferenced flag.
|
||||||
|
// Inline the referenced sequence first, then any nested sequence refs in
|
||||||
|
// its body -- foreaching over specp->propp() (a member access) rather than
|
||||||
|
// the freshly allocated specp keeps gcc -Warray-bounds from a false match.
|
||||||
|
AstSequence* const seqp = VN_AS(funcrefp->taskp(), Sequence);
|
||||||
AstPropSpec* const specp = new AstPropSpec{flp, nullptr, nullptr, funcrefp};
|
AstPropSpec* const specp = new AstPropSpec{flp, nullptr, nullptr, funcrefp};
|
||||||
inlineAllSequenceRefs(specp);
|
inlineSequenceRef(funcrefp, seqp);
|
||||||
|
inlineAllSequenceRefs(specp->propp());
|
||||||
if (hoistClockedSeq(specp)) { // Unsupported clocking form, already reported
|
if (hoistClockedSeq(specp)) { // Unsupported clocking form, already reported
|
||||||
VL_DO_DANGLING(pushDeletep(specp), specp);
|
VL_DO_DANGLING(pushDeletep(specp), specp);
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
%Error-UNSUPPORTED: t/t_sequence_ref_unsup.v:9:12: Unsupported: sequence referenced outside assertion property
|
%Error-UNSUPPORTED: t/t_sequence_ref_unsup.v:14:6: Unsupported: '@' event control on a sequence without a clocking event
|
||||||
: ... note: In instance 't'
|
14 | @s_one;
|
||||||
9 | sequence s_one;
|
| ^~~~~
|
||||||
| ^~~~~
|
|
||||||
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
||||||
%Error: Exiting due to
|
%Error: Exiting due to
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue