1  /* { dg-do compile } */ 
       2  /* { dg-options "-O2 -fdump-tree-optimized" } */
       3  int g1(int);
       4  int h(int *a, int *b)__attribute__((pure));
       5  void link_error();
       6  
       7  /* The calls to link_error should be eliminated, since nothing escapes to 
       8     non-pure functions.  */
       9  int g(void)
      10  {
      11    int t = 0, t1 = 2;
      12    /* ???  That's not true.  The pointers escape to the integer return
      13       value which we do not track in PTA.  */
      14    int t2 = h(&t, &t1);
      15    if (t != 0)
      16      link_error ();
      17    if (t1 != 2)
      18      link_error ();
      19    /* ???  And it would finally escape here even if we did.  */
      20    g1(t2);
      21    if (t != 0)
      22      link_error ();
      23    if (t1 != 2)
      24      link_error ();
      25    return t2 == 2;
      26  }
      27  /* We are allowed to optimize the first two link_error calls.  */
      28  /* { dg-final { scan-tree-dump-times "link_error" 2 "optimized" } } */