1  /* PR middle-end/89002 */
       2  
       3  extern void abort (void);
       4  
       5  int
       6  foo (int x)
       7  {
       8    int a;
       9    int *p = &a;
      10  
      11  #pragma omp taskloop lastprivate (a)
      12    for (a = 0; a < x; ++a)
      13      ;
      14    return *p;
      15  }
      16  
      17  int
      18  bar (int x)
      19  {
      20    int a;
      21    int *p = &a;
      22  
      23  #pragma omp parallel
      24  #pragma omp single
      25  #pragma omp taskloop lastprivate (a)
      26    for (a = 0; a < x; ++a)
      27      ;
      28    return *p;
      29  }
      30  
      31  int
      32  main ()
      33  {
      34  #pragma omp parallel
      35  #pragma omp single
      36    {
      37      if (foo (4) != 4)
      38        abort ();
      39    }
      40    if (bar (6) != 6)
      41      abort ();
      42    return 0;
      43  }