Update ImplicitCastExpr to be able to represent an XValue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108807 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaInit.h b/lib/Sema/SemaInit.h
index 44c36a7..4c94aa6 100644
--- a/lib/Sema/SemaInit.h
+++ b/lib/Sema/SemaInit.h
@@ -445,6 +445,8 @@
     SK_ResolveAddressOfOverloadedFunction,
     /// \brief Perform a derived-to-base cast, producing an rvalue.
     SK_CastDerivedToBaseRValue,
+    /// \brief Perform a derived-to-base cast, producing an xvalue.
+    SK_CastDerivedToBaseXValue,
     /// \brief Perform a derived-to-base cast, producing an lvalue.
     SK_CastDerivedToBaseLValue,
     /// \brief Reference binding to an lvalue.
@@ -460,6 +462,8 @@
     SK_UserConversion,
     /// \brief Perform a qualification conversion, producing an rvalue.
     SK_QualificationConversionRValue,
+    /// \brief Perform a qualification conversion, producing an xvalue.
+    SK_QualificationConversionXValue,
     /// \brief Perform a qualification conversion, producing an lvalue.
     SK_QualificationConversionLValue,
     /// \brief Perform an implicit conversion sequence.
@@ -670,7 +674,8 @@
   ///
   /// \param IsLValue true if the result of this cast will be treated as 
   /// an lvalue.
-  void AddDerivedToBaseCastStep(QualType BaseType, bool IsLValue);
+  void AddDerivedToBaseCastStep(QualType BaseType,
+                                ImplicitCastExpr::ResultCategory Category);
      
   /// \brief Add a new step binding a reference to an object.
   ///
@@ -702,7 +707,8 @@
   
   /// \brief Add a new step that performs a qualification conversion to the
   /// given type.
-  void AddQualificationConversionStep(QualType Ty, bool IsLValue);
+  void AddQualificationConversionStep(QualType Ty,
+                                     ImplicitCastExpr::ResultCategory Category);
   
   /// \brief Add a new step that applies an implicit conversion sequence.
   void AddConversionSequenceStep(const ImplicitConversionSequence &ICS,