]> granicus.if.org Git - clang/commitdiff
Set the cast kind for a few more code paths.
authorEli Friedman <eli.friedman@gmail.com>
Mon, 16 Nov 2009 05:44:20 +0000 (05:44 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Mon, 16 Nov 2009 05:44:20 +0000 (05:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88893 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaCXXCast.cpp

index 2ccad80bdc8c378cc7766e5894f583ac0ef123df..3d68e6a10930c35a3e764c74298715d338997255 100644 (file)
@@ -388,8 +388,10 @@ CheckStaticCast(Sema &Self, Expr *&SrcExpr, QualType DestType,
   // This test is outside everything else because it's the only case where
   // a non-lvalue-reference target type does not lead to decay.
   // C++ 5.2.9p4: Any expression can be explicitly converted to type "cv void".
-  if (DestType->isVoidType())
+  if (DestType->isVoidType()) {
+    Kind = CastExpr::CK_ToVoid;
     return;
+  }
 
   if (!DestType->isLValueReferenceType() && !DestType->isRecordType())
     Self.DefaultFunctionArrayConversion(SrcExpr);
@@ -473,8 +475,10 @@ static TryCastResult TryStaticCast(Sema &Self, Expr *&SrcExpr,
   if (DestType->isEnumeralType()) {
     if (SrcType->isComplexType() || SrcType->isVectorType()) {
       // Fall through - these cannot be converted.
-    } else if (SrcType->isArithmeticType() || SrcType->isEnumeralType())
+    } else if (SrcType->isArithmeticType() || SrcType->isEnumeralType()) {
+      Kind = CastExpr::CK_IntegralCast;
       return TC_Success;
+    }
   }
 
   // Reverse pointer upcast. C++ 4.10p3 specifies pointer upcast.
@@ -507,6 +511,7 @@ static TryCastResult TryStaticCast(Sema &Self, Expr *&SrcExpr,
             msg = diag::err_bad_cxx_cast_const_away;
             return TC_Failed;
           }
+          Kind = CastExpr::CK_BitCast;
           return TC_Success;
         }
       }
@@ -857,6 +862,7 @@ TryStaticImplicitCast(Sema &Self, Expr *&SrcExpr, QualType DestType,
     return TC_NotApplicable;
 
   // The conversion is possible, so commit to it.
+  Kind = CastExpr::CK_NoOp;
   msg = 0;
   return Self.PerformImplicitConversion(SrcExpr, DestType, ICS, "casting",
                                         /*IgnoreBaseAccess*/CStyle) ?