update to CXXFunctionalCastExpr to support ir-gen for
type convesions of class objects [class.conv]. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80127 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index 213292e..7a81898 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -2902,9 +2902,12 @@
 
 /// CheckCastTypes - Check type constraints for casting between types.
 bool Sema::CheckCastTypes(SourceRange TyR, QualType castType, Expr *&castExpr,
-                          CastExpr::CastKind& Kind, bool FunctionalStyle) {
+                          CastExpr::CastKind& Kind, 
+                          CXXMethodDecl *& ConversionDecl,
+                          bool FunctionalStyle) {
   if (getLangOptions().CPlusPlus)
-    return CXXCheckCStyleCast(TyR, castType, castExpr, Kind, FunctionalStyle);
+    return CXXCheckCStyleCast(TyR, castType, castExpr, Kind, FunctionalStyle,
+                              ConversionDecl);
 
   DefaultFunctionArrayConversion(castExpr);
 
@@ -3031,9 +3034,9 @@
   // If the Expr being casted is a ParenListExpr, handle it specially.
   if (isa<ParenListExpr>(castExpr))
     return ActOnCastOfParenListExpr(S, LParenLoc, RParenLoc, move(Op),castType);
-
+  CXXMethodDecl *ConversionDecl = 0;
   if (CheckCastTypes(SourceRange(LParenLoc, RParenLoc), castType, castExpr, 
-                     Kind))
+                     Kind, ConversionDecl))
     return ExprError();
   
   Op.release();