/* This was failing on Alpha because the comparison (p != -1) was rewritten as (p+1 != 0) and p+1 isn't allowed to wrap for pointers. */ extern void abort(void); typedef __SIZE_TYPE__ size_t; int global; static void *foo(int p) { if (p == 0) { global++; return &global; } return (void *)(size_t)-1; } int bar(void) { void *p; p = foo(global); if (p != (void *)(size_t)-1) return 1; global++; return 0; } int main(void) { global = 1; if (bar () != 0) abort(); return 0; }