extern void abort(void); extern void __assert_fail(const char *, const char *, unsigned int, const char *) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__)); void reach_error() { __assert_fail("0", "signextension2-2.c", 3, "reach_error"); } int main() { unsigned int allOne = -1; int castToInt = allOne; long castToLong = allOne; long castToLong2 = castToInt; unsigned long castToULong = allOne; if (castToInt == -1 && castToLong == 4294967295UL && castToLong2 == -1 && castToULong == 4294967295UL) { goto ERROR; } return (0); ERROR: {reach_error();abort();} return (-1); }