]> git.gag.com Git - fw/sdcc/blobdiff - src/SDCCast.c
* src/SDCCast.c (addCast): don't cast float to char
[fw/sdcc] / src / SDCCast.c
index b56020d2119ddc9c11625601b01e9726647a055e..a7cbd7c0185f937617641c4aa2f0dd827f584460 100644 (file)
@@ -2061,7 +2061,8 @@ addCast (ast *tree, RESULT_TYPE resultType, bool upcast)
        upCasted = TRUE;
        break;
       case RESULT_TYPE_CHAR:
-       if (IS_CHAR (tree->etype))
+       if (IS_CHAR (tree->etype) ||
+           IS_FLOAT(tree->etype))
          return tree;
        newLink = newCharLink();
        break;
@@ -2115,6 +2116,7 @@ resultTypePropagate (ast *tree, RESULT_TYPE resultType)
       case ':':
       case '|':
       case '^':
+      case '~':
       case '*':
       case '+':
       case '-':
@@ -3334,6 +3336,7 @@ decorateType (ast * tree, RESULT_TYPE resultType)
          TETYPE (tree) = TTYPE (tree) = tree->opval.val->type;
          return tree;
        }
+      tree->left = addCast (tree->left, resultType, TRUE);
       LRVAL (tree) = 1;
       COPYTYPE (TTYPE (tree), TETYPE (tree), LTYPE (tree));
       return tree;