/* PR rtl-optimization/51505 */
/* { dg-do compile } */
/* { dg-options "-O --param max-cse-insns=1" } */
struct S
{
char a[256];
};

int bar(struct S, char[16]);

void foo ()
{
  struct S u, s1, s2;
  char e[256];
  char i;
  e[i] = ~s1.a[i] & s2.a[i];
  if (bar(u, e))
    __builtin_abort ();
}