Added bug cases. Added decent support for distclean
[fw/sdcc] / as / z80 / asexpr.c
index d65ae50ed21b41dd394435d65118bfe918620fe6..2664550db4d31b42763ae8ef2cb8eaabcf85c05b 100644 (file)
 #include <setjmp.h>
 #include <string.h>
 
-#if !defined(_MSC_VER)
-#include <alloc.h>
-#endif
-
 #include "asm.h"
 
 /*)Module      asexpr.c
@@ -88,7 +84,7 @@ expr(esp, n)
 register struct expr *esp;
 int n;
 {
-        register int c, d, p;
+        register int c, p;
         struct area *ap;
         struct expr re;
 
@@ -277,7 +273,7 @@ register struct expr *esp;
         char id[NCPS];
         struct sym  *sp;
         struct tsym *tp;
-        int r, v;
+        int r = 0, v;
 
         c = getnb();
        /*
@@ -299,7 +295,7 @@ register struct expr *esp;
         if (c == '-') {
                 expr(esp, 100);
                 abscheck(esp);
-                esp->e_addr = -esp->e_addr;
+                esp->e_addr = 0 - esp->e_addr;
                 return;
         }
         if (c == '~') {
@@ -351,7 +347,7 @@ register struct expr *esp;
         if (ctype[c] & DIGIT) {
                 esp->e_mode = S_USER;
                 jp = ip;
-                 while (ctype[*jp] & RAD10) {
+                 while (ctype[(unsigned char)(*jp)] & RAD10) {
                         jp++;
                 }
                 if (*jp == '$') {