1 /* 2 pr47148.c from the execute part of the gcc torture tests. 3 */ 4 5 #include <testfwk.h> 6 7 #ifdef __SDCC 8 #pragma std_c99 9 #endif 10 11 #if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Bug #2874 12 /* PR tree-optimization/47148 */ 13 14 static inline unsigned bar(unsigned x,unsigned y)15bar (unsigned x, unsigned y) 16 { 17 if (y >= 32) 18 return x; 19 else 20 return x >> y; 21 } 22 23 static unsigned a = 1, b = 1; 24 25 static inline void foo(unsigned char x,unsigned y)26foo (unsigned char x, unsigned y) 27 { 28 if (!y) 29 return; 30 unsigned c = (0x7000U / (x - 2)) ^ a; 31 unsigned d = bar (a, a); 32 b &= ((a - d) && (a - 1)) + c; 33 } 34 #endif 35 36 void testTortureExecute(void)37testTortureExecute (void) 38 { 39 #if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Bug #2874 40 foo (1, 1); 41 foo (-1, 1); 42 if (b && ((unsigned char) -1) == 255) 43 ASSERT (0); 44 return; 45 #endif 46 } 47 48