1typedef __int128 int128_t; 2typedef signed __int128 sint128_t; 3typedef unsigned __int128 uint128_t; 4 5typedef __int128 int badxi; 6typedef int __int128 badix; 7typedef unsigned unsigned __int128 baduu; 8typedef double __int128 baddx; 9typedef __int128 double badxd; 10 11int sizeof_int128(void) 12{ 13 return sizeof(__int128); 14} 15 16typedef unsigned long long u64; 17typedef unsigned long u32; 18 19u64 foo(u64 a, u64 b, u64 c, u32 s) 20{ 21 unsigned __int128 tmp; 22 23 tmp = (((uint128_t)a) * b) + c; 24 return (u64) (tmp >> s); 25} 26 27/* 28 * check-name: int128 29 * check-command: test-linearize $file 30 * check-output-ignore 31 * 32 * check-output-contains: ret\\..*\\$16 33 * check-output-contains: mul\\.128 34 * check-output-contains: add\\.128 35 * 36 * check-error-start 37int128.c:5:18: error: two or more data types in declaration specifiers 38int128.c:5:18: error: Trying to use reserved word 'int' as identifier 39int128.c:5:25: error: Expected ; at end of declaration 40int128.c:5:25: error: got badxi 41int128.c:6:13: error: two or more data types in declaration specifiers 42int128.c:6:13: error: Trying to use reserved word '__int128' as identifier 43int128.c:6:25: error: Expected ; at end of declaration 44int128.c:6:25: error: got badix 45int128.c:7:18: error: impossible combination of type specifiers: unsigned unsigned 46int128.c:7:18: error: Trying to use reserved word 'unsigned' as identifier 47int128.c:7:27: error: Expected ; at end of declaration 48int128.c:7:27: error: got __int128 49int128.c:8:16: error: two or more data types in declaration specifiers 50int128.c:8:16: error: Trying to use reserved word '__int128' as identifier 51int128.c:8:25: error: Expected ; at end of declaration 52int128.c:8:25: error: got baddx 53int128.c:9:18: error: two or more data types in declaration specifiers 54int128.c:9:18: error: Trying to use reserved word 'double' as identifier 55int128.c:9:25: error: Expected ; at end of declaration 56int128.c:9:25: error: got badxd 57 * check-error-end 58 */ 59