/* PR rtl-optimization/89679 */ /* { dg-do run } */ /* { dg-options "-Og -frerun-cse-after-loop -fno-tree-fre" } */ unsigned short g; void foo (unsigned long long x) { if (x != 0xffff) __builtin_abort (); } int main () { #if __SIZEOF_SHORT__ == 2 && __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8 unsigned short d = 0; unsigned long long x, c = ~0; c = c >> d; __builtin_memset (&d, c, 2); x = d + g; foo (x); #endif return 0; }