1  /* PR tree-optimization/86231 */
       2  
       3  #define ONE ((void *) 1)
       4  #define TWO ((void *) 2)
       5  
       6  __attribute__((noipa)) int
       7  foo (void *p, int x)
       8  {
       9    if (p == ONE) return 0;
      10    if (!p)
      11      p = x ? TWO : ONE;
      12    return p == ONE ? 0 : 1;
      13  }
      14  
      15  int v[8];
      16  
      17  int
      18  main ()
      19  {
      20    if (foo ((void *) 0, 0) != 0
      21        || foo ((void *) 0, 1) != 1
      22        || foo (ONE, 0) != 0
      23        || foo (ONE, 1) != 0
      24        || foo (TWO, 0) != 1
      25        || foo (TWO, 1) != 1
      26        || foo (&v[7], 0) != 1
      27        || foo (&v[7], 1) != 1)
      28      __builtin_abort ();
      29    return 0;
      30  }