1*a0839c13SAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp -ast-print -std=c++20 %s -Wsign-conversion | FileCheck %s
2*a0839c13SAlexey Bataev // RUN: %clang_cc1 -fopenmp -x c++ -std=c++20 -emit-pch -o %t %s
3*a0839c13SAlexey Bataev // RUN: %clang_cc1 -fopenmp -std=c++20 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s
4*a0839c13SAlexey Bataev 
5*a0839c13SAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp-simd -ast-print -std=c++20 %s -Wsign-conversion | FileCheck %s
6*a0839c13SAlexey Bataev // RUN: %clang_cc1 -fopenmp-simd -x c++ -std=c++20 -emit-pch -o %t %s
7*a0839c13SAlexey Bataev // RUN: %clang_cc1 -fopenmp-simd -std=c++20 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s
8*a0839c13SAlexey Bataev // expected-no-diagnostics
9*a0839c13SAlexey Bataev 
10*a0839c13SAlexey Bataev #ifndef HEADER
11*a0839c13SAlexey Bataev #define HEADER
12*a0839c13SAlexey Bataev 
13*a0839c13SAlexey Bataev // CHECK:      template <> void do_loop(const auto &v) {
14*a0839c13SAlexey Bataev // CHECK-NEXT: #pragma omp parallel for
15*a0839c13SAlexey Bataev // CHECK-NEXT:    for (const auto &i : v)
16*a0839c13SAlexey Bataev // CHECK-NEXT:      ;
17*a0839c13SAlexey Bataev // CHECK-NEXT: }
18*a0839c13SAlexey Bataev 
do_loop(const auto & v)19*a0839c13SAlexey Bataev void do_loop(const auto &v) {
20*a0839c13SAlexey Bataev #pragma omp parallel for
21*a0839c13SAlexey Bataev   for (const auto &i : v)
22*a0839c13SAlexey Bataev     ;
23*a0839c13SAlexey Bataev }
24*a0839c13SAlexey Bataev #endif
25