1 extern int fun(void);
   2 typedef unsigned int    u32;
   3 typedef          int    s32;
   4 typedef void *vdp;
   5 typedef int  *sip;
   6 typedef double dbl;
   7 typedef unsigned short __attribute__((bitwise)) le16;
   8 
   9 static _Bool fs32_i(s32 a) { return a; }
  10 static _Bool fs32_e(s32 a) { return (_Bool)a; }
  11 static _Bool fu32_i(u32 a) { return a; }
  12 static _Bool fu32_e(u32 a) { return (_Bool)a; }
  13 static _Bool fvdp_i(vdp a) { return a; }
  14 static _Bool fvdp_e(vdp a) { return (_Bool)a; }
  15 static _Bool fsip_i(sip a) { return a; }
  16 static _Bool fsip_e(sip a) { return (_Bool)a; }
  17 static _Bool ffun_i(void)  { return fun; }
  18 static _Bool ffun_e(void)  { return (_Bool)fun; }
  19 static _Bool fres_i(le16 a) { return a; }
  20 static _Bool fres_e(le16 a) { return (_Bool)a; }
  21 static _Bool fdbl_i(dbl a) { return a; }
  22 static _Bool fdbl_e(dbl a) { return (_Bool)a; }
  23 
  24 /*
  25  * check-name: bool-cast
  26  * check-command: test-linearize -m64 -fdump-ir=linearize $file
  27  * check-assert: sizeof(void*) == 8 && sizeof(long) == 8 && sizeof(double) == 8
  28  *
  29  * check-output-ignore
  30  * check-output-excludes: cast\\.
  31  * check-output-excludes: fcvt[us]\\.
  32  * check-output-excludes: ptrtu\\.
  33  * check-output-excludes: [sz]ext\\.
  34  * check-output-excludes: trunc\\.
  35  * check-output-pattern(12): setne\\.
  36  * check-output-pattern(2): fcmpune\\.
  37  */