1  /* PR c++/88203 */
       2  /* { dg-do compile } */
       3  /* { dg-additional-options "-std=gnu99" { target c } } */
       4  /* { dg-additional-options "-std=gnu++11" { target c++ } } */
       5  
       6  void foo (const char *, const char *);
       7  #pragma omp declare target to (foo)
       8  
       9  void
      10  f1 (void)
      11  {
      12    #pragma omp parallel default(none)
      13    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      14  }
      15  
      16  void
      17  f2 (void)
      18  {
      19    #pragma omp parallel default(none) shared(__FUNCTION__, __PRETTY_FUNCTION__)
      20    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      21    #pragma omp parallel default(none) shared(__FUNCTION__) firstprivate(__PRETTY_FUNCTION__)
      22    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      23  }
      24  
      25  void
      26  f3 (void)
      27  {
      28    #pragma omp parallel default(none) firstprivate(__FUNCTION__, __PRETTY_FUNCTION__)
      29    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      30    #pragma omp parallel default(none) firstprivate(__FUNCTION__), shared(__PRETTY_FUNCTION__)
      31    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      32  }
      33  
      34  void
      35  f4 (void)
      36  {
      37    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      38    #pragma omp parallel default(none)
      39    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      40  }
      41  
      42  void
      43  f5 (void)
      44  {
      45    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      46    #pragma omp parallel default(none) shared(__FUNCTION__, __PRETTY_FUNCTION__)
      47    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      48  }
      49  
      50  void
      51  f6 (void)
      52  {
      53    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      54    #pragma omp parallel default(none) firstprivate(__FUNCTION__, __PRETTY_FUNCTION__)
      55    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      56  }
      57  
      58  void
      59  f7 (void)
      60  {
      61    #pragma omp target map(to: __FUNCTION__, __PRETTY_FUNCTION__)
      62    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      63    #pragma omp task depend(inout:__FUNCTION__, __PRETTY_FUNCTION__)
      64    foo (__FUNCTION__, __PRETTY_FUNCTION__);
      65  }