1 typedef          __int128        int128_t;
   2 typedef   signed __int128       sint128_t;
   3 typedef unsigned __int128       uint128_t;
   4 
   5 typedef __int128 int    badxi;
   6 typedef int __int128    badix;
   7 typedef unsigned unsigned __int128 baduu;
   8 typedef double __int128 baddx;
   9 typedef __int128 double badxd;
  10 
  11 int sizeof_int128(void)
  12 {
  13         return sizeof(__int128);
  14 }
  15 
  16 typedef unsigned long long u64;
  17 typedef unsigned long      u32;
  18 
  19 u64 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: mulu\\.128
  34  * check-output-contains: add\\.128
  35  *
  36  * check-error-start
  37 int128.c:5:18: error: two or more data types in declaration specifiers
  38 int128.c:5:18: error: Trying to use reserved word 'int' as identifier
  39 int128.c:5:25: error: Expected ; at end of declaration
  40 int128.c:5:25: error: got badxi
  41 int128.c:6:13: error: two or more data types in declaration specifiers
  42 int128.c:6:13: error: Trying to use reserved word '__int128' as identifier
  43 int128.c:6:25: error: Expected ; at end of declaration
  44 int128.c:6:25: error: got badix
  45 int128.c:7:18: error: impossible combination of type specifiers: unsigned unsigned
  46 int128.c:7:18: error: Trying to use reserved word 'unsigned' as identifier
  47 int128.c:7:27: error: Expected ; at end of declaration
  48 int128.c:7:27: error: got __int128
  49 int128.c:8:16: error: two or more data types in declaration specifiers
  50 int128.c:8:16: error: Trying to use reserved word '__int128' as identifier
  51 int128.c:8:25: error: Expected ; at end of declaration
  52 int128.c:8:25: error: got baddx
  53 int128.c:9:18: error: two or more data types in declaration specifiers
  54 int128.c:9:18: error: Trying to use reserved word 'double' as identifier
  55 int128.c:9:25: error: Expected ; at end of declaration
  56 int128.c:9:25: error: got badxd
  57  * check-error-end
  58  */