1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fdump-tree-pre-details" } */
       3  
       4  void bark (void);
       5  int flag, hoist, y, z;
       6  
       7  void
       8  foo (void)
       9  {
      10    if (flag)
      11      y = hoist + 4;
      12    else
      13      flag = 888;
      14    z = hoist + 4;
      15    bark ();
      16  }
      17  
      18  /* We should see the partial redundancy of hoist + 4, not being confused
      19     about bark () possibly clobbering hoist.  */
      20  
      21  /* { dg-final { scan-tree-dump "Replaced hoist" "pre" } } */