1  /* PR tree-optimization/102124 */
       2  
       3  int
       4  foo (const unsigned char *a, const unsigned char *b, unsigned long len)
       5  {
       6    int ab, ba; 
       7    unsigned long i;
       8    for (i = 0, ab = 0, ba = 0; i < len; i++)
       9      {
      10        ab |= a[i] - b[i];
      11        ba |= b[i] - a[i];
      12      }   
      13    return (ab | ba) >= 0;
      14  }
      15  
      16  int
      17  main ()
      18  {
      19    unsigned char a[32] = { 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a' };
      20    unsigned char b[32] = { 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a' };
      21    unsigned char c[32] = { 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b' };
      22    if (!foo (a, b, 16))
      23      __builtin_abort ();
      24    if (foo (a, c, 16))
      25      __builtin_abort ();
      26    return 0;
      27  }