Internals: Carry 'with' clause as op4 on AstNodeFTaskRef (#7114)
op4 is now available to carry the 'with' clause explicitly instead of being part of the argument lit. Will strengthen 'pinsp' to be List[AstArg] next.
This commit is contained in:
parent
03ed6a5bd3
commit
e023113b79
|
|
@ -219,8 +219,9 @@ public:
|
||||||
};
|
};
|
||||||
class AstNodeFTaskRef VL_NOT_FINAL : public AstNodeExpr {
|
class AstNodeFTaskRef VL_NOT_FINAL : public AstNodeExpr {
|
||||||
// A reference to a task (or function)
|
// A reference to a task (or function)
|
||||||
// op2 used by some sub-types only
|
// op1 used by some sub-types only
|
||||||
// @astgen op3 := pinsp : List[AstNodeExpr]
|
// @astgen op2 := pinsp : List[AstNodeExpr]
|
||||||
|
// @astgen op3 := withp : Optional[AstWith]
|
||||||
// @astgen op4 := scopeNamep : Optional[AstScopeName]
|
// @astgen op4 := scopeNamep : Optional[AstScopeName]
|
||||||
//
|
//
|
||||||
// @astgen ptr := m_taskp : Optional[AstNodeFTask] // [AfterLink] Pointer to task referenced
|
// @astgen ptr := m_taskp : Optional[AstNodeFTask] // [AfterLink] Pointer to task referenced
|
||||||
|
|
@ -4503,7 +4504,7 @@ public:
|
||||||
class AstMethodCall final : public AstNodeFTaskRef {
|
class AstMethodCall final : public AstNodeFTaskRef {
|
||||||
// A reference to a member task (or function)
|
// A reference to a member task (or function)
|
||||||
// Don't need the class we are extracting from, as the "fromp()"'s datatype can get us to it
|
// Don't need the class we are extracting from, as the "fromp()"'s datatype can get us to it
|
||||||
// @astgen op2 := fromp : AstNodeExpr
|
// @astgen op1 := fromp : AstNodeExpr
|
||||||
//
|
//
|
||||||
public:
|
public:
|
||||||
AstMethodCall(FileLine* fl, AstNodeExpr* fromp, VFlagChildDType, const string& name,
|
AstMethodCall(FileLine* fl, AstNodeExpr* fromp, VFlagChildDType, const string& name,
|
||||||
|
|
|
||||||
|
|
@ -1014,6 +1014,7 @@ class EmitVBaseVisitorConst VL_NOT_FINAL : public VNVisitorConst {
|
||||||
puts("(");
|
puts("(");
|
||||||
iterateAndNextConstNull(nodep->pinsp());
|
iterateAndNextConstNull(nodep->pinsp());
|
||||||
puts(")");
|
puts(")");
|
||||||
|
iterateConstNull(nodep->withp());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void visit(AstCCall* nodep) override {
|
void visit(AstCCall* nodep) override {
|
||||||
|
|
@ -1023,6 +1024,12 @@ class EmitVBaseVisitorConst VL_NOT_FINAL : public VNVisitorConst {
|
||||||
puts(")");
|
puts(")");
|
||||||
}
|
}
|
||||||
void visit(AstArg* nodep) override { iterateAndNextConstNull(nodep->exprp()); }
|
void visit(AstArg* nodep) override { iterateAndNextConstNull(nodep->exprp()); }
|
||||||
|
void visit(AstWith* nodep) override {
|
||||||
|
putfs(nodep, "with (");
|
||||||
|
iterateConstNull(nodep->exprp());
|
||||||
|
puts(") ");
|
||||||
|
}
|
||||||
|
void visit(AstLambdaArgRef* nodep) override { putfs(nodep, nodep->name()); }
|
||||||
void visit(AstPrintTimeScale* nodep) override {
|
void visit(AstPrintTimeScale* nodep) override {
|
||||||
puts(nodep->verilogKwd());
|
puts(nodep->verilogKwd());
|
||||||
puts(";\n");
|
puts(";\n");
|
||||||
|
|
|
||||||
|
|
@ -2016,7 +2016,7 @@ class LinkDotFindVisitor final : public VNVisitor {
|
||||||
AstLambdaArgRef* const valueArgRefp = new AstLambdaArgRef{argFl, name, false};
|
AstLambdaArgRef* const valueArgRefp = new AstLambdaArgRef{argFl, name, false};
|
||||||
AstWith* const newp
|
AstWith* const newp
|
||||||
= new AstWith{nodep->fileline(), indexArgRefp, valueArgRefp, exprOrConstraintsp};
|
= new AstWith{nodep->fileline(), indexArgRefp, valueArgRefp, exprOrConstraintsp};
|
||||||
funcrefp->addPinsp(newp);
|
funcrefp->withp(newp);
|
||||||
}
|
}
|
||||||
funcrefp->addPinsp(argp);
|
funcrefp->addPinsp(argp);
|
||||||
nodep->replaceWith(nodep->funcrefp()->unlinkFrBack());
|
nodep->replaceWith(nodep->funcrefp()->unlinkFrBack());
|
||||||
|
|
@ -4765,7 +4765,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
|
||||||
VL_RESTORER(m_randMethodCallp);
|
VL_RESTORER(m_randMethodCallp);
|
||||||
{
|
{
|
||||||
m_ds.init(m_curSymp);
|
m_ds.init(m_curSymp);
|
||||||
if (nodep->name() == "randomize" && nodep->pinsp()) {
|
if (nodep->name() == "randomize" && (nodep->pinsp() || nodep->withp())) {
|
||||||
m_randMethodCallp = nodep;
|
m_randMethodCallp = nodep;
|
||||||
const AstNodeDType* fromDtp = nodep->fromp()->dtypep();
|
const AstNodeDType* fromDtp = nodep->fromp()->dtypep();
|
||||||
if (!fromDtp) {
|
if (!fromDtp) {
|
||||||
|
|
@ -4775,7 +4775,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
|
||||||
fromDtp = getExprDTypep(nodep->fromp());
|
fromDtp = getExprDTypep(nodep->fromp());
|
||||||
}
|
}
|
||||||
if (!fromDtp) {
|
if (!fromDtp) {
|
||||||
if (VN_IS(nodep->pinsp(), With)) {
|
if (nodep->withp()) {
|
||||||
nodep->v3warn(
|
nodep->v3warn(
|
||||||
E_UNSUPPORTED,
|
E_UNSUPPORTED,
|
||||||
"Unsupported: 'randomize() with' on complex expressions");
|
"Unsupported: 'randomize() with' on complex expressions");
|
||||||
|
|
@ -4889,10 +4889,11 @@ class LinkDotResolveVisitor final : public VNVisitor {
|
||||||
// Found a Var, everything following is method call.
|
// Found a Var, everything following is method call.
|
||||||
// {scope}.{var}.HERE {method} ( ARGS )
|
// {scope}.{var}.HERE {method} ( ARGS )
|
||||||
AstNodeExpr* const varEtcp = VN_AS(m_ds.m_dotp->lhsp()->unlinkFrBack(), NodeExpr);
|
AstNodeExpr* const varEtcp = VN_AS(m_ds.m_dotp->lhsp()->unlinkFrBack(), NodeExpr);
|
||||||
AstNodeExpr* argsp = nullptr;
|
AstNodeExpr* const argsp = nodep->pinsp();
|
||||||
if (nodep->pinsp()) argsp = nodep->pinsp()->unlinkFrBackWithNext();
|
if (argsp) argsp->unlinkFrBackWithNext();
|
||||||
AstNode* const newp = new AstMethodCall{nodep->fileline(), varEtcp, VFlagChildDType{},
|
AstMethodCall* const newp = new AstMethodCall{nodep->fileline(), varEtcp,
|
||||||
nodep->name(), argsp};
|
VFlagChildDType{}, nodep->name(), argsp};
|
||||||
|
if (AstWith* const withp = nodep->withp()) newp->withp(withp->unlinkFrBack());
|
||||||
nodep->replaceWith(newp);
|
nodep->replaceWith(newp);
|
||||||
VL_DO_DANGLING(pushDeletep(nodep), nodep);
|
VL_DO_DANGLING(pushDeletep(nodep), nodep);
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -336,6 +336,7 @@ class LinkLValueVisitor final : public VNVisitor {
|
||||||
iterate(pinp);
|
iterate(pinp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (nodep->withp()) iterate(nodep->withp());
|
||||||
}
|
}
|
||||||
void visit(AstConstraint* nodep) override {
|
void visit(AstConstraint* nodep) override {
|
||||||
VL_RESTORER(m_setIfRand);
|
VL_RESTORER(m_setIfRand);
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,6 @@ class RandomizeMarkVisitor final : public VNVisitor {
|
||||||
if (!m_inStdWith || !m_stdRandCallp) return false;
|
if (!m_inStdWith || !m_stdRandCallp) return false;
|
||||||
|
|
||||||
for (AstNode* pinp = m_stdRandCallp->pinsp(); pinp; pinp = pinp->nextp()) {
|
for (AstNode* pinp = m_stdRandCallp->pinsp(); pinp; pinp = pinp->nextp()) {
|
||||||
if (VN_IS(pinp, With)) continue;
|
|
||||||
const AstArg* const argp = VN_CAST(pinp, Arg);
|
const AstArg* const argp = VN_CAST(pinp, Arg);
|
||||||
if (!argp) continue;
|
if (!argp) continue;
|
||||||
const AstNodeExpr* exprp = argp->exprp();
|
const AstNodeExpr* exprp = argp->exprp();
|
||||||
|
|
@ -693,11 +692,7 @@ class RandomizeMarkVisitor final : public VNVisitor {
|
||||||
void visit(AstWith* nodep) override {
|
void visit(AstWith* nodep) override {
|
||||||
VL_RESTORER(m_withp);
|
VL_RESTORER(m_withp);
|
||||||
m_withp = nodep;
|
m_withp = nodep;
|
||||||
for (AstNode* pinp = m_stdRandCallp ? m_stdRandCallp->pinsp() : nullptr; pinp;
|
if (m_stdRandCallp && nodep == m_stdRandCallp->withp()) m_inStdWith = true;
|
||||||
pinp = pinp->nextp()) {
|
|
||||||
AstWith* const withp = VN_CAST(pinp, With);
|
|
||||||
if (withp == nodep) m_inStdWith = true;
|
|
||||||
}
|
|
||||||
iterateChildrenConst(nodep);
|
iterateChildrenConst(nodep);
|
||||||
m_inStdWith = false;
|
m_inStdWith = false;
|
||||||
}
|
}
|
||||||
|
|
@ -3646,10 +3641,7 @@ class RandomizeVisitor final : public VNVisitor {
|
||||||
new AstConst{nodep->fileline(), AstConst::WidthedValue{}, 32, 1}});
|
new AstConst{nodep->fileline(), AstConst::WidthedValue{}, 32, 1}});
|
||||||
std::unique_ptr<CaptureVisitor> withCapturep;
|
std::unique_ptr<CaptureVisitor> withCapturep;
|
||||||
int argn = 0;
|
int argn = 0;
|
||||||
AstWith* withp = nullptr;
|
AstWith* const withp = nodep->withp();
|
||||||
for (AstNode* pinp = nodep->pinsp(); pinp; pinp = pinp->nextp()) {
|
|
||||||
if ((withp = VN_CAST(pinp, With))) break;
|
|
||||||
}
|
|
||||||
for (const AstNode* pinp = nodep->pinsp(); pinp; pinp = pinp->nextp()) {
|
for (const AstNode* pinp = nodep->pinsp(); pinp; pinp = pinp->nextp()) {
|
||||||
const AstArg* const argp = VN_CAST(pinp, Arg);
|
const AstArg* const argp = VN_CAST(pinp, Arg);
|
||||||
if (!argp) continue;
|
if (!argp) continue;
|
||||||
|
|
@ -3722,14 +3714,8 @@ class RandomizeVisitor final : public VNVisitor {
|
||||||
= new AstAnd{fl, new AstVarRef{fl, fvarp, VAccess::READ}, solverCallp};
|
= new AstAnd{fl, new AstVarRef{fl, fvarp, VAccess::READ}, solverCallp};
|
||||||
randomizeFuncp->addStmtsp(
|
randomizeFuncp->addStmtsp(
|
||||||
new AstAssign{fl, new AstVarRef{fl, fvarp, VAccess::WRITE}, andExprp});
|
new AstAssign{fl, new AstVarRef{fl, fvarp, VAccess::WRITE}, andExprp});
|
||||||
}
|
// Remove With nodes as processed
|
||||||
// Remove With nodes from pins as they have been processed
|
VL_DO_DANGLING(withp->unlinkFrBack()->deleteTree(), withp);
|
||||||
for (AstNode* pinp = nodep->pinsp(); pinp;) {
|
|
||||||
AstNode* const nextp = pinp->nextp();
|
|
||||||
if (VN_IS(pinp, With)) {
|
|
||||||
VL_DO_DANGLING(pinp->unlinkFrBack()->deleteTree(), pinp);
|
|
||||||
}
|
|
||||||
pinp = nextp;
|
|
||||||
}
|
}
|
||||||
// Replace the node with a call to that function
|
// Replace the node with a call to that function
|
||||||
nodep->name(randomizeFuncp->name());
|
nodep->name(randomizeFuncp->name());
|
||||||
|
|
@ -3743,7 +3729,7 @@ class RandomizeVisitor final : public VNVisitor {
|
||||||
}
|
}
|
||||||
handleRandomizeArgs(nodep);
|
handleRandomizeArgs(nodep);
|
||||||
|
|
||||||
AstWith* const withp = VN_CAST(nodep->pinsp(), With);
|
AstWith* const withp = nodep->withp();
|
||||||
if (!withp) {
|
if (!withp) {
|
||||||
iterateChildren(nodep);
|
iterateChildren(nodep);
|
||||||
wrapRandomizeCallWithNullGuard(nodep);
|
wrapRandomizeCallWithNullGuard(nodep);
|
||||||
|
|
|
||||||
|
|
@ -505,6 +505,7 @@ class SplitUnpackedVarVisitor final : public VNVisitor, public SplitVarImpl {
|
||||||
}
|
}
|
||||||
m_foundTargetVar.clear();
|
m_foundTargetVar.clear();
|
||||||
}
|
}
|
||||||
|
if (nodep->withp()) iterate(nodep->withp());
|
||||||
}
|
}
|
||||||
void visit(AstPin* nodep) override {
|
void visit(AstPin* nodep) override {
|
||||||
UINFO(5, nodep->modVarp()->prettyNameQ() << " pin ");
|
UINFO(5, nodep->modVarp()->prettyNameQ() << " pin ");
|
||||||
|
|
|
||||||
|
|
@ -1777,7 +1777,6 @@ V3TaskConnects V3Task::taskConnects(AstNodeFTaskRef* nodep, AstNode* taskStmtsp,
|
||||||
bool reorganize = false;
|
bool reorganize = false;
|
||||||
for (AstNode *nextp, *pinp = nodep->pinsp(); pinp; pinp = nextp) {
|
for (AstNode *nextp, *pinp = nodep->pinsp(); pinp; pinp = nextp) {
|
||||||
nextp = pinp->nextp();
|
nextp = pinp->nextp();
|
||||||
if (VN_IS(pinp, With)) continue;
|
|
||||||
AstArg* const argp = VN_AS(pinp, Arg);
|
AstArg* const argp = VN_AS(pinp, Arg);
|
||||||
UASSERT_OBJ(argp, pinp, "Non-arg under ftask reference");
|
UASSERT_OBJ(argp, pinp, "Non-arg under ftask reference");
|
||||||
if (argp->name() != "") {
|
if (argp->name() != "") {
|
||||||
|
|
|
||||||
|
|
@ -3611,7 +3611,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
// Should check types the method requires, but at present we don't do much
|
// Should check types the method requires, but at present we don't do much
|
||||||
userIterate(nodep->fromp(), WidthVP{SELF, BOTH}.p());
|
userIterate(nodep->fromp(), WidthVP{SELF, BOTH}.p());
|
||||||
// Args are checked within each particular method's decode
|
// Args are checked within each particular method's decode
|
||||||
// Any AstWith is checked later when know types, in methodWithArgument
|
// Any AstWith is checked later when know types, in methodWithClause
|
||||||
// Find the fromp dtype - should be a class
|
// Find the fromp dtype - should be a class
|
||||||
UASSERT_OBJ(nodep->fromp() && nodep->fromp()->dtypep(), nodep, "Unsized expression");
|
UASSERT_OBJ(nodep->fromp() && nodep->fromp()->dtypep(), nodep, "Unsized expression");
|
||||||
AstNodeDType* const fromDtp = nodep->fromp()->dtypep()->skipRefToEnump();
|
AstNodeDType* const fromDtp = nodep->fromp()->dtypep()->skipRefToEnump();
|
||||||
|
|
@ -3652,19 +3652,17 @@ class WidthVisitor final : public VNVisitor {
|
||||||
nodep->dtypeSetVoid();
|
nodep->dtypeSetVoid();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AstWith* methodWithArgument(AstNodeFTaskRef* nodep, bool required, bool arbReturn,
|
AstWith* methodWithClause(AstNodeFTaskRef* nodep, bool required, bool arbReturn,
|
||||||
AstNodeDType* returnDtp, AstNodeDType* indexDtp,
|
AstNodeDType* returnDtp, AstNodeDType* indexDtp,
|
||||||
AstNodeDType* valueDtp) {
|
AstNodeDType* valueDtp) {
|
||||||
UASSERT_OBJ(arbReturn || returnDtp, nodep, "Null return type");
|
UASSERT_OBJ(arbReturn || returnDtp, nodep, "Null return type");
|
||||||
for (AstNode* pinp = nodep->pinsp(); pinp; pinp = pinp->nextp()) {
|
if (AstWith* const withp = nodep->withp()) {
|
||||||
if (AstWith* const withp = VN_CAST(pinp, With)) {
|
|
||||||
withp->indexArgRefp()->dtypep(indexDtp);
|
withp->indexArgRefp()->dtypep(indexDtp);
|
||||||
withp->valueArgRefp()->dtypep(valueDtp);
|
withp->valueArgRefp()->dtypep(valueDtp);
|
||||||
userIterate(withp, WidthVP{returnDtp, BOTH}.p());
|
userIterate(withp, WidthVP{returnDtp, BOTH}.p());
|
||||||
withp->unlinkFrBack();
|
withp->unlinkFrBack();
|
||||||
return withp;
|
return withp;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (required) {
|
if (required) {
|
||||||
nodep->v3error("'with' statement is required for ." << nodep->prettyName()
|
nodep->v3error("'with' statement is required for ." << nodep->prettyName()
|
||||||
<< " method");
|
<< " method");
|
||||||
|
|
@ -3673,13 +3671,11 @@ class WidthVisitor final : public VNVisitor {
|
||||||
}
|
}
|
||||||
void methodOkArguments(AstNodeFTaskRef* nodep, int minArg, int maxArg) {
|
void methodOkArguments(AstNodeFTaskRef* nodep, int minArg, int maxArg) {
|
||||||
int narg = 0;
|
int narg = 0;
|
||||||
for (AstNode* argp = nodep->pinsp(); argp; argp = argp->nextp()) {
|
if (AstWith* const withp = nodep->withp()) {
|
||||||
if (VN_IS(argp, With)) {
|
withp->v3error("'with' not legal on this method");
|
||||||
argp->v3error("'with' not legal on this method");
|
VL_DO_DANGLING(pushDeletep(withp->unlinkFrBack()), withp);
|
||||||
// Delete all arguments as nextp() otherwise dangling
|
|
||||||
VL_DO_DANGLING(pushDeletep(argp->unlinkFrBackWithNext()), argp);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
for (AstNode* argp = nodep->pinsp(); argp; argp = argp->nextp()) {
|
||||||
++narg;
|
++narg;
|
||||||
UASSERT_OBJ(VN_IS(argp, Arg), nodep, "Method arg without Arg type");
|
UASSERT_OBJ(VN_IS(argp, Arg), nodep, "Method arg without Arg type");
|
||||||
}
|
}
|
||||||
|
|
@ -3859,7 +3855,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
|| nodep->name() == "sum" || nodep->name() == "product") {
|
|| nodep->name() == "sum" || nodep->name() == "product") {
|
||||||
// All value return
|
// All value return
|
||||||
AstWith* const withp
|
AstWith* const withp
|
||||||
= methodWithArgument(nodep, false, false, adtypep->subDTypep(),
|
= methodWithClause(nodep, false, false, adtypep->subDTypep(),
|
||||||
adtypep->findStringDType(), adtypep->subDTypep());
|
adtypep->findStringDType(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
||||||
|
|
@ -3877,7 +3873,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
} else if (nodep->name() == "find" || nodep->name() == "find_first"
|
} else if (nodep->name() == "find" || nodep->name() == "find_first"
|
||||||
|| nodep->name() == "find_last") {
|
|| nodep->name() == "find_last") {
|
||||||
AstWith* const withp
|
AstWith* const withp
|
||||||
= methodWithArgument(nodep, true, false, nodep->findBitDType(),
|
= methodWithClause(nodep, true, false, nodep->findBitDType(),
|
||||||
adtypep->findStringDType(), adtypep->subDTypep());
|
adtypep->findStringDType(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
||||||
|
|
@ -3952,7 +3948,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
} else if (nodep->name() == "and" || nodep->name() == "or" || nodep->name() == "xor"
|
} else if (nodep->name() == "and" || nodep->name() == "or" || nodep->name() == "xor"
|
||||||
|| nodep->name() == "sum" || nodep->name() == "product") {
|
|| nodep->name() == "sum" || nodep->name() == "product") {
|
||||||
// All value return
|
// All value return
|
||||||
AstWith* const withp = methodWithArgument(nodep, false, false, adtypep->subDTypep(),
|
AstWith* const withp = methodWithClause(nodep, false, false, adtypep->subDTypep(),
|
||||||
adtypep->keyDTypep(), adtypep->subDTypep());
|
adtypep->keyDTypep(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
||||||
|
|
@ -3962,7 +3958,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
if (!nodep->firstAbovep()) newp->dtypeSetVoid();
|
if (!nodep->firstAbovep()) newp->dtypeSetVoid();
|
||||||
} else if (nodep->name() == "min" || nodep->name() == "max" || nodep->name() == "unique"
|
} else if (nodep->name() == "min" || nodep->name() == "max" || nodep->name() == "unique"
|
||||||
|| nodep->name() == "unique_index") {
|
|| nodep->name() == "unique_index") {
|
||||||
AstWith* const withp = methodWithArgument(
|
AstWith* const withp = methodWithClause(
|
||||||
nodep, false, true, nullptr, nodep->findUInt32DType(), adtypep->subDTypep());
|
nodep, false, true, nullptr, nodep->findUInt32DType(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
||||||
|
|
@ -3976,7 +3972,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
if (!nodep->firstAbovep()) newp->dtypeSetVoid();
|
if (!nodep->firstAbovep()) newp->dtypeSetVoid();
|
||||||
} else if (nodep->name() == "find" || nodep->name() == "find_first"
|
} else if (nodep->name() == "find" || nodep->name() == "find_first"
|
||||||
|| nodep->name() == "find_last") {
|
|| nodep->name() == "find_last") {
|
||||||
AstWith* const withp = methodWithArgument(nodep, true, false, nodep->findBitDType(),
|
AstWith* const withp = methodWithClause(nodep, true, false, nodep->findBitDType(),
|
||||||
adtypep->keyDTypep(), adtypep->subDTypep());
|
adtypep->keyDTypep(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
||||||
|
|
@ -3986,7 +3982,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
if (!nodep->firstAbovep()) newp->dtypeSetVoid();
|
if (!nodep->firstAbovep()) newp->dtypeSetVoid();
|
||||||
} else if (nodep->name() == "find_index" || nodep->name() == "find_first_index"
|
} else if (nodep->name() == "find_index" || nodep->name() == "find_first_index"
|
||||||
|| nodep->name() == "find_last_index") {
|
|| nodep->name() == "find_last_index") {
|
||||||
AstWith* const withp = methodWithArgument(nodep, true, false, nodep->findBitDType(),
|
AstWith* const withp = methodWithClause(nodep, true, false, nodep->findBitDType(),
|
||||||
adtypep->keyDTypep(), adtypep->subDTypep());
|
adtypep->keyDTypep(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
||||||
|
|
@ -4080,7 +4076,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
|| nodep->name() == "rsort") {
|
|| nodep->name() == "rsort") {
|
||||||
AstWith* withp = nullptr;
|
AstWith* withp = nullptr;
|
||||||
if (nodep->name() == "sort" || nodep->name() == "rsort") {
|
if (nodep->name() == "sort" || nodep->name() == "rsort") {
|
||||||
withp = methodWithArgument(nodep, false, true, nullptr, nodep->findUInt32DType(),
|
withp = methodWithClause(nodep, false, true, nullptr, nodep->findUInt32DType(),
|
||||||
adtypep->subDTypep());
|
adtypep->subDTypep());
|
||||||
}
|
}
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
|
|
@ -4090,7 +4086,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
newp->dtypeSetVoid();
|
newp->dtypeSetVoid();
|
||||||
} else if (nodep->name() == "min" || nodep->name() == "max" || nodep->name() == "unique"
|
} else if (nodep->name() == "min" || nodep->name() == "max" || nodep->name() == "unique"
|
||||||
|| nodep->name() == "unique_index") {
|
|| nodep->name() == "unique_index") {
|
||||||
AstWith* const withp = methodWithArgument(
|
AstWith* const withp = methodWithClause(
|
||||||
nodep, false, true, nullptr, nodep->findUInt32DType(), adtypep->subDTypep());
|
nodep, false, true, nullptr, nodep->findUInt32DType(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
||||||
|
|
@ -4105,7 +4101,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
} else if (nodep->name() == "find" || nodep->name() == "find_first"
|
} else if (nodep->name() == "find" || nodep->name() == "find_first"
|
||||||
|| nodep->name() == "find_last" || nodep->name() == "find_index") {
|
|| nodep->name() == "find_last" || nodep->name() == "find_index") {
|
||||||
AstWith* const withp
|
AstWith* const withp
|
||||||
= methodWithArgument(nodep, true, false, nodep->findBitDType(),
|
= methodWithClause(nodep, true, false, nodep->findBitDType(),
|
||||||
nodep->findUInt32DType(), adtypep->subDTypep());
|
nodep->findUInt32DType(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
||||||
|
|
@ -4116,7 +4112,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
} else if (nodep->name() == "find_index" || nodep->name() == "find_first_index"
|
} else if (nodep->name() == "find_index" || nodep->name() == "find_first_index"
|
||||||
|| nodep->name() == "find_last_index") {
|
|| nodep->name() == "find_last_index") {
|
||||||
AstWith* const withp
|
AstWith* const withp
|
||||||
= methodWithArgument(nodep, true, false, nodep->findBitDType(),
|
= methodWithClause(nodep, true, false, nodep->findBitDType(),
|
||||||
nodep->findUInt32DType(), adtypep->subDTypep());
|
nodep->findUInt32DType(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
||||||
|
|
@ -4161,7 +4157,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
|| nodep->name() == "sum" || nodep->name() == "product") {
|
|| nodep->name() == "sum" || nodep->name() == "product") {
|
||||||
// All value return
|
// All value return
|
||||||
AstWith* const withp
|
AstWith* const withp
|
||||||
= methodWithArgument(nodep, false, false, adtypep->subDTypep(),
|
= methodWithClause(nodep, false, false, adtypep->subDTypep(),
|
||||||
nodep->findUInt32DType(), adtypep->subDTypep());
|
nodep->findUInt32DType(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
||||||
|
|
@ -4262,7 +4258,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
} else if (nodep->name() == "and" || nodep->name() == "or" || nodep->name() == "xor"
|
} else if (nodep->name() == "and" || nodep->name() == "or" || nodep->name() == "xor"
|
||||||
|| nodep->name() == "sum" || nodep->name() == "product") {
|
|| nodep->name() == "sum" || nodep->name() == "product") {
|
||||||
AstWith* const withp
|
AstWith* const withp
|
||||||
= methodWithArgument(nodep, false, false, adtypep->subDTypep(),
|
= methodWithClause(nodep, false, false, adtypep->subDTypep(),
|
||||||
nodep->findUInt32DType(), adtypep->subDTypep());
|
nodep->findUInt32DType(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
methodCallLValueRecurse(nodep, nodep->fromp(), VAccess::READ);
|
||||||
|
|
@ -4410,7 +4406,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
if (nodep->name() == "randomize") {
|
if (nodep->name() == "randomize") {
|
||||||
VL_RESTORER(m_randomizeFromp);
|
VL_RESTORER(m_randomizeFromp);
|
||||||
m_randomizeFromp = nodep->fromp();
|
m_randomizeFromp = nodep->fromp();
|
||||||
withp = methodWithArgument(nodep, false, false, adtypep->findVoidDType(),
|
withp = methodWithClause(nodep, false, false, adtypep->findVoidDType(),
|
||||||
adtypep->findBitDType(), adtypep);
|
adtypep->findBitDType(), adtypep);
|
||||||
for (AstNode* pinp = nodep->pinsp(); pinp; pinp = pinp->nextp()) {
|
for (AstNode* pinp = nodep->pinsp(); pinp; pinp = pinp->nextp()) {
|
||||||
if (AstArg* const argp = VN_CAST(pinp, Arg)) {
|
if (AstArg* const argp = VN_CAST(pinp, Arg)) {
|
||||||
|
|
@ -4476,7 +4472,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
}
|
}
|
||||||
nodep->dtypeSetVoid();
|
nodep->dtypeSetVoid();
|
||||||
}
|
}
|
||||||
if (withp) nodep->addPinsp(withp);
|
if (withp) nodep->withp(withp);
|
||||||
processFTaskRefArgs(nodep);
|
processFTaskRefArgs(nodep);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
@ -4583,7 +4579,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
|
|
||||||
if (methodId) {
|
if (methodId) {
|
||||||
AstWith* const withp
|
AstWith* const withp
|
||||||
= methodWithArgument(nodep, false, false, adtypep->subDTypep(),
|
= methodWithClause(nodep, false, false, adtypep->subDTypep(),
|
||||||
nodep->findUInt32DType(), adtypep->subDTypep());
|
nodep->findUInt32DType(), adtypep->subDTypep());
|
||||||
methodOkArguments(nodep, 0, 0);
|
methodOkArguments(nodep, 0, 0);
|
||||||
if (withp) {
|
if (withp) {
|
||||||
|
|
@ -6937,13 +6933,13 @@ class WidthVisitor final : public VNVisitor {
|
||||||
if (nodep->classOrPackagep() && nodep->classOrPackagep()->name() == "std") {
|
if (nodep->classOrPackagep() && nodep->classOrPackagep()->name() == "std") {
|
||||||
v3Global.useRandomizeMethods(true);
|
v3Global.useRandomizeMethods(true);
|
||||||
AstNodeDType* const adtypep = nodep->findBitDType();
|
AstNodeDType* const adtypep = nodep->findBitDType();
|
||||||
withp = methodWithArgument(nodep, false, false, adtypep->findVoidDType(),
|
withp = methodWithClause(nodep, false, false, adtypep->findVoidDType(),
|
||||||
adtypep->findBitDType(), adtypep);
|
adtypep->findBitDType(), adtypep);
|
||||||
for (const AstNode* argp = nodep->pinsp(); argp; argp = argp->nextp())
|
for (const AstNode* argp = nodep->pinsp(); argp; argp = argp->nextp())
|
||||||
userIterateAndNext(VN_AS(argp, Arg)->exprp(), WidthVP{SELF, BOTH}.p());
|
userIterateAndNext(VN_AS(argp, Arg)->exprp(), WidthVP{SELF, BOTH}.p());
|
||||||
handleStdRandomizeArgs(nodep); // Provided args should be in current scope
|
handleStdRandomizeArgs(nodep); // Provided args should be in current scope
|
||||||
processFTaskRefArgs(nodep);
|
processFTaskRefArgs(nodep);
|
||||||
nodep->addPinsp(withp);
|
if (withp) nodep->withp(withp);
|
||||||
nodep->didWidth(true);
|
nodep->didWidth(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -6952,7 +6948,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
AstClassRefDType* const adtypep
|
AstClassRefDType* const adtypep
|
||||||
= new AstClassRefDType{nodep->fileline(), classp, nullptr};
|
= new AstClassRefDType{nodep->fileline(), classp, nullptr};
|
||||||
v3Global.rootp()->typeTablep()->addTypesp(adtypep);
|
v3Global.rootp()->typeTablep()->addTypesp(adtypep);
|
||||||
withp = methodWithArgument(nodep, false, false, adtypep->findVoidDType(),
|
withp = methodWithClause(nodep, false, false, adtypep->findVoidDType(),
|
||||||
adtypep->findBitDType(), adtypep);
|
adtypep->findBitDType(), adtypep);
|
||||||
for (const AstNode* argp = nodep->pinsp(); argp; argp = argp->nextp())
|
for (const AstNode* argp = nodep->pinsp(); argp; argp = argp->nextp())
|
||||||
userIterateAndNext(VN_AS(argp, Arg)->exprp(), WidthVP{SELF, BOTH}.p());
|
userIterateAndNext(VN_AS(argp, Arg)->exprp(), WidthVP{SELF, BOTH}.p());
|
||||||
|
|
@ -6991,7 +6987,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
}
|
}
|
||||||
UASSERT_OBJ(nodep->taskp(), nodep, "Unlinked");
|
UASSERT_OBJ(nodep->taskp(), nodep, "Unlinked");
|
||||||
if (nodep->didWidth()) {
|
if (nodep->didWidth()) {
|
||||||
nodep->addPinsp(withp);
|
if (withp) nodep->withp(withp);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((nodep->taskp()->classMethod() && !nodep->taskp()->isStatic())
|
if ((nodep->taskp()->classMethod() && !nodep->taskp()->isStatic())
|
||||||
|
|
@ -7022,7 +7018,7 @@ class WidthVisitor final : public VNVisitor {
|
||||||
}
|
}
|
||||||
// And do the arguments to the task/function too
|
// And do the arguments to the task/function too
|
||||||
processFTaskRefArgs(nodep);
|
processFTaskRefArgs(nodep);
|
||||||
nodep->addPinsp(withp);
|
if (withp) nodep->withp(withp);
|
||||||
nodep->didWidth(true);
|
nodep->didWidth(true);
|
||||||
// See steps that follow in visit(AstFuncRef*)
|
// See steps that follow in visit(AstFuncRef*)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -291,6 +291,7 @@ module Vt_debug_emitv_t;
|
||||||
sum = $random('sha);
|
sum = $random('sha);
|
||||||
sum = $urandom();
|
sum = $urandom();
|
||||||
sum = $urandom('sha);
|
sum = $urandom('sha);
|
||||||
|
sum = array.r_sum(with ((item * 'sh2)) );
|
||||||
if ((PKG_PARAM != 'sh1)) begin
|
if ((PKG_PARAM != 'sh1)) begin
|
||||||
$stop;
|
$stop;
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -229,6 +229,8 @@ module t (/*AUTOARG*/
|
||||||
sum = $urandom;
|
sum = $urandom;
|
||||||
sum = $urandom(10);
|
sum = $urandom(10);
|
||||||
|
|
||||||
|
sum = array.sum with (item * 2);
|
||||||
|
|
||||||
if (Pkg::PKG_PARAM != 1) $stop;
|
if (Pkg::PKG_PARAM != 1) $stop;
|
||||||
sub.r = 62.0;
|
sub.r = 62.0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1316,7 +1316,7 @@
|
||||||
{"type":"PARSEREF","name":"m_queue","addr":"(WT)","loc":"d,45:14,45:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"m_queue","addr":"(WT)","loc":"d,45:14,45:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"FUNCREF","name":"size","addr":"(XT)","loc":"d,45:22,45:26","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"size","addr":"(XT)","loc":"d,45:22,45:26","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
],"scopeNamep": []},
|
],"scopeNamep": []},
|
||||||
|
|
@ -1348,7 +1348,7 @@
|
||||||
{"type":"PARSEREF","name":"m_queue","addr":"(JU)","loc":"d,50:30,50:37","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"m_queue","addr":"(JU)","loc":"d,50:30,50:37","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"FUNCREF","name":"size","addr":"(KU)","loc":"d,50:38,50:42","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"size","addr":"(KU)","loc":"d,50:38,50:42","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
|
|
@ -1365,7 +1365,7 @@
|
||||||
{"type":"PARSEREF","name":"m_queue","addr":"(PU)","loc":"d,51:15,51:22","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"m_queue","addr":"(PU)","loc":"d,51:15,51:22","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"FUNCREF","name":"size","addr":"(QU)","loc":"d,51:23,51:27","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"size","addr":"(QU)","loc":"d,51:23,51:27","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
|
|
@ -1386,7 +1386,7 @@
|
||||||
"exprp": [
|
"exprp": [
|
||||||
{"type":"PARSEREF","name":"message","addr":"(YU)","loc":"d,52:25,52:32","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"message","addr":"(YU)","loc":"d,52:25,52:32","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
]}
|
]}
|
||||||
],"scopeNamep": []}
|
],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
],"scopeNamep": []},
|
],"scopeNamep": []},
|
||||||
|
|
@ -1414,7 +1414,7 @@
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"LT","name":"","addr":"(IV)","loc":"d,57:33,57:34","dtypep":"(YE)",
|
{"type":"LT","name":"","addr":"(IV)","loc":"d,57:33,57:34","dtypep":"(YE)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"FUNCREF","name":"num","addr":"(JV)","loc":"d,57:27,57:30","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"num","addr":"(JV)","loc":"d,57:27,57:30","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"PARSEREF","name":"m_bound","addr":"(KV)","loc":"d,57:35,57:42","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"m_bound","addr":"(KV)","loc":"d,57:35,57:42","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
|
|
@ -1437,7 +1437,7 @@
|
||||||
"exprp": [
|
"exprp": [
|
||||||
{"type":"PARSEREF","name":"message","addr":"(RV)","loc":"d,58:27,58:34","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"message","addr":"(RV)","loc":"d,58:27,58:34","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
]}
|
]}
|
||||||
],"scopeNamep": []}
|
],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
]},
|
]},
|
||||||
{"type":"RETURN","name":"","addr":"(SV)","loc":"d,59:9,59:15",
|
{"type":"RETURN","name":"","addr":"(SV)","loc":"d,59:9,59:15",
|
||||||
|
|
@ -1468,7 +1468,7 @@
|
||||||
{"type":"PARSEREF","name":"m_queue","addr":"(DW)","loc":"d,66:14,66:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"m_queue","addr":"(DW)","loc":"d,66:14,66:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"FUNCREF","name":"size","addr":"(EW)","loc":"d,66:22,66:26","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"size","addr":"(EW)","loc":"d,66:22,66:26","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
|
|
@ -1486,7 +1486,7 @@
|
||||||
{"type":"PARSEREF","name":"m_queue","addr":"(KW)","loc":"d,67:15,67:22","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"m_queue","addr":"(KW)","loc":"d,67:15,67:22","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"FUNCREF","name":"size","addr":"(LW)","loc":"d,67:23,67:27","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"size","addr":"(LW)","loc":"d,67:23,67:27","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
|
|
@ -1502,7 +1502,7 @@
|
||||||
{"type":"PARSEREF","name":"m_queue","addr":"(PW)","loc":"d,69:17,69:24","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"m_queue","addr":"(PW)","loc":"d,69:17,69:24","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"FUNCREF","name":"pop_front","addr":"(QW)","loc":"d,69:25,69:34","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"pop_front","addr":"(QW)","loc":"d,69:25,69:34","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
|
|
@ -1522,7 +1522,7 @@
|
||||||
"condp": [
|
"condp": [
|
||||||
{"type":"GT","name":"","addr":"(XW)","loc":"d,74:17,74:18","dtypep":"(YE)",
|
{"type":"GT","name":"","addr":"(XW)","loc":"d,74:17,74:18","dtypep":"(YE)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"FUNCREF","name":"num","addr":"(YW)","loc":"d,74:11,74:14","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"num","addr":"(YW)","loc":"d,74:11,74:14","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"CONST","name":"?32?sh0","addr":"(ZW)","loc":"d,74:19,74:20","dtypep":"(N)"}
|
{"type":"CONST","name":"?32?sh0","addr":"(ZW)","loc":"d,74:19,74:20","dtypep":"(N)"}
|
||||||
|
|
@ -1538,7 +1538,7 @@
|
||||||
{"type":"PARSEREF","name":"m_queue","addr":"(DX)","loc":"d,75:19,75:26","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"m_queue","addr":"(DX)","loc":"d,75:19,75:26","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"FUNCREF","name":"pop_front","addr":"(EX)","loc":"d,75:27,75:36","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"pop_front","addr":"(EX)","loc":"d,75:27,75:36","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
|
|
@ -1572,7 +1572,7 @@
|
||||||
{"type":"PARSEREF","name":"m_queue","addr":"(RX)","loc":"d,83:14,83:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"m_queue","addr":"(RX)","loc":"d,83:14,83:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"FUNCREF","name":"size","addr":"(SX)","loc":"d,83:22,83:26","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"size","addr":"(SX)","loc":"d,83:22,83:26","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
|
|
@ -1590,7 +1590,7 @@
|
||||||
{"type":"PARSEREF","name":"m_queue","addr":"(YX)","loc":"d,84:15,84:22","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"m_queue","addr":"(YX)","loc":"d,84:15,84:22","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"FUNCREF","name":"size","addr":"(ZX)","loc":"d,84:23,84:27","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"size","addr":"(ZX)","loc":"d,84:23,84:27","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
|
|
@ -1626,7 +1626,7 @@
|
||||||
"condp": [
|
"condp": [
|
||||||
{"type":"GT","name":"","addr":"(LY)","loc":"d,91:17,91:18","dtypep":"(YE)",
|
{"type":"GT","name":"","addr":"(LY)","loc":"d,91:17,91:18","dtypep":"(YE)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"FUNCREF","name":"num","addr":"(MY)","loc":"d,91:11,91:14","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"num","addr":"(MY)","loc":"d,91:11,91:14","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"CONST","name":"?32?sh0","addr":"(NY)","loc":"d,91:19,91:20","dtypep":"(N)"}
|
{"type":"CONST","name":"?32?sh0","addr":"(NY)","loc":"d,91:19,91:20","dtypep":"(N)"}
|
||||||
|
|
@ -1853,7 +1853,7 @@
|
||||||
{"type":"REFDTYPE","name":"process","addr":"(YBB)","loc":"d,143:7,143:14","dtypep":"UNLINKED","typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []}
|
{"type":"REFDTYPE","name":"process","addr":"(YBB)","loc":"d,143:7,143:14","dtypep":"UNLINKED","typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []}
|
||||||
],"delayp": [],
|
],"delayp": [],
|
||||||
"valuep": [
|
"valuep": [
|
||||||
{"type":"NEW","name":"new","addr":"(ZBB)","loc":"d,143:19,143:22","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"NEW","name":"new","addr":"(ZBB)","loc":"d,143:19,143:22","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
],"attrsp": []},
|
],"attrsp": []},
|
||||||
{"type":"CSTMTUSER","name":"","addr":"(ACB)","loc":"d,145:7,145:9",
|
{"type":"CSTMTUSER","name":"","addr":"(ACB)","loc":"d,145:7,145:9",
|
||||||
"nodesp": [
|
"nodesp": [
|
||||||
|
|
@ -1915,7 +1915,7 @@
|
||||||
"exprp": [
|
"exprp": [
|
||||||
{"type":"PARSEREF","name":"KILLED","addr":"(BDB)","loc":"d,165:18,165:24","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"KILLED","addr":"(BDB)","loc":"d,165:18,165:24","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
]}
|
]}
|
||||||
],"scopeNamep": []}
|
],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],"scopeNamep": []},
|
],"scopeNamep": []},
|
||||||
{"type":"TASK","name":"suspend","addr":"(CDB)","loc":"d,168:19,168:26","cname":"suspend","fvarp": [],"classOrPackagep": [],
|
{"type":"TASK","name":"suspend","addr":"(CDB)","loc":"d,168:19,168:26","cname":"suspend","fvarp": [],"classOrPackagep": [],
|
||||||
|
|
@ -1939,7 +1939,7 @@
|
||||||
"exprp": [
|
"exprp": [
|
||||||
{"type":"PARSEREF","name":"RUNNING","addr":"(MDB)","loc":"d,173:18,173:25","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"RUNNING","addr":"(MDB)","loc":"d,173:18,173:25","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
]}
|
]}
|
||||||
],"scopeNamep": []}
|
],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],"scopeNamep": []},
|
],"scopeNamep": []},
|
||||||
{"type":"TASK","name":"await","addr":"(NDB)","loc":"d,176:10,176:15","cname":"await","fvarp": [],"classOrPackagep": [],
|
{"type":"TASK","name":"await","addr":"(NDB)","loc":"d,176:10,176:15","cname":"await","fvarp": [],"classOrPackagep": [],
|
||||||
|
|
@ -1950,7 +1950,7 @@
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"EQ","name":"","addr":"(QDB)","loc":"d,178:22,178:24","dtypep":"(YE)",
|
{"type":"EQ","name":"","addr":"(QDB)","loc":"d,178:22,178:24","dtypep":"(YE)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"FUNCREF","name":"status","addr":"(RDB)","loc":"d,178:13,178:19","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"status","addr":"(RDB)","loc":"d,178:13,178:19","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"PARSEREF","name":"FINISHED","addr":"(SDB)","loc":"d,178:25,178:33","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"FINISHED","addr":"(SDB)","loc":"d,178:25,178:33","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
|
|
@ -1959,7 +1959,7 @@
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"EQ","name":"","addr":"(TDB)","loc":"d,178:46,178:48","dtypep":"(YE)",
|
{"type":"EQ","name":"","addr":"(TDB)","loc":"d,178:46,178:48","dtypep":"(YE)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"FUNCREF","name":"status","addr":"(UDB)","loc":"d,178:37,178:43","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"status","addr":"(UDB)","loc":"d,178:37,178:43","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"PARSEREF","name":"KILLED","addr":"(VDB)","loc":"d,178:49,178:55","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"KILLED","addr":"(VDB)","loc":"d,178:49,178:55","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
|
|
@ -1990,7 +1990,7 @@
|
||||||
{"type":"PARSEREF","name":"processQueue","addr":"(FEB)","loc":"d,184:14,184:26","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"processQueue","addr":"(FEB)","loc":"d,184:14,184:26","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"FUNCREF","name":"size","addr":"(GEB)","loc":"d,184:27,184:31","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"size","addr":"(GEB)","loc":"d,184:27,184:31","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
|
|
@ -2008,11 +2008,11 @@
|
||||||
{"type":"PARSEREF","name":"processQueue","addr":"(MEB)","loc":"d,185:9,185:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
{"type":"PARSEREF","name":"processQueue","addr":"(MEB)","loc":"d,185:9,185:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"FUNCREF","name":"pop_back","addr":"(NEB)","loc":"d,185:22,185:30","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"FUNCREF","name":"pop_back","addr":"(NEB)","loc":"d,185:22,185:30","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"TASKREF","name":"kill","addr":"(OEB)","loc":"d,185:33,185:37","dtypep":"(WU)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"scopeNamep": []}
|
{"type":"TASKREF","name":"kill","addr":"(OEB)","loc":"d,185:33,185:37","dtypep":"(WU)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","pinsp": [],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
"exprp": [
|
"exprp": [
|
||||||
{"type":"CONST","name":"\\\"\\001\\002\\003\\004\\005\\006\\007\\010\\t\\n\\013\\014\\r\\016\\017\\020\\021\\022\\023\\024\\025\\026\\027\\030\\031\\032\\033\\034\\035\\036\\037 !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\177\\200\\201\\202\\203\\204\\205\\206\\207\\210\\211\\212\\213\\214\\215\\216\\217\\220\\221\\222\\223\\224\\225\\226\\227\\230\\231\\232\\233\\234\\235\\236\\237\\240\\241\\242\\243\\244\\245\\246\\247\\250\\251\\252\\253\\254\\255\\256\\257\\260\\261\\262\\263\\264\\265\\266\\267\\270\\271\\272\\273\\274\\275\\276\\277\\300\\301\\302\\303\\304\\305\\306\\307\\310\\311\\312\\313\\314\\315\\316\\317\\320\\321\\322\\323\\324\\325\\326\\327\\330\\331\\332\\333\\334\\335\\336\\337\\340\\341\\342\\343\\344\\345\\346\\347\\350\\351\\352\\353\\354\\355\\356\\357\\360\\361\\362\\363\\364\\365\\366\\367\\370\\371\\372\\373\\374\\375\\376\\377\\\"","addr":"(LB)","loc":"d,41:9,41:736","dtypep":"(BB)"}
|
{"type":"CONST","name":"\\\"\\001\\002\\003\\004\\005\\006\\007\\010\\t\\n\\013\\014\\r\\016\\017\\020\\021\\022\\023\\024\\025\\026\\027\\030\\031\\032\\033\\034\\035\\036\\037 !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\177\\200\\201\\202\\203\\204\\205\\206\\207\\210\\211\\212\\213\\214\\215\\216\\217\\220\\221\\222\\223\\224\\225\\226\\227\\230\\231\\232\\233\\234\\235\\236\\237\\240\\241\\242\\243\\244\\245\\246\\247\\250\\251\\252\\253\\254\\255\\256\\257\\260\\261\\262\\263\\264\\265\\266\\267\\270\\271\\272\\273\\274\\275\\276\\277\\300\\301\\302\\303\\304\\305\\306\\307\\310\\311\\312\\313\\314\\315\\316\\317\\320\\321\\322\\323\\324\\325\\326\\327\\330\\331\\332\\333\\334\\335\\336\\337\\340\\341\\342\\343\\344\\345\\346\\347\\350\\351\\352\\353\\354\\355\\356\\357\\360\\361\\362\\363\\364\\365\\366\\367\\370\\371\\372\\373\\374\\375\\376\\377\\\"","addr":"(LB)","loc":"d,41:9,41:736","dtypep":"(BB)"}
|
||||||
]}
|
]}
|
||||||
],"scopeNamep": []}
|
],"withp": [],"scopeNamep": []}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue