Fix sign handling of real constants
authorClifford Wolf <clifford@clifford.at>
Wed, 13 Feb 2019 11:36:47 +0000 (12:36 +0100)
committerClifford Wolf <clifford@clifford.at>
Wed, 13 Feb 2019 11:36:47 +0000 (12:36 +0100)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
frontends/ast/genrtlil.cc

index 9531dd3561b85402de139cb84ffea81065af5d00..e666252286fa3ef4f0835f5b8e6a6895ce4a7486 100644 (file)
@@ -942,16 +942,15 @@ RTLIL::SigSpec AstNode::genRTLIL(int width_hint, bool sign_hint)
 
        // simply return the corresponding RTLIL::SigSpec for an AST_CONSTANT node
        case AST_CONSTANT:
+       case AST_REALVALUE:
                {
                        if (width_hint < 0)
                                detectSignWidth(width_hint, sign_hint);
-
                        is_signed = sign_hint;
-                       return RTLIL::SigSpec(bitsAsConst());
-               }
 
-       case AST_REALVALUE:
-               {
+                       if (type == AST_CONSTANT)
+                               return RTLIL::SigSpec(bitsAsConst());
+
                        RTLIL::SigSpec sig = realAsConst(width_hint);
                        log_file_warning(filename, linenum, "converting real value %e to binary %s.\n", realvalue, log_signal(sig));
                        return sig;