#define bool _Bool bool f(int a, bool c) __attribute__((noinline)); bool f(int a, bool c) { if (!a) c = !c; return c; } void checkf(int a, bool b) { bool c = f(a, b); char d; __builtin_memcpy (&d, &c, 1); if ( d != (a==0)^b) __builtin_abort(); } int main(void) { checkf(0, 0); checkf(0, 1); checkf(1, 1); checkf(1, 0); return 0; }