mirror of https://github.com/YosysHQ/yosys.git
fixed signdness detection for expressions with reals
This commit is contained in:
parent
072604f30f
commit
65b2e9c064
|
@ -594,6 +594,10 @@ void AstNode::detectSignWidthWorker(int &width_hint, bool &sign_hint, bool *foun
|
||||||
AstNode *range = NULL;
|
AstNode *range = NULL;
|
||||||
AstNode *id_ast = NULL;
|
AstNode *id_ast = NULL;
|
||||||
|
|
||||||
|
bool local_found_real = false;
|
||||||
|
if (found_real == NULL)
|
||||||
|
found_real = &local_found_real;
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case AST_CONSTANT:
|
case AST_CONSTANT:
|
||||||
|
@ -603,8 +607,7 @@ void AstNode::detectSignWidthWorker(int &width_hint, bool &sign_hint, bool *foun
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AST_REALVALUE:
|
case AST_REALVALUE:
|
||||||
if (found_real)
|
*found_real = true;
|
||||||
*found_real = true;
|
|
||||||
width_hint = std::max(width_hint, 32);
|
width_hint = std::max(width_hint, 32);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -787,6 +790,9 @@ void AstNode::detectSignWidthWorker(int &width_hint, bool &sign_hint, bool *foun
|
||||||
log_error("Don't know how to detect sign and width for %s node at %s:%d!\n",
|
log_error("Don't know how to detect sign and width for %s node at %s:%d!\n",
|
||||||
type2str(type).c_str(), filename.c_str(), linenum);
|
type2str(type).c_str(), filename.c_str(), linenum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (*found_real)
|
||||||
|
sign_hint = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// detect sign and width of an expression
|
// detect sign and width of an expression
|
||||||
|
|
Loading…
Reference in New Issue