[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);
 }