all excess initializers (that I can think of) are catched now
[fw/sdcc] / src / SDCCval.c
index 2e3448a51be3e1bb3dea543eb5affbce40251f08..8d65e07fb5d6e64e999ead39c2080ebf4b080e33 100644 (file)
@@ -340,28 +340,28 @@ value *cheapestVal (value *val) {
     if (uval<=0xffff) {
       SPEC_LONG(val->type)=0;
       SPEC_CVAL(val->type).v_uint = uval;
-    }
-    if (uval<=0xff) {
-      SPEC_NOUN(val->type)=V_CHAR;
+      if (uval<=0xff) {
+       SPEC_NOUN(val->type)=V_CHAR;
+      }
     }
   } else { // not unsigned
     if (sval<0) {
       if (sval>=-32768) {
        SPEC_LONG(val->type)=0;
        SPEC_CVAL(val->type).v_int = sval & 0xffff;
-      }
-      if (sval>=-128) {
-       SPEC_NOUN(val->type)=V_CHAR;
-       SPEC_CVAL(val->type).v_int &= 0xff;
+       if (sval>=-128) {
+         SPEC_NOUN(val->type)=V_CHAR;
+         SPEC_CVAL(val->type).v_int &= 0xff;
+       }
       }
     } else { // sval>=0
       SPEC_USIGN(val->type)=1;
       if (sval<=65535) {
        SPEC_LONG(val->type)=0;
        SPEC_CVAL(val->type).v_int = sval;
-      }
-      if (sval<=255) {
-       SPEC_NOUN(val->type)=V_CHAR;
+       if (sval<=255) {
+         SPEC_NOUN(val->type)=V_CHAR;
+       }
       }
     }
   }
@@ -860,7 +860,7 @@ valFromType (sym_link * type)
 }
 
 /*------------------------------------------------------------------*/
-/* floatFromVal - value to unsinged integer conversion        */
+/* floatFromVal - value to double float conversion                  */
 /*------------------------------------------------------------------*/
 double 
 floatFromVal (value * val)
@@ -1414,34 +1414,30 @@ valCastLiteral (sym_link * dtype, double fval)
   SPEC_SCLS (val->etype) = S_LITERAL;
   /* if it is not a specifier then we can assume that */
   /* it will be an unsigned long                      */
-  if (!IS_SPEC (val->type))
-    {
+  if (!IS_SPEC (val->type)) {
       SPEC_CVAL (val->etype).v_ulong = (unsigned long) fval;
       return val;
-    }
+  }
 
   if (SPEC_NOUN (val->etype) == V_FLOAT)
-    SPEC_CVAL (val->etype).v_float = fval;
-  else
-    {
-      if (SPEC_LONG (val->etype))
-       {
+      SPEC_CVAL (val->etype).v_float = fval;
+  else {
+      unsigned long l = fval;
+      if (SPEC_LONG (val->etype)) {
          if (SPEC_USIGN (val->etype))
-           SPEC_CVAL (val->etype).v_ulong = (unsigned long) fval;
+             SPEC_CVAL (val->etype).v_ulong = (unsigned long) l;
          else
-           SPEC_CVAL (val->etype).v_long = (long) fval;
-       }
-      else
-       {
+             SPEC_CVAL (val->etype).v_long = (long) l;
+      } else {
          if (SPEC_USIGN (val->etype))
-           SPEC_CVAL (val->etype).v_uint = (unsigned short)fval;
+             SPEC_CVAL (val->etype).v_uint = (unsigned short)l;
          else
-           SPEC_CVAL (val->etype).v_int = (short)fval;
+             SPEC_CVAL (val->etype).v_int = (short)l;
          if (SPEC_NOUN (val->etype)==V_CHAR) {
-           SPEC_CVAL (val->etype).v_uint &= 0xff; 
+             SPEC_CVAL (val->etype).v_uint &= 0xff; 
          }
-       }
-    }
+      }
+  }
   return val;
 }