1  /* { dg-additional-options "-fdump-tree-gimple" } */
       2  /* { dg-final { scan-tree-dump "foo \\(6\\);\[\n\r]*  __sync_synchronize \\(\\);\[\n\r]*  foo \\(6\\);" "gimple" } } */
       3  /* { dg-final { scan-tree-dump "foo \\(4\\);\[\n\r]*  __atomic_thread_fence \\(4\\);\[\n\r]*  foo \\(4\\);" "gimple" } } */
       4  /* { dg-final { scan-tree-dump "foo \\(3\\);\[\n\r]*  __atomic_thread_fence \\(3\\);\[\n\r]*  foo \\(3\\);" "gimple" } } */
       5  /* { dg-final { scan-tree-dump "foo \\(2\\);\[\n\r]*  __atomic_thread_fence \\(2\\);\[\n\r]*  foo \\(2\\);" "gimple" } } */
       6  /* { dg-final { scan-tree-dump "foo \\(5\\);\[\n\r]*  __sync_synchronize \\(\\);\[\n\r]*  foo \\(5\\);" "gimple" } } */
       7  
       8  void foo (int);
       9  
      10  void
      11  f1 (void)
      12  {
      13    foo (4);
      14    #pragma omp flush acq_rel
      15    foo (4);
      16  }
      17  
      18  void
      19  f2 (void)
      20  {
      21    foo (3);
      22    #pragma omp flush release
      23    foo (3);
      24  }
      25  
      26  void
      27  f3 (void)
      28  {
      29    foo (2);
      30    #pragma omp flush acquire
      31    foo (2);
      32  }
      33  
      34  void
      35  f4 (void)
      36  {
      37    foo (5);
      38    #pragma omp flush
      39    foo (5);
      40  }
      41  
      42  void
      43  f5 (void)
      44  {
      45    foo (6);
      46    #pragma omp flush seq_cst
      47    foo (6);
      48  }