Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/g++.dg/gomp/tpl-atomic-2.C @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 // { dg-do compile } | |
2 | |
3 struct S { int x; } s; | |
4 | |
5 // Make sure we detect errors on non-type-dependent things | |
6 // even when the templates are never instantiated. | |
7 template<typename T> void f1() | |
8 { | |
9 #pragma omp atomic | |
10 s += 1; // { dg-error "invalid" } | |
11 } | |
12 | |
13 template<typename T> void f2(float *f) | |
14 { | |
15 #pragma omp atomic | |
16 *f |= 1; // { dg-error "invalid|evaluation" } | |
17 } | |
18 | |
19 // Here the rhs is dependent, but not type dependent. | |
20 template<typename T> void f3(float *f) | |
21 { | |
22 #pragma omp atomic | |
23 *f |= sizeof (T); // { dg-error "invalid|evaluation" } | |
24 } | |
25 | |
26 // And the converse, no error here because we're never fed a T. | |
27 template<typename T> void f4(T *t) | |
28 { | |
29 #pragma omp atomic | |
30 *t += 1; | |
31 } | |
32 | |
33 // Here we'll let it go, because the rhs is type dependent and | |
34 // we can't properly instantiate the statement, and we do most | |
35 // of the semantic analysis concurrent with that. | |
36 template<typename T> void f5(float *f) | |
37 { | |
38 #pragma omp atomic | |
39 *f |= (T)sizeof(T); // { dg-error "invalid|evaluation" "" { xfail *-*-* } } | |
40 } |