1 /* 2 20050111-1.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 // Some ports do not yet support long long 12 #if !defined(__SDCC_pic14) && !defined(__SDCC_pic16) 13 14 /* PR middle-end/19084, rtl-optimization/19348 */ 15 16 unsigned int foo(unsigned long long x)17foo (unsigned long long x) 18 { 19 unsigned int u; 20 21 if (x == 0) 22 return 0; 23 u = (unsigned int) (x >> 32); 24 return u; 25 } 26 27 unsigned long long bar(unsigned short x)28bar (unsigned short x) 29 { 30 return (unsigned long long) x << 32; 31 } 32 #endif 33 34 void testTortureExecute(void)35testTortureExecute (void) 36 { 37 // Some ports do not yet support long long 38 #if !defined(__SDCC_pic14) && !defined(__SDCC_pic16) 39 40 if (sizeof (long long) != 8) 41 return; 42 43 if (foo (0) != 0) 44 ASSERT (0); 45 46 if (foo (0xffffffffULL) != 0) 47 ASSERT (0); 48 if (foo (0x25ff00ff00ULL) != 0x25) 49 ASSERT (0); 50 if (bar (0) != 0) 51 ASSERT (0); 52 if (bar (0x25) != 0x2500000000ULL) 53 ASSERT (0); 54 return; 55 #endif 56 } 57