See through UsingDecls in more places.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74269 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaLookup.cpp b/lib/Sema/SemaLookup.cpp
index e1c6302..d76761c 100644
--- a/lib/Sema/SemaLookup.cpp
+++ b/lib/Sema/SemaLookup.cpp
@@ -139,16 +139,24 @@
         // nothing to leak.
         Ovl = OverloadedFunctionDecl::Create(Context, (*I)->getDeclContext(),
                                              (*I)->getDeclName());
-        if (isa<FunctionDecl>(*I))
-          Ovl->addOverload(cast<FunctionDecl>(*I));
+        NamedDecl *ND = (*I);
+        if (UsingDecl *UD = dyn_cast<UsingDecl>(ND))
+          ND = UD->getTargetDecl();
+
+        if (isa<FunctionDecl>(ND))
+          Ovl->addOverload(cast<FunctionDecl>(ND));
         else
-          Ovl->addOverload(cast<FunctionTemplateDecl>(*I));
+          Ovl->addOverload(cast<FunctionTemplateDecl>(ND));
       }
 
-      if (isa<FunctionDecl>(*Last))
-        Ovl->addOverload(cast<FunctionDecl>(*Last));
+      NamedDecl *ND = (*Last);
+      if (UsingDecl *UD = dyn_cast<UsingDecl>(ND))
+        ND = UD->getTargetDecl();
+      
+      if (isa<FunctionDecl>(ND))
+        Ovl->addOverload(cast<FunctionDecl>(ND));
       else
-        Ovl->addOverload(cast<FunctionTemplateDecl>(*Last));
+        Ovl->addOverload(cast<FunctionTemplateDecl>(ND));
     }
     
     // If we had more than one function, we built an overload