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 *id_ast = NULL;
bool local_found_real = false;
if (found_real == NULL)
found_real = &local_found_real;
switch (type)
{
case AST_CONSTANT:
@ -603,8 +607,7 @@ void AstNode::detectSignWidthWorker(int &width_hint, bool &sign_hint, bool *foun
break;
case AST_REALVALUE:
if (found_real)
*found_real = true;
*found_real = true;
width_hint = std::max(width_hint, 32);
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",
type2str(type).c_str(), filename.c_str(), linenum);
}
if (*found_real)
sign_hint = true;
}
// detect sign and width of an expression