X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=support%2Fregression%2Ftests%2Fmuldiv.c;h=b5aa5c18f53e77f460705e205797813a489bc96d;hb=4f741ecd40916887fb37222f5faf9caa9af82464;hp=c66c70574974ef4917c32c89eaa5196af5f28fc5;hpb=6efdb0c5dd65f90e09768d5e6fb562d47545c783;p=fw%2Fsdcc diff --git a/support/regression/tests/muldiv.c b/support/regression/tests/muldiv.c index c66c7057..b5aa5c18 100644 --- a/support/regression/tests/muldiv.c +++ b/support/regression/tests/muldiv.c @@ -1,12 +1,12 @@ /** Simple test for the mul/div/mod operations. - type: int, char, short + type: int, char, short, long storage: static, attr: volatile, */ #include -static void +void testUnsignedModDiv(void) { {attr} {storage} unsigned {type} i; @@ -27,7 +27,7 @@ testUnsignedModDiv(void) ASSERT(result == 32); } -static void +void testUnsignedMul(void) { {attr} {storage} unsigned {type} i; @@ -35,7 +35,7 @@ testUnsignedMul(void) i = 37; - LOG(("i*3 == 111 = %u\n", i*3)); + LOG(("i*3 == 111 = %u\n", (int)(i*3))); result = i*3; ASSERT(result == 111); @@ -43,7 +43,7 @@ testUnsignedMul(void) ASSERT(result == ((unsigned {type})444)); } -static void +void testMul(void) { {attr} {storage} signed {type} i; @@ -51,22 +51,24 @@ testMul(void) i = 5; - LOG(("i*5 == 25 = %u\n", (int)i*5)); + LOG(("i*5 == 25 = %u\n", (int)(i*5))); result = i*5; ASSERT(result == 25); - LOG(("i*-4 == -20 = %u\n", (int)i*-4)); + LOG(("i*-4 == -20 = %u\n", (int)(i*-4))); ASSERT(i*-4 == -20); i = -10; - LOG(("i*12 == -120 = %u\n", (int)i*12)); + LOG(("i*12 == -120 = %u\n", (int)(i*12))); ASSERT(i*12 == -120); - LOG(("i*-3 == 30 = %u\n", (int)i*-3)); + LOG(("i*-3 == 30 = %u\n", (int)(i*-3))); ASSERT(i*-3 == 30); +} - LOG(("30 == %u\n", (int)i*-3)); +void mark(void) +{ } -static void +void testDiv(void) { {attr} {storage} signed {type} i; @@ -75,6 +77,7 @@ testDiv(void) LOG(("i/5 == 20 = %u\n", (int)i/5)); ASSERT(i/5 == 20); LOG(("i/-4 == -25 = %u\n", (int)i/-4)); + mark(); ASSERT(i/-4 == -25); i = -50; @@ -82,9 +85,11 @@ testDiv(void) ASSERT(i/25 == -2); LOG(("i/-12 == 4 = %u\n", (int)i/-12)); ASSERT(i/-12 == 4); + //power of 2 + ASSERT(i/4 == -12); } -static void +void testMod(void) { {attr} {storage} signed {type} i; @@ -95,14 +100,16 @@ testMod(void) // LOG(("i%%17 == 15 = %u\n", (int)(i%9))); ASSERT(i%17 == 15); -#if MOD_SIGN_FOLLOWS_DIVIDEND // LOG(("i%%-7 == 2 = %u\n", (int)i%-7)); ASSERT(i%-7 == 2); + //power of 2 + ASSERT(i%-8 == 4); i = -49; // LOG(("i%%3 == -1 = %u\n", (int)i%3)); ASSERT(i%3 == -1); // LOG(("i%%-5 == -4 = %u\n", (int)i%-5)); ASSERT(i%-5 == -4); -#endif + //power of 2 + ASSERT(i%4 == -1); }