https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68400
Steve Ellcey <sje at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2016-01-25 Ever confirmed|0 |1 --- Comment #3 from Steve Ellcey <sje at gcc dot gnu.org> --- Here is a cutdown test case that I used to reproduce the problem. I used the '-mips32r2 -mips216 -Os -fstack-protector' options. typedef struct s { unsigned long long d; long long t; } p; int sh(int x, unsigned char *buf) { p *uhdr = (p *)buf; unsigned int i = 0; uhdr->d = ((uhdr->d & 0xff00000000000000LL) >> 56) | ((uhdr->d & 0x0000ff0000000000LL) >> 24) | ((uhdr->d & 0x00000000ff000000LL) << 8) | ((uhdr->d & 0x00000000000000ffLL) << 56); uhdr->t = ((uhdr->t & 0xff00000000000000LL) >> 56) | ((uhdr->t & 0x0000ff0000000000LL) >> 24) | ((uhdr->t & 0x000000ff00000000LL) >> 8) | ((uhdr->t & 0x00000000ff000000LL) << 8) | ((uhdr->t & 0x000000000000ff00LL) << 40) | ((uhdr->t & 0x00000000000000ffLL) << 56); i += 4; if (x < i) return 0; else return 1; }