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)15 bar (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)26 foo (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)37 testTortureExecute (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