/* PR target/14209.  Bug in cris.md, shrinking access size of
   postincrement.
   Origin: <hp@axis.com>.  */

void abort(void);
void exit(int);

long int xb(long int *y) __attribute__((__noinline__));
long int xw(long int *y) __attribute__((__noinline__));
short int yb(short int *y) __attribute__((__noinline__));

long int xb(long int *y) {
    long int xx = *y & 255;
    return xx + y[1];
}

long int xw(long int *y) {
    long int xx = *y & 65535;
    return xx + y[1];
}

short int yb(short int *y) {
    short int xx = *y & 255;
    return xx + y[1];
}

int main(void) {
    long int y[] = {-1, 16000};
    short int yw[] = {-1, 16000};

    if (xb(y) != 16255 || xw(y) != 81535 || yb(yw) != 16255)
        abort();
    exit(0);
}
