head 1.1; branch 1.1.1; access; symbols netbsd-11-0-RC4:1.1.1.6 netbsd-11-0-RC3:1.1.1.6 netbsd-11-0-RC2:1.1.1.6 netbsd-11-0-RC1:1.1.1.6 perseant-exfatfs-base-20250801:1.1.1.6 netbsd-11:1.1.1.6.0.10 netbsd-11-base:1.1.1.6 netbsd-10-1-RELEASE:1.1.1.6 perseant-exfatfs-base-20240630:1.1.1.6 perseant-exfatfs:1.1.1.6.0.8 perseant-exfatfs-base:1.1.1.6 netbsd-8-3-RELEASE:1.1.1.4 netbsd-9-4-RELEASE:1.1.1.5 netbsd-10-0-RELEASE:1.1.1.6 netbsd-10-0-RC6:1.1.1.6 netbsd-10-0-RC5:1.1.1.6 netbsd-10-0-RC4:1.1.1.6 netbsd-10-0-RC3:1.1.1.6 netbsd-10-0-RC2:1.1.1.6 netbsd-10-0-RC1:1.1.1.6 netbsd-10:1.1.1.6.0.6 netbsd-10-base:1.1.1.6 netbsd-9-3-RELEASE:1.1.1.5 cjep_sun2x:1.1.1.6.0.4 cjep_sun2x-base:1.1.1.6 cjep_staticlib_x-base1:1.1.1.6 netbsd-9-2-RELEASE:1.1.1.5 cjep_staticlib_x:1.1.1.6.0.2 cjep_staticlib_x-base:1.1.1.6 netbsd-9-1-RELEASE:1.1.1.5 phil-wifi-20200421:1.1.1.6 phil-wifi-20200411:1.1.1.6 phil-wifi-20200406:1.1.1.6 netbsd-8-2-RELEASE:1.1.1.4 netbsd-9-0-RELEASE:1.1.1.5 netbsd-9-0-RC2:1.1.1.5 netbsd-9-0-RC1:1.1.1.5 netbsd-9:1.1.1.5.0.2 netbsd-9-base:1.1.1.5 phil-wifi-20190609:1.1.1.5 netbsd-8-1-RELEASE:1.1.1.4 netbsd-8-1-RC1:1.1.1.4 pgoyette-compat-merge-20190127:1.1.1.4.12.1 pgoyette-compat-20190127:1.1.1.5 pgoyette-compat-20190118:1.1.1.5 pgoyette-compat-1226:1.1.1.5 pgoyette-compat-1126:1.1.1.5 pgoyette-compat-1020:1.1.1.5 pgoyette-compat-0930:1.1.1.5 pgoyette-compat-0906:1.1.1.5 netbsd-7-2-RELEASE:1.1.1.1.2.1 pgoyette-compat-0728:1.1.1.5 clang-337282:1.1.1.5 netbsd-8-0-RELEASE:1.1.1.4 phil-wifi:1.1.1.4.0.14 phil-wifi-base:1.1.1.4 pgoyette-compat-0625:1.1.1.4 netbsd-8-0-RC2:1.1.1.4 pgoyette-compat-0521:1.1.1.4 pgoyette-compat-0502:1.1.1.4 pgoyette-compat-0422:1.1.1.4 netbsd-8-0-RC1:1.1.1.4 pgoyette-compat-0415:1.1.1.4 pgoyette-compat-0407:1.1.1.4 pgoyette-compat-0330:1.1.1.4 pgoyette-compat-0322:1.1.1.4 pgoyette-compat-0315:1.1.1.4 netbsd-7-1-2-RELEASE:1.1.1.1.2.1 pgoyette-compat:1.1.1.4.0.12 pgoyette-compat-base:1.1.1.4 netbsd-7-1-1-RELEASE:1.1.1.1.2.1 clang-319952:1.1.1.4 matt-nb8-mediatek:1.1.1.4.0.10 matt-nb8-mediatek-base:1.1.1.4 clang-309604:1.1.1.4 perseant-stdc-iso10646:1.1.1.4.0.8 perseant-stdc-iso10646-base:1.1.1.4 netbsd-8:1.1.1.4.0.6 netbsd-8-base:1.1.1.4 prg-localcount2-base3:1.1.1.4 prg-localcount2-base2:1.1.1.4 prg-localcount2-base1:1.1.1.4 prg-localcount2:1.1.1.4.0.4 prg-localcount2-base:1.1.1.4 pgoyette-localcount-20170426:1.1.1.4 bouyer-socketcan-base1:1.1.1.4 pgoyette-localcount-20170320:1.1.1.4 netbsd-7-1:1.1.1.1.2.1.0.6 netbsd-7-1-RELEASE:1.1.1.1.2.1 netbsd-7-1-RC2:1.1.1.1.2.1 clang-294123:1.1.1.4 netbsd-7-nhusb-base-20170116:1.1.1.1.2.1 bouyer-socketcan:1.1.1.4.0.2 bouyer-socketcan-base:1.1.1.4 clang-291444:1.1.1.4 pgoyette-localcount-20170107:1.1.1.3 netbsd-7-1-RC1:1.1.1.1.2.1 pgoyette-localcount-20161104:1.1.1.3 netbsd-7-0-2-RELEASE:1.1.1.1.2.1 localcount-20160914:1.1.1.3 netbsd-7-nhusb:1.1.1.1.2.1.0.4 netbsd-7-nhusb-base:1.1.1.1.2.1 clang-280599:1.1.1.3 pgoyette-localcount-20160806:1.1.1.3 pgoyette-localcount-20160726:1.1.1.3 pgoyette-localcount:1.1.1.3.0.2 pgoyette-localcount-base:1.1.1.3 netbsd-7-0-1-RELEASE:1.1.1.1.2.1 clang-261930:1.1.1.3 netbsd-7-0:1.1.1.1.2.1.0.2 netbsd-7-0-RELEASE:1.1.1.1.2.1 netbsd-7-0-RC3:1.1.1.1.2.1 netbsd-7-0-RC2:1.1.1.1.2.1 netbsd-7-0-RC1:1.1.1.1.2.1 clang-237755:1.1.1.2 clang-232565:1.1.1.2 clang-227398:1.1.1.2 tls-maxphys-base:1.1.1.1 tls-maxphys:1.1.1.1.0.4 netbsd-7:1.1.1.1.0.2 netbsd-7-base:1.1.1.1 clang-215315:1.1.1.1 LLVM:1.1.1; locks; strict; comment @// @; 1.1 date 2014.08.10.17.08.41; author joerg; state Exp; branches 1.1.1.1; next ; commitid N85tXAN6Ex9VZPLx; 1.1.1.1 date 2014.08.10.17.08.41; author joerg; state Exp; branches 1.1.1.1.2.1 1.1.1.1.4.1; next 1.1.1.2; commitid N85tXAN6Ex9VZPLx; 1.1.1.2 date 2015.01.29.19.57.35; author joerg; state Exp; branches; next 1.1.1.3; commitid mlISSizlPKvepX7y; 1.1.1.3 date 2016.02.27.22.08.33; author joerg; state Exp; branches 1.1.1.3.2.1; next 1.1.1.4; commitid tIimz3oDlh1NpBWy; 1.1.1.4 date 2017.01.11.10.39.37; author joerg; state Exp; branches 1.1.1.4.12.1 1.1.1.4.14.1; next 1.1.1.5; commitid CNnUNfII1jgNmxBz; 1.1.1.5 date 2018.07.17.18.31.37; author joerg; state Exp; branches; next 1.1.1.6; commitid wDzL46ALjrCZgwKA; 1.1.1.6 date 2019.11.13.22.22.44; author joerg; state dead; branches; next ; commitid QD8YATxuNG34YJKB; 1.1.1.1.2.1 date 2015.06.04.20.04.43; author snj; state Exp; branches; next ; commitid yRnjq9fueSo6n9oy; 1.1.1.1.4.1 date 2014.08.10.17.08.41; author tls; state dead; branches; next 1.1.1.1.4.2; commitid jTnpym9Qu0o4R1Nx; 1.1.1.1.4.2 date 2014.08.19.23.48.39; author tls; state Exp; branches; next ; commitid jTnpym9Qu0o4R1Nx; 1.1.1.3.2.1 date 2017.03.20.06.53.28; author pgoyette; state Exp; branches; next ; commitid jjw7cAwgyKq7RfKz; 1.1.1.4.12.1 date 2018.07.28.04.34.06; author pgoyette; state Exp; branches; next ; commitid 1UP1xAIUxv1ZgRLA; 1.1.1.4.14.1 date 2019.06.10.21.46.27; author christos; state Exp; branches; next 1.1.1.4.14.2; commitid jtc8rnCzWiEEHGqB; 1.1.1.4.14.2 date 2020.04.13.07.50.12; author martin; state dead; branches; next ; commitid X01YhRUPVUDaec4C; desc @@ 1.1 log @Initial revision @ text @// RUN: %clang_cc1 -verify -fopenmp=libiomp5 %s void foo() { } bool foobool(int argc) { return argc; } struct S1; // expected-note 2 {{declared here}} expected-note 2 {{forward declaration of 'S1'}} extern S1 a; class S2 { mutable int a; public: S2() : a(0) {} }; const S2 b; const S2 ba[5]; class S3 { int a; public: S3() : a(0) {} }; const S3 ca[5]; class S4 { // expected-note {{'S4' declared here}} int a; S4(); public: S4(int v) : a(v) {} }; class S5 { // expected-note {{'S5' declared here}} int a; S5() : a(0) {} public: S5(int v) : a(v) {} }; S3 h; #pragma omp threadprivate(h) // expected-note 2 {{defined as threadprivate or thread local}} template int foomain(I argc, C **argv) { I e(4); I g(5); int i; int &j = i; // expected-note {{'j' defined here}} #pragma omp single private // expected-error {{expected '(' after 'private'}} foo(); #pragma omp single private( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private() // expected-error {{expected expression}} foo(); #pragma omp single private(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private(argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}} foo(); #pragma omp single private(argc) foo(); #pragma omp single private(S1) // expected-error {{'S1' does not refer to a value}} foo(); #pragma omp single private(a, b) // expected-error {{private variable with incomplete type 'S1'}} foo(); #pragma omp single private(argv[1]) // expected-error {{expected variable name}} foo(); #pragma omp single private(e, g) foo(); #pragma omp single private(h) // expected-error {{threadprivate or thread local variable cannot be private}} foo(); #pragma omp single shared(i) // expected-error {{unexpected OpenMP clause 'shared' in directive '#pragma omp single'}} foo(); #pragma omp parallel { int v = 0; int i; #pragma omp single private(i) foo(); v += i; } #pragma omp parallel shared(i) #pragma omp parallel private(i) #pragma omp single private(j) // expected-error {{arguments of OpenMP clause 'private' cannot be of reference type}} foo(); #pragma omp single private(i) foo(); return 0; } int main(int argc, char **argv) { S4 e(4); // expected-note {{'e' defined here}} S5 g(5); // expected-note {{'g' defined here}} int i; int &j = i; // expected-note {{'j' defined here}} #pragma omp single private // expected-error {{expected '(' after 'private'}} foo(); #pragma omp single private( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private() // expected-error {{expected expression}} foo(); #pragma omp single private(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private(argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}} foo(); #pragma omp single private(argc) foo(); #pragma omp single private(S1) // expected-error {{'S1' does not refer to a value}} foo(); #pragma omp single private(a, b) // expected-error {{private variable with incomplete type 'S1'}} foo(); #pragma omp single private(argv[1]) // expected-error {{expected variable name}} foo(); #pragma omp single private(e, g) // expected-error 2 {{private variable must have an accessible, unambiguous default constructor}} foo(); #pragma omp single private(h) // expected-error {{threadprivate or thread local variable cannot be private}} foo(); #pragma omp single shared(i) // expected-error {{unexpected OpenMP clause 'shared' in directive '#pragma omp single'}} foo(); #pragma omp parallel { int i; #pragma omp single private(i) foo(); } #pragma omp parallel shared(i) #pragma omp parallel private(i) #pragma omp single private(j) // expected-error {{arguments of OpenMP clause 'private' cannot be of reference type}} foo(); #pragma omp single private(i) foo(); return 0; } @ 1.1.1.1 log @Import clang 3.6svn r215315. @ text @@ 1.1.1.1.2.1 log @Update LLVM to 3.6.1, requested by joerg in ticket 824. @ text @d27 1 a27 1 class S4 { d29 1 a29 1 S4(); // expected-note {{implicitly declared private here}} d34 1 a34 1 class S5 { d36 1 a36 1 S5() : a(0) {} // expected-note {{implicitly declared private here}} d95 2 a96 2 S4 e(4); S5 g(5); d119 1 a119 1 #pragma omp single private(e, g) // expected-error {{calling a private constructor of class 'S4'}} expected-error {{calling a private constructor of class 'S5'}} @ 1.1.1.2 log @Import Clang 3.6RC1 r227398. @ text @d27 1 a27 1 class S4 { d29 1 a29 1 S4(); // expected-note {{implicitly declared private here}} d34 1 a34 1 class S5 { d36 1 a36 1 S5() : a(0) {} // expected-note {{implicitly declared private here}} d95 2 a96 2 S4 e(4); S5 g(5); d119 1 a119 1 #pragma omp single private(e, g) // expected-error {{calling a private constructor of class 'S4'}} expected-error {{calling a private constructor of class 'S5'}} @ 1.1.1.3 log @Import Clang 3.8.0rc3 r261930. @ text @d1 1 a1 1 // RUN: %clang_cc1 -verify -fopenmp %s d50 1 a50 1 int &j = i; d87 1 a87 1 #pragma omp single private(j) a93 8 namespace A { double x; #pragma omp threadprivate(x) // expected-note {{defined as threadprivate or thread local}} } namespace B { using A::x; } d98 1 a98 1 int &j = i; d121 1 a121 1 #pragma omp single private(h, B::x) // expected-error 2 {{threadprivate or thread local variable cannot be private}} d133 1 a133 1 #pragma omp single private(j) a136 3 static int m; #pragma omp single private(m) // OK foo(); @ 1.1.1.3.2.1 log @Sync with HEAD @ text @d32 1 a32 5 S4(int v) : a(v) { #pragma omp single private(a) private(this->a) for (int k = 0; k < v; ++k) ++this->a; } a39 44 S5 &operator=(S5 &s) { #pragma omp single private(a) private(this->a) private(s.a) // expected-error {{expected variable name or data member of current class}} for (int k = 0; k < s.a; ++k) ++s.a; return *this; } }; template class S6 { public: T a; S6() : a(0) {} S6(T v) : a(v) { #pragma omp single private(a) private(this->a) for (int k = 0; k < v; ++k) ++this->a; } S6 &operator=(S6 &s) { #pragma omp single private(a) private(this->a) private(s.a) // expected-error {{expected variable name or data member of current class}} for (int k = 0; k < s.a; ++k) ++s.a; return *this; } }; template class S7 : public T { T a; S7() : a(0) {} public: S7(T v) : a(v) { #pragma omp single private(a) private(this->a) private(T::a) for (int k = 0; k < a.a; ++k) ++this->a.a; } S7 &operator=(S7 &s) { #pragma omp single private(a) private(this->a) private(s.a) private(s.T::a) // expected-error 2 {{expected variable name or data member of current class}} for (int k = 0; k < s.a.a; ++k) ++s.a.a; return *this; } a104 2 S6 s6(0.0) , s6_0(1.0); S7 > s7(0.0) , s7_0(1.0); d149 1 a149 3 s6 = s6_0; // expected-note {{in instantiation of member function 'S6::operator=' requested here}} s7 = s7_0; // expected-note {{in instantiation of member function 'S7 >::operator=' requested here}} return foomain(argc, argv); // expected-note {{in instantiation of function template specialization 'foomain' requested here}} @ 1.1.1.4 log @Import Clang pre-4.0.0 r291444. @ text @d32 1 a32 5 S4(int v) : a(v) { #pragma omp single private(a) private(this->a) for (int k = 0; k < v; ++k) ++this->a; } a39 44 S5 &operator=(S5 &s) { #pragma omp single private(a) private(this->a) private(s.a) // expected-error {{expected variable name or data member of current class}} for (int k = 0; k < s.a; ++k) ++s.a; return *this; } }; template class S6 { public: T a; S6() : a(0) {} S6(T v) : a(v) { #pragma omp single private(a) private(this->a) for (int k = 0; k < v; ++k) ++this->a; } S6 &operator=(S6 &s) { #pragma omp single private(a) private(this->a) private(s.a) // expected-error {{expected variable name or data member of current class}} for (int k = 0; k < s.a; ++k) ++s.a; return *this; } }; template class S7 : public T { T a; S7() : a(0) {} public: S7(T v) : a(v) { #pragma omp single private(a) private(this->a) private(T::a) for (int k = 0; k < a.a; ++k) ++this->a.a; } S7 &operator=(S7 &s) { #pragma omp single private(a) private(this->a) private(s.a) private(s.T::a) // expected-error 2 {{expected variable name or data member of current class}} for (int k = 0; k < s.a.a; ++k) ++s.a.a; return *this; } a104 2 S6 s6(0.0) , s6_0(1.0); S7 > s7(0.0) , s7_0(1.0); d149 1 a149 3 s6 = s6_0; // expected-note {{in instantiation of member function 'S6::operator=' requested here}} s7 = s7_0; // expected-note {{in instantiation of member function 'S7 >::operator=' requested here}} return foomain(argc, argv); // expected-note {{in instantiation of function template specialization 'foomain' requested here}} @ 1.1.1.4.14.1 log @Sync with HEAD @ text @a2 2 // RUN: %clang_cc1 -verify -fopenmp-simd %s @ 1.1.1.4.14.2 log @Mostly merge changes from HEAD upto 20200411 @ text @@ 1.1.1.4.12.1 log @Sync with HEAD @ text @a2 2 // RUN: %clang_cc1 -verify -fopenmp-simd %s @ 1.1.1.5 log @Import clang r337282 from trunk @ text @a2 2 // RUN: %clang_cc1 -verify -fopenmp-simd %s @ 1.1.1.6 log @Mark old LLVM instance as dead. @ text @@ 1.1.1.1.4.1 log @file single_private_messages.cpp was added on branch tls-maxphys on 2014-08-19 23:48:39 +0000 @ text @d1 140 @ 1.1.1.1.4.2 log @Rebase to HEAD as of a few days ago. @ text @a0 140 // RUN: %clang_cc1 -verify -fopenmp=libiomp5 %s void foo() { } bool foobool(int argc) { return argc; } struct S1; // expected-note 2 {{declared here}} expected-note 2 {{forward declaration of 'S1'}} extern S1 a; class S2 { mutable int a; public: S2() : a(0) {} }; const S2 b; const S2 ba[5]; class S3 { int a; public: S3() : a(0) {} }; const S3 ca[5]; class S4 { // expected-note {{'S4' declared here}} int a; S4(); public: S4(int v) : a(v) {} }; class S5 { // expected-note {{'S5' declared here}} int a; S5() : a(0) {} public: S5(int v) : a(v) {} }; S3 h; #pragma omp threadprivate(h) // expected-note 2 {{defined as threadprivate or thread local}} template int foomain(I argc, C **argv) { I e(4); I g(5); int i; int &j = i; // expected-note {{'j' defined here}} #pragma omp single private // expected-error {{expected '(' after 'private'}} foo(); #pragma omp single private( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private() // expected-error {{expected expression}} foo(); #pragma omp single private(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private(argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}} foo(); #pragma omp single private(argc) foo(); #pragma omp single private(S1) // expected-error {{'S1' does not refer to a value}} foo(); #pragma omp single private(a, b) // expected-error {{private variable with incomplete type 'S1'}} foo(); #pragma omp single private(argv[1]) // expected-error {{expected variable name}} foo(); #pragma omp single private(e, g) foo(); #pragma omp single private(h) // expected-error {{threadprivate or thread local variable cannot be private}} foo(); #pragma omp single shared(i) // expected-error {{unexpected OpenMP clause 'shared' in directive '#pragma omp single'}} foo(); #pragma omp parallel { int v = 0; int i; #pragma omp single private(i) foo(); v += i; } #pragma omp parallel shared(i) #pragma omp parallel private(i) #pragma omp single private(j) // expected-error {{arguments of OpenMP clause 'private' cannot be of reference type}} foo(); #pragma omp single private(i) foo(); return 0; } int main(int argc, char **argv) { S4 e(4); // expected-note {{'e' defined here}} S5 g(5); // expected-note {{'g' defined here}} int i; int &j = i; // expected-note {{'j' defined here}} #pragma omp single private // expected-error {{expected '(' after 'private'}} foo(); #pragma omp single private( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private() // expected-error {{expected expression}} foo(); #pragma omp single private(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} foo(); #pragma omp single private(argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}} foo(); #pragma omp single private(argc) foo(); #pragma omp single private(S1) // expected-error {{'S1' does not refer to a value}} foo(); #pragma omp single private(a, b) // expected-error {{private variable with incomplete type 'S1'}} foo(); #pragma omp single private(argv[1]) // expected-error {{expected variable name}} foo(); #pragma omp single private(e, g) // expected-error 2 {{private variable must have an accessible, unambiguous default constructor}} foo(); #pragma omp single private(h) // expected-error {{threadprivate or thread local variable cannot be private}} foo(); #pragma omp single shared(i) // expected-error {{unexpected OpenMP clause 'shared' in directive '#pragma omp single'}} foo(); #pragma omp parallel { int i; #pragma omp single private(i) foo(); } #pragma omp parallel shared(i) #pragma omp parallel private(i) #pragma omp single private(j) // expected-error {{arguments of OpenMP clause 'private' cannot be of reference type}} foo(); #pragma omp single private(i) foo(); return 0; } @