1 /* 2 960311-2.c from the execute part of the gcc torture suite. 3 */ 4 5 #include <testfwk.h> 6 7 #ifdef __SDCC 8 #pragma std_c99 9 #endif 10 11 #include <stdio.h> 12 13 int count; 14 a1()15void a1() { ++count; } 16 17 void b(unsigned short data)18b (unsigned short data) 19 { 20 if (data & 0x8000) a1(); 21 data <<= 1; 22 23 if (data & 0x8000) a1(); 24 data <<= 1; 25 26 if (data & 0x8000) a1(); 27 } 28 29 void testTortureExecute(void)30testTortureExecute (void) 31 { 32 count = 0; 33 b (0); 34 if (count != 0) 35 ASSERT (0); 36 37 count = 0; 38 b (0x8000); 39 if (count != 1) 40 ASSERT (0); 41 42 count = 0; 43 b (0x4000); 44 if (count != 1) 45 ASSERT (0); 46 47 count = 0; 48 b (0x2000); 49 if (count != 1) 50 ASSERT (0); 51 52 count = 0; 53 b (0xc000); 54 if (count != 2) 55 ASSERT (0); 56 57 count = 0; 58 b (0xa000); 59 if (count != 2) 60 ASSERT (0); 61 62 count = 0; 63 b (0x6000); 64 if (count != 2) 65 ASSERT (0); 66 67 count = 0; 68 b (0xe000); 69 if (count != 3) 70 ASSERT (0); 71 72 return; 73 } 74 75