fixed bug #507904
[fw/sdcc] / src / regression / sub.c
index fd3a6f11597324d76de660a6571f43e93b8a72be..9ee213ab94d6ca5e4b5f989bc85f796ac473dda0 100644 (file)
@@ -153,9 +153,9 @@ void sub_bits(void)
 }
 #endif
 
-/* add_bit2uchar(void) - assumes bit0 = 1, achar0 = 7  */
+/* sub_bit2uchar(void) - assumes bit0 = 1, achar0 = 7  */
 
-void add_bit2uchar(void)
+void sub_bit2uchar(void)
 {
 
   achar0 -= bit0;
@@ -168,17 +168,61 @@ void add_bit2uchar(void)
 
 }
 
-void add_bit2uint(void)
+void sub_bit2uint(void)
 {
 
   if(aint0 != bit11)
     failures++;
 
-  aint0 += bit0;
-  if(aint0!=1)
+  aint0 -= bit0;
+  if(aint0!=0xffff)
     failures++;
 
 }
+
+void sub_ucharFromLit(void)
+{
+
+  achar0 = 2 - achar0;
+
+  if(achar0 != 2)
+    failures++;
+
+
+  aint0 = 2 - aint0;
+
+  if(aint0 != 2)
+    failures++;
+
+  aint0--;
+
+  if(aint0 != 1)
+    failures++;
+
+  aint0 = 0x100 - aint0;
+
+  if(aint0 != 0xff)
+    failures++;
+
+  aint0 = 0xff00 - aint0;
+
+  if(aint0 != 0xfe01)
+    failures++;
+
+  aint0 = 0x0e01 - aint0;
+
+  if(aint0 != 0x1000)
+    failures++;
+
+  aint0 = 0x10ff - aint0;
+
+  if(aint0 != 0xff)
+    failures++;
+
+
+
+}
+
 void main(void)
 {
 
@@ -198,10 +242,13 @@ void main(void)
 
   achar0 = 7;
   bit0 = 1;
-  add_bit2uchar();
-  //add_bit2uint();
+  sub_bit2uchar();
+  sub_bit2uint();
 #endif
 
+  aint0 = 0;
+  achar0 = 0;
+  sub_ucharFromLit();
 
   success = failures;
   done();