[OPENMP] Fix PR38902: support ADL for declare reduction constructs.
Added support for argument-dependent lookup when trying to find the
required declare reduction decl.
llvm-svn: 342062
diff --git a/clang/test/OpenMP/declare_reduction_ast_print.cpp b/clang/test/OpenMP/declare_reduction_ast_print.cpp
index a8ca529..6344394 100644
--- a/clang/test/OpenMP/declare_reduction_ast_print.cpp
+++ b/clang/test/OpenMP/declare_reduction_ast_print.cpp
@@ -10,6 +10,15 @@
#ifndef HEADER
#define HEADER
+template <typename T>
+void bar(T &x, T &y) { x.a += y.a; }
+
+namespace N1
+{
+ struct A { int a; A() : a(0) {} };
+ #pragma omp declare reduction(+: A : bar(omp_out, omp_in))
+};
+
#pragma omp declare reduction(+ : int, char : omp_out *= omp_in)
// CHECK: #pragma omp declare reduction (+ : int : omp_out *= omp_in){{$}}
// CHECK-NEXT: #pragma omp declare reduction (+ : char : omp_out *= omp_in)
@@ -66,6 +75,11 @@
// TODO-CHECK: #pragma omp parallel reduction(::fun: sss)
{
}
+ N1::A a;
+ // CHECK: #pragma omp parallel reduction(+: a)
+ #pragma omp parallel reduction(+: a)
+ {
+ }
return foo(15);
}