1 #if __SIZEOF_INT__ < 4 2 __extension__ typedef __UINT32_TYPE__ uint32_t; 3 __extension__ typedef __INT32_TYPE__ int32_t; 4 #else 5 typedef unsigned uint32_t; 6 typedef int int32_t; 7 #endif 8 9 extern void abort (void); 10 f1(int32_t x)11__attribute__ ((noinline, noclone)) unsigned long long f1 (int32_t x) 12 { 13 return ((unsigned long long) x) << 4; 14 } 15 f2(uint32_t x)16__attribute__ ((noinline, noclone)) long long f2 (uint32_t x) 17 { 18 return ((long long) x) << 4; 19 } 20 f3(uint32_t x)21__attribute__ ((noinline, noclone)) unsigned long long f3 (uint32_t x) 22 { 23 return ((unsigned long long) x) << 4; 24 } 25 f4(int32_t x)26__attribute__ ((noinline, noclone)) long long f4 (int32_t x) 27 { 28 return ((long long) x) << 4; 29 } 30 main()31int main () 32 { 33 if (f1 (0xf0000000) != 0xffffffff00000000) 34 abort (); 35 if (f2 (0xf0000000) != 0xf00000000) 36 abort (); 37 if (f3 (0xf0000000) != 0xf00000000) 38 abort (); 39 if (f4 (0xf0000000) != 0xffffffff00000000) 40 abort (); 41 return 0; 42 } 43