text: #include "cerberus.h"
  /* PR tree-optimization/59358 */
  
   int
  foo (int *x, int y)
  {
    int z = *x;
    if (y > z && y <= 16)
      while (y > z)
        z *= 2;
    return z;
  }
  
  int 
  main (void)
  {
    int i;
    for (i = 1; i < 17; i++)
      {
        int j = foo (&i, 16);
        int k;
        if (i >= 8 && i <= 15)
  	k = 16 + (i - 8) * 2;
        else if (i >= 4 && i <= 7)
  	k = 16 + (i - 4) * 4;
        else if (i == 3)
  	k = 24;
        else
  	k = 16;
        if (j != k)
  	__builtin_abort ();
        j = foo (&i, 7);
        if (i >= 7)
  	k = i;
        else if (i >= 4)
  	k = 8 + (i - 4) * 2;
        else if (i == 3)
  	k = 12;
        else
  	k = 8;
        if (j != k)
  	__builtin_abort ();
      }
    return 0;
  }
  