| /* PR rtl-optimization/83496 */ |
| /* Reported by Hauke Mehrtens <gcc@hauke-m.de> */ |
| |
| extern void abort (void); |
| |
| typedef unsigned long mp_digit; |
| |
| typedef struct { int used, alloc, sign; mp_digit *dp; } mp_int; |
| |
| int mytest(mp_int *a, mp_digit b) __attribute__((noclone, noinline)); |
| |
| int mytest(mp_int *a, mp_digit b) |
| { |
| if (a->sign == 1) |
| return -1; |
| if (a->used > 1) |
| return 1; |
| if (a->dp[0] > b) |
| return 1; |
| if (a->dp[0] < b) |
| return -1; |
| return 0; |
| } |
| |
| int main (void) |
| { |
| mp_int i = { 2, 0, -1 }; |
| if (mytest (&i, 0) != 1) |
| abort (); |
| return 0; |
| } |