Fix a crasher involving template instantiation of non-dependent
expressions making use of an overloaded operator. Thanks for the test
case, Anders!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80679 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h
index f1888c8..e7400e7 100644
--- a/lib/Sema/TreeTransform.h
+++ b/lib/Sema/TreeTransform.h
@@ -4525,16 +4525,12 @@
   // used during overload resolution.
   Sema::FunctionSet Functions;
   
-  DeclRefExpr *DRE = cast<DeclRefExpr>((Expr *)Callee.get());
-  OverloadedFunctionDecl *Overloads 
-    = cast<OverloadedFunctionDecl>(DRE->getDecl());
+  DeclRefExpr *DRE 
+    = cast<DeclRefExpr>(((Expr *)Callee.get())->IgnoreParenCasts());
   
   // FIXME: Do we have to check
   // IsAcceptableNonMemberOperatorCandidate for each of these?
-  for (OverloadedFunctionDecl::function_iterator 
-       F = Overloads->function_begin(),
-       FEnd = Overloads->function_end();
-       F != FEnd; ++F)
+  for (OverloadIterator F(DRE->getDecl()), FEnd; F != FEnd; ++F)
     Functions.insert(*F);
   
   // Add any functions found via argument-dependent lookup.