* fixed GCC 4.4.0 mingw compilation:
[fw/sdcc] / src / regression / for.c
index 2ccf5ae43d0d4ff955dff4811b0327e0d0ab0737..9c9314e3bc9b2507661e6af9e360441472c814a9 100644 (file)
-//#include "p16c84.h"
+#include "gpsim_assert.h"
 
-unsigned char success = 0;
-unsigned char failures = 0;
-unsigned char dummy = 0;
+unsigned char failures=0;
 
-bit bit0 = 0;
-unsigned int aint0 = 0;
-unsigned int aint1 = 0;
-unsigned char achar0 = 0;
-unsigned char achar1 = 0;
-
-unsigned char call3 (void);
+unsigned int uint0 = 0;
+unsigned int uint1 = 0;
+unsigned char uchar0 = 0;
+unsigned char uchar1 = 0;
 
 void
-done ()
+done()
+{
+  ASSERT(MANGLE(failures) == 0);
+  PASSED();
+}
+
+void for1(void)
 {
+  unsigned char i=0;
 
-  dummy++;
+  for(i=0; i<10; i++)
+    uchar0++;
+
+  if(uchar0 != 10)
+    failures++;
 
 }
 
-void
-for1 (void)
+void for2(void)
 {
-  unsigned char i = 0;
+  unsigned char i=0;
+  unsigned char j;
+
+  for(i=0; i<10; i++)
+    uchar0++;
 
-  for (i = 0; i < 10; i++)
-    achar0++;
+  j = (volatile)i;
 
-  if (achar0 != 10)
+  if(j != 10)
     failures++;
 
 }
 
-void
-for2 (void)
+void for3(void)
 {
-  unsigned char i = 0;
+  unsigned int i=0;
+  volatile unsigned int j;
 
-  for (i = 0; i < 10; i++)
-    achar0++;
+  for(i=0; i<10; i++)
+    uint0++;
 
-  if (i < 10)
+  j = i;
+  if(j != 10)
     failures++;
 
 }
 
-void
-main (void)
+void for4(void)
+{
+
+  for(uint0=1; uint0<10; uint0++)
+    uchar0++;
+
+  if(uchar0 != 9)
+    failures++;
+
+}
+
+void for5(void)
+{
+
+  for(uint0=1; uint0<=10; uint0++)
+    uchar0++;
+
+  if(uchar0 != 10)
+    failures++;
+
+}
+
+void inc_uchar0(void)
 {
-  for1 ();
-  for2 ();
+  uchar0++;
+}
+
+void for6(void)
+{
+  uchar0 = 0;
+  for(uint0=1; uint0<=10; uint0++)
+    inc_uchar0();
+
+}
+
+void main(void)
+{
+  for1();
+  for2();
+  for3();
+  uchar0 = 0;
+  for4();
+  uchar0 = 0;
+  for5();
+
+  for6();
+  if(uchar0 != 10)
+    failures++;
 
-  success = failures;
-  done ();
+  done();
 }