1  /* { dg-do compile } */
       2  
       3  void
       4  foo ()
       5  {
       6    int i, v;
       7  #pragma acc atomic read bar  /* { dg-error "expected 'read', 'write', 'update', or 'capture' clause" } */
       8    i = v;  /* { dg-error "expected end of line before 'bar'" "" { target *-*-* } .-1 } */
       9  
      10  #pragma acc atomic read write  /* { dg-error "too many atomic clauses" } */
      11    i = v;
      12  
      13  #pragma acc atomic read seq_cst  /* { dg-error "expected 'read', 'write', 'update', or 'capture' clause" } */
      14    i = v;  /* { dg-error "expected end of line before 'seq_cst'" "" { target *-*-* } .-1 } */
      15  
      16  #pragma acc atomic read relaxed  /* { dg-error "expected 'read', 'write', 'update', or 'capture' clause" } */
      17    i = v;  /* { dg-error "expected end of line before 'relaxed'" "" { target *-*-* } .-1 } */
      18  
      19  #pragma acc atomic update hint(1)  /* { dg-error "expected 'read', 'write', 'update', or 'capture' clause" } */
      20    i += 1;  /* { dg-error "expected end of line before 'hint'" "" { target *-*-* } .-1 } */
      21  
      22  #pragma acc atomic update update capture  /* { dg-error "too many atomic clauses" } */
      23    v = i += 1;
      24  
      25  #pragma acc atomic update capture capture  /* { dg-error "too many atomic clauses" } */
      26    v = i += 1;
      27  
      28  #pragma acc atomic write capture  /* { dg-error "too many atomic clauses" } */
      29    i = 1;
      30  }