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