diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-01-22 21:17:12 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-01-22 21:17:12 +0000 |
commit | 790462cc37eb4ee9424408ca56a74bca9b3ef693 (patch) | |
tree | d75ecf941e7e23a1c07385e4904e73a5db387c81 /test | |
parent | 53e9d7970557c6b1e6924cc30eb3bcf317aa8861 (diff) | |
download | src-790462cc37eb4ee9424408ca56a74bca9b3ef693.tar.gz src-790462cc37eb4ee9424408ca56a74bca9b3ef693.zip |
Vendor import of clang release_38 branch r258549:vendor/clang/clang-release_38-r258549
Notes
Notes:
svn path=/vendor/clang/dist/; revision=294604
svn path=/vendor/clang/clang-release_38-r258549/; revision=294605; tag=vendor/clang/clang-release_38-r258549
Diffstat (limited to 'test')
-rw-r--r-- | test/OpenMP/parallel_reduction_codegen.cpp | 4 | ||||
-rw-r--r-- | test/SemaTemplate/default-arguments.cpp | 28 |
2 files changed, 32 insertions, 0 deletions
diff --git a/test/OpenMP/parallel_reduction_codegen.cpp b/test/OpenMP/parallel_reduction_codegen.cpp index b9744b634118..05224d0a1391 100644 --- a/test/OpenMP/parallel_reduction_codegen.cpp +++ b/test/OpenMP/parallel_reduction_codegen.cpp @@ -158,6 +158,7 @@ int main() { int vec[] = {1, 2}; S<float> s_arr[] = {1, 2}; S<float> var(3), var1; + float _Complex cf; #pragma omp parallel reduction(+:t_var) reduction(&:var) reduction(&& : var1) reduction(min: t_var1) { vec[0] = t_var; @@ -169,6 +170,8 @@ int main() { vec[0] = t_var; s_arr[0] = var; } +#pragma omp parallel reduction(+ : cf) + ; return tmain<int>(); #endif } @@ -178,6 +181,7 @@ int main() { // CHECK: call {{.*}} [[S_FLOAT_TY_CONSTR:@.+]]([[S_FLOAT_TY]]* [[TEST]]) // CHECK: call void (%{{.+}}*, i{{[0-9]+}}, void (i{{[0-9]+}}*, i{{[0-9]+}}*, ...)*, ...) @__kmpc_fork_call(%{{.+}}* @{{.+}}, i{{[0-9]+}} 6, void (i{{[0-9]+}}*, i{{[0-9]+}}*, ...)* bitcast (void (i{{[0-9]+}}*, i{{[0-9]+}}*, [2 x i32]*, float*, [2 x [[S_FLOAT_TY]]]*, [[S_FLOAT_TY]]*, [[S_FLOAT_TY]]*, float*)* [[MAIN_MICROTASK:@.+]] to void // CHECK: call void (%{{.+}}*, i{{[0-9]+}}, void (i{{[0-9]+}}*, i{{[0-9]+}}*, ...)*, ...) @__kmpc_fork_call(%{{.+}}* @{{.+}}, i{{[0-9]+}} 6, void (i{{[0-9]+}}*, i{{[0-9]+}}*, ...)* bitcast (void (i{{[0-9]+}}*, i{{[0-9]+}}*, [2 x i32]*, float*, [2 x [[S_FLOAT_TY]]]*, [[S_FLOAT_TY]]*, [[S_FLOAT_TY]]*, float*)* [[MAIN_MICROTASK1:@.+]] to void +// CHECK: call void (%{{.+}}*, i{{[0-9]+}}, void (i{{[0-9]+}}*, i{{[0-9]+}}*, ...)*, ...) @__kmpc_fork_call(%{{.+}}* @{{.+}}, i{{[0-9]+}} 1, void (i{{[0-9]+}}*, i{{[0-9]+}}*, ...)* bitcast (void (i{{[0-9]+}}*, i{{[0-9]+}}*, { float, float }*)* [[MAIN_MICROTASK2:@.+]] to void // CHECK: = call {{.*}}i{{.+}} [[TMAIN_INT:@.+]]() // CHECK: call {{.*}} [[S_FLOAT_TY_DESTR:@.+]]([[S_FLOAT_TY]]* // CHECK: ret diff --git a/test/SemaTemplate/default-arguments.cpp b/test/SemaTemplate/default-arguments.cpp index 740a5a9d07b3..d3e249db7ee2 100644 --- a/test/SemaTemplate/default-arguments.cpp +++ b/test/SemaTemplate/default-arguments.cpp @@ -179,3 +179,31 @@ struct C { C(T t = ); // expected-error {{expected expression}} }; C<int> obj; + +namespace PR26134 { +// Make sure when substituting default template arguments we do it in the current context. +template<class T, bool Val = T::value> +struct X {}; + +template<bool B> struct Y { + void f() { X<Y> xy; } + static const bool value = B; +}; + +namespace ns1 { +template<class T0> +struct X { + template<bool B = T0::value> struct XInner { static const bool value = B; }; +}; +template<bool B> struct S { static const bool value = B; }; +#if __cplusplus > 199711L +template<bool B> struct Y { + static constexpr bool f() { return typename X<S<B>>::template XInner<>{}.value; } + static_assert(f() == B, ""); +}; +Y<true> y; +Y<false> y2; +#endif + +} // end ns1 +} // end ns PR26134 |