Backout last commit; is unstable.
This commit is contained in:
parent
e9ad665d32
commit
4d1f4bbf49
|
|
@ -1860,7 +1860,7 @@ private:
|
||||||
VSymEnt* m_pinSymp = nullptr; // SymEnt for pin lookups
|
VSymEnt* m_pinSymp = nullptr; // SymEnt for pin lookups
|
||||||
const AstCell* m_cellp = nullptr; // Current cell
|
const AstCell* m_cellp = nullptr; // Current cell
|
||||||
AstNodeModule* m_modp = nullptr; // Current module
|
AstNodeModule* m_modp = nullptr; // Current module
|
||||||
AstNodeFTask* m_ftaskp = nullptr; // Current function/task
|
const AstNodeFTask* m_ftaskp = nullptr; // Current function/task
|
||||||
int m_modportNum = 0; // Uniqueify modport numbers
|
int m_modportNum = 0; // Uniqueify modport numbers
|
||||||
|
|
||||||
struct DotStates {
|
struct DotStates {
|
||||||
|
|
@ -2748,11 +2748,8 @@ private:
|
||||||
if (foundp) {
|
if (foundp) {
|
||||||
if (VN_IS(foundp->nodep(), Var) && m_ds.m_dotText == "" && m_ftaskp
|
if (VN_IS(foundp->nodep(), Var) && m_ds.m_dotText == "" && m_ftaskp
|
||||||
&& m_ftaskp->name() == foundp->nodep()->name()) {
|
&& m_ftaskp->name() == foundp->nodep()->name()) {
|
||||||
// This is a recursive reference to the function itself, not to the var
|
nodep->v3warn(E_UNSUPPORTED, "Unsupported: Recursive function call "
|
||||||
nodep->taskp(m_ftaskp);
|
<< nodep->prettyNameQ());
|
||||||
nodep->classOrPackagep(foundp->classOrPackagep());
|
|
||||||
UINFO(7, " Resolved recursive " << nodep
|
|
||||||
<< endl); // Also prints taskp
|
|
||||||
} else {
|
} else {
|
||||||
nodep->v3error("Found definition of '"
|
nodep->v3error("Found definition of '"
|
||||||
<< m_ds.m_dotText << (m_ds.m_dotText == "" ? "" : ".")
|
<< m_ds.m_dotText << (m_ds.m_dotText == "" ? "" : ".")
|
||||||
|
|
|
||||||
|
|
@ -4538,8 +4538,7 @@ private:
|
||||||
// Grab width from the output variable (if it's a function)
|
// Grab width from the output variable (if it's a function)
|
||||||
if (nodep->didWidth()) return;
|
if (nodep->didWidth()) return;
|
||||||
if (nodep->doingWidth()) {
|
if (nodep->doingWidth()) {
|
||||||
nodep->v3warn(E_UNSUPPORTED, "Unsupported: Recursive function or task call: "
|
nodep->v3warn(E_UNSUPPORTED, "Unsupported: Recursive function or task call");
|
||||||
<< nodep->prettyNameQ());
|
|
||||||
nodep->dtypeSetBit();
|
nodep->dtypeSetBit();
|
||||||
nodep->didWidth(true);
|
nodep->didWidth(true);
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
%Error-UNSUPPORTED: t/t_func_recurse.v:9:27: Unsupported: Recursive function or task call: 'recurse_self'
|
%Error-UNSUPPORTED: t/t_func_recurse.v:12:31: Unsupported: Recursive function call 'recurse_self'
|
||||||
: ... In instance t
|
12 | else recurse_self = i + recurse_self(i - 1) * 2;
|
||||||
9 | function automatic int recurse_self;
|
|
||||||
| ^~~~~~~~~~~~
|
| ^~~~~~~~~~~~
|
||||||
... 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
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
%Error-UNSUPPORTED: t/t_func_recurse2.v:9:27: Unsupported: Recursive function or task call: 'recurse_1'
|
%Error-UNSUPPORTED: t/t_func_recurse2.v:9:27: Unsupported: Recursive function or task call
|
||||||
: ... In instance t
|
: ... In instance t
|
||||||
9 | function automatic int recurse_1;
|
9 | function automatic int recurse_1;
|
||||||
| ^~~~~~~~~
|
| ^~~~~~~~~
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
%Error-UNSUPPORTED: t/t_func_recurse_param.v:9:27: Unsupported: Recursive function or task call: 'recurse_self'
|
%Error-UNSUPPORTED: t/t_func_recurse_param.v:12:31: Unsupported: Recursive function call 'recurse_self'
|
||||||
: ... In instance t
|
12 | else recurse_self = i + recurse_self(i - 1) * 2;
|
||||||
9 | function automatic int recurse_self;
|
|
||||||
| ^~~~~~~~~~~~
|
| ^~~~~~~~~~~~
|
||||||
... 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
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
%Error-UNSUPPORTED: t/t_func_recurse_param_bad.v:9:27: Unsupported: Recursive function or task call: 'recurse_self'
|
%Error-UNSUPPORTED: t/t_func_recurse_param_bad.v:12:31: Unsupported: Recursive function call 'recurse_self'
|
||||||
: ... In instance t
|
12 | else recurse_self = i + recurse_self(i - 1) * 2;
|
||||||
9 | function automatic int recurse_self;
|
|
||||||
| ^~~~~~~~~~~~
|
| ^~~~~~~~~~~~
|
||||||
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
||||||
%Error: Verilator internal fault, sorry. Suggest trying --debug --gdbbt
|
%Error: Exiting due to
|
||||||
%Error: Command Failed
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue