#include "gpsim_assert.h" // Addition tests - mostly int's /* bit types are not ANSI - so provide a way of disabling bit types * if this file is used to test other compilers besides SDCC */ #define SUPPORT_BIT_TYPES 0 unsigned char failures=0; char char0 = 0; char char1 = 0; char char2 = 0; int int0 = 0; int int1 = 0; long long0 = 0; long long1 = 0; unsigned long ulong0 = 0; unsigned long ulong1 = 0; #if SUPPORT_BIT_TYPES bit bit0 = 0; bit bit1 = 0; bit bit2 = 0; bit bit3 = 0; bit bit4 = 0; bit bit5 = 0; bit bit6 = 0; bit bit7 = 0; bit bit8 = 0; bit bit9 = 0; bit bit10 = 0; bit bit11 = 0; #endif void done() { ASSERT(MANGLE(failures) == 0); PASSED(); } void add_char2char(void) { if(char0 != 4) failures++; if(char1 != 5) failures++; char0 = char0 + char1; if(char0 != 9) failures++; char0 += 127; if(char0 > 0) failures++; if(char0 != -0x78) failures++; } void add_compound_char(void) { char0 = char1+5; if(char0 != 9) failures++; if((char0+char1) != 13) failures++; } void add_int2int(void) { if(int0 != 4) failures++; if(int1 != 5) failures++; int0 += int1; if(int0 != 9) failures++; int0 += 0x7fff; if(int0 != -0x7ff8) failures++; } void add_compound_int(void) { int0 = int1+5; if(int0 != 9) failures++; if((int0+int1) != 13) failures++; } void add_lit2long(void) { if(long0 != 0) failures++; long0++; if(long0 != 1) failures++; long0 = long0 + 0xff; if(long0 != 0x100) failures++; long0 = long0 + 0x100; if(long0 != 0x200) failures++; long0 = long0 + 0xfe00; if(long0 != 0x10000) failures++; long0 = long0 + 0xff0000; if(long0 != 0x1000000) failures++; long0 = long0 + 0x7e000000; if(long0 != 0x7f000000) failures++; /* wrap around zero */ long0 = long0 + 0x2000000; if(long0 != -0x7f000000) failures++; long0 = long0 + 0x7f000000; if(long0 != 0) failures++; } void add_lit2ulong(void) { if(ulong0 != 0) failures++; ulong0++; if(ulong0 != 1) failures++; ulong0 = ulong0 + 0xff; if(ulong0 != 0x100) failures++; ulong0 = ulong0 + 0x100; if(ulong0 != 0x200) failures++; ulong0 = ulong0 + 0xfe00; if(ulong0 != 0x10000) failures++; ulong0 = ulong0 + 0xff0000; if(ulong0 != 0x1000000) failures++; ulong0 = ulong0 + 0x7e000000; if(ulong0 != 0x7f000000) failures++; ulong0 = ulong0 + 0x2000000; if(ulong0 != 0x81000000) failures++; /* wrap around zero */ ulong0 = ulong0 + 0x7f000000; if(ulong0) failures++; } void main(void) { char0=4; char1 = char0 + 1; add_char2char(); char1=4; add_compound_char(); int0 = 4; int1 = int0 + 1; add_int2int(); int1=4; add_compound_int(); add_lit2long(); add_lit2ulong(); done(); }