unsigned p; long __attribute__((noinline, noclone)) test (unsigned a) { return (long)(p + a) - (long)p; } int main () { p = (unsigned) -2; if (test (0) != 0) __builtin_abort (); if (test (1) != 1) __builtin_abort (); if (test (2) != -(long)(unsigned)-2) __builtin_abort (); p = (unsigned) -1; if (test (0) != 0) __builtin_abort (); if (test (1) != -(long)(unsigned)-1) __builtin_abort (); if (test (2) != -(long)(unsigned)-2) __builtin_abort (); return 0; }