Internals: Refactor InsideRange common code. No functional change intended.
This commit is contained in:
parent
1fe5d5db79
commit
0cf44a9c4f
|
|
@ -193,6 +193,15 @@ AstExecGraph::~AstExecGraph() {
|
|||
VL_DO_DANGLING(delete m_depGraphp, m_depGraphp);
|
||||
}
|
||||
|
||||
AstNode* AstInsideRange::newAndFromInside(AstNode* exprp, AstNode* lhsp, AstNode* rhsp) {
|
||||
AstNode* ap = new AstGte(fileline(), exprp->cloneTree(true), lhsp);
|
||||
AstNode* bp = new AstLte(fileline(), exprp->cloneTree(true), rhsp);
|
||||
ap->fileline()->modifyWarnOff(V3ErrorCode::UNSIGNED, true);
|
||||
bp->fileline()->modifyWarnOff(V3ErrorCode::CMPCONST, true);
|
||||
AstNode* newp = new AstAnd(fileline(), ap, bp);
|
||||
return newp;
|
||||
}
|
||||
|
||||
bool AstVar::isSigPublic() const {
|
||||
return (m_sigPublic || (v3Global.opt.allPublic() && !isTemp() && !isGenVar()));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3898,6 +3898,8 @@ public:
|
|||
virtual string emitVerilog() { return "[%l:%r]"; }
|
||||
virtual string emitC() { V3ERROR_NA; return ""; }
|
||||
virtual bool cleanOut() const { return false; } // NA
|
||||
// Create AstAnd(AstGte(...), AstLte(...))
|
||||
AstNode* newAndFromInside(AstNode* exprp, AstNode* lhsp, AstNode* rhsp);
|
||||
};
|
||||
|
||||
class AstInitItem : public AstNode {
|
||||
|
|
|
|||
|
|
@ -333,15 +333,8 @@ private:
|
|||
condp = new AstConst(itemp->fileline(), AstConst::LogicFalse());
|
||||
} else if (AstInsideRange* irangep = VN_CAST(icondp, InsideRange)) {
|
||||
// Similar logic in V3Width::visit(AstInside)
|
||||
AstNode* ap = AstGte::newTyped(itemp->fileline(),
|
||||
cexprp->cloneTree(false),
|
||||
irangep->lhsp()->unlinkFrBack());
|
||||
AstNode* bp = AstLte::newTyped(itemp->fileline(),
|
||||
cexprp->cloneTree(false),
|
||||
irangep->rhsp()->unlinkFrBack());
|
||||
ap->fileline()->modifyWarnOff(V3ErrorCode::UNSIGNED, true);
|
||||
bp->fileline()->modifyWarnOff(V3ErrorCode::CMPCONST, true);
|
||||
condp = new AstAnd(itemp->fileline(), ap, bp);
|
||||
condp = irangep->newAndFromInside(cexprp, irangep->lhsp()->unlinkFrBack(),
|
||||
irangep->rhsp()->unlinkFrBack());
|
||||
} else if (iconstp && iconstp->num().isFourState()
|
||||
&& (nodep->casex() || nodep->casez() || nodep->caseInside())) {
|
||||
V3Number nummask (itemp, iconstp->width());
|
||||
|
|
|
|||
|
|
@ -1699,15 +1699,8 @@ private:
|
|||
AstNode* inewp;
|
||||
if (AstInsideRange* irangep = VN_CAST(itemp, InsideRange)) {
|
||||
// Similar logic in V3Case
|
||||
AstNode* ap = new AstGte(itemp->fileline(),
|
||||
nodep->exprp()->cloneTree(true),
|
||||
irangep->lhsp()->unlinkFrBack());
|
||||
AstNode* bp = new AstLte(itemp->fileline(),
|
||||
nodep->exprp()->cloneTree(true),
|
||||
irangep->rhsp()->unlinkFrBack());
|
||||
ap->fileline()->modifyWarnOff(V3ErrorCode::UNSIGNED, true);
|
||||
bp->fileline()->modifyWarnOff(V3ErrorCode::CMPCONST, true);
|
||||
inewp = new AstAnd(itemp->fileline(), ap, bp);
|
||||
inewp = irangep->newAndFromInside(nodep->exprp(), irangep->lhsp()->unlinkFrBack(),
|
||||
irangep->rhsp()->unlinkFrBack());
|
||||
} else {
|
||||
inewp = new AstEqWild(itemp->fileline(),
|
||||
nodep->exprp()->cloneTree(true),
|
||||
|
|
|
|||
Loading…
Reference in New Issue