fixed signdness detection for expressions with reals

This commit is contained in:
Clifford Wolf 2014-06-21 21:41:13 +02:00
parent 072604f30f
commit 65b2e9c064
1 changed files with 8 additions and 2 deletions

View File

@ -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,7 +607,6 @@ 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