]> git.gag.com Git - fw/sdcc/commitdiff
* src/SDCCval.c (cheapestVal): changed behaviour to the same as constVal()
authorbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 6 Aug 2003 12:28:56 +0000 (12:28 +0000)
committerbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 6 Aug 2003 12:28:56 +0000 (12:28 +0000)
* device/lib/time.c: fixed warning "integer overflow in expression"

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2812 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
device/lib/time.c
src/SDCCicode.c
src/SDCCval.c

index bfb611922d2c7008b4c4ad10f0b4fb6336c0c3c3..a8adad0c10127dc469b2721a20c4a9775018feec 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2003-08-06  Bernhard Held <bernhard@bernhardheld.de>
+
+       * src/SDCCval.c (cheapestVal): changed behaviour to the same as constVal()
+       * device/lib/time.c: fixed warning "integer overflow in expression"
+
 2003-08-05  Bernhard Held <bernhard@bernhardheld.de>
 
        * src/SDCCval.c (cheapestVal, valueFromLit): use TYPE_* types
index 5d6f45fed8bf1882fa20c8a3ba609a0251af897f..8cb00d1fb281e2711e61237d877dbf132041e343 100755 (executable)
@@ -176,25 +176,25 @@ time_t mktime(struct tm *timeptr) {
     CheckTime(timeptr);
 
     // seconds from 1970 till 1 jan 00:00:00 this year
-    seconds= (year-1970)*60*60*24*365;
+    seconds= (year-1970)*(60*60*24L*365);
 
     // add extra days for leap years
     for (i=1970; i<year; i++) {
        if (LEAP_YEAR(i)) {
-           seconds+= 60*60*24;
+           seconds+= 60*60*24L;
        }
     }
 
     // add days for this year
     for (i=0; i<month; i++) {
       if (i==1 && LEAP_YEAR(year)) { 
-       seconds+= 60*60*24*29;
+       seconds+= 60*60*24L*29;
       } else {
-       seconds+= 60*60*24*monthDays[i];
+       seconds+= 60*60*24L*monthDays[i];
       }
     }
 
-    seconds+= timeptr->tm_mday-1*60*60*24;
+    seconds+= timeptr->tm_mday-1*60*60*24L;
     seconds+= timeptr->tm_hour*60*60;
     seconds+= timeptr->tm_min*60;
     seconds+= timeptr->tm_sec;
index f7f9f89efa93e7f84a062d8427366357194b48ff..d3b6298114c79b33d4bcc824332bc4cc475a05c4 100644 (file)
@@ -1062,6 +1062,10 @@ operandOperation (operand * left, operand * right,
       retval = operandFromValue (valCastLiteral (type,
                                                 operandLitValue (left) *
                                                 operandLitValue (right)));
+      if (!options.lessPedantic &&
+         !IS_FLOAT (OP_VALUE(retval)->type) &&
+         !SPEC_LONG (OP_VALUE(retval)->type))
+        ; /* TODO: werror (W_INT_OVL) */
       break;
     case '/':
       if ((TYPE_UDWORD) operandLitValue (right) == 0)
index 82eec2db056e6aa05f6ba6c94e0362ab1f923fcd..63fac609388aa2d1e7b39e827a1743831e9254a9 100644 (file)
@@ -318,7 +318,7 @@ symbolVal (symbol * sym)
 /*--------------------------------------------------------------------*/
 /* cheapestVal - convert a val to the cheapest as possible value      */
 /*--------------------------------------------------------------------*/
-value *cheapestVal (value *val) {
+static value *cheapestVal (value *val) {
   TYPE_DWORD  sval=0;
   TYPE_UDWORD uval=0;
 
@@ -357,11 +357,10 @@ value *cheapestVal (value *val) {
        }
       }
     } else { // sval>=0
-      SPEC_USIGN(val->type)=1;
-      if (sval<=65535) {
+      if (sval<=32767) {
        SPEC_LONG(val->type)=0;
        SPEC_CVAL(val->type).v_int = (TYPE_WORD)sval;
-       if (sval<=255) {
+       if (sval<=127) {
          SPEC_NOUN(val->type)=V_CHAR;
        }
       }
@@ -1044,7 +1043,6 @@ valMult (value * lval, value * rval)
         {
           TYPE_UDWORD ul = (TYPE_UWORD) floatFromVal (lval) *
                            (TYPE_UWORD) floatFromVal (rval);
-          
           SPEC_CVAL (val->type).v_uint = (TYPE_UWORD) ul;
           if (!options.lessPedantic)
             {