#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; | |
} |