| /* 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; | |
| } |