diff options
| author | John McCall <rjmccall@apple.com> | 2010-11-13 09:02:35 +0000 | 
|---|---|---|
| committer | John McCall <rjmccall@apple.com> | 2010-11-13 09:02:35 +0000 | 
| commit | c5e62b47afd4c8c123f6d601bb366f05fff6fb28 (patch) | |
| tree | 88d58dbb09f95c6a839e90348d7381f84d55a660 /clang/lib/AST | |
| parent | d005ac937e4c08e0c607ddc42708f8bf2064c243 (diff) | |
| download | bcm5719-llvm-c5e62b47afd4c8c123f6d601bb366f05fff6fb28.tar.gz bcm5719-llvm-c5e62b47afd4c8c123f6d601bb366f05fff6fb28.zip | |
Introduce five new cast kinds for various conversions into and
between complex types.
llvm-svn: 118994
Diffstat (limited to 'clang/lib/AST')
| -rw-r--r-- | clang/lib/AST/Expr.cpp | 16 | ||||
| -rw-r--r-- | clang/lib/AST/ExprConstant.cpp | 2 | 
2 files changed, 15 insertions, 3 deletions
| diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 2edf62ab397..cc209a458a1 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -798,9 +798,19 @@ const char *CastExpr::getCastKindName() const {      return "AnyPointerToBlockPointerCast";    case CK_ObjCObjectLValueCast:      return "ObjCObjectLValueCast"; -  } - -  assert(0 && "Unhandled cast kind!"); +  case CK_FloatingRealToComplex: +    return "FloatingRealToComplex"; +  case CK_FloatingComplexCast: +    return "FloatingComplexCast"; +  case CK_IntegralRealToComplex: +    return "IntegralRealToComplex"; +  case CK_IntegralComplexCast: +    return "IntegralComplexCast"; +  case CK_IntegralToFloatingComplex: +    return "IntegralToFloatingComplex"; +  } + +  llvm_unreachable("Unhandled cast kind!");    return 0;  } diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp index dfeb32df3d3..172a811bee1 100644 --- a/clang/lib/AST/ExprConstant.cpp +++ b/clang/lib/AST/ExprConstant.cpp @@ -2165,6 +2165,8 @@ bool ComplexExprEvaluator::VisitCastExpr(CastExpr *E) {    QualType EltType = E->getType()->getAs<ComplexType>()->getElementType();    QualType SubType = SubExpr->getType(); +  // TODO: just trust CastKind +    if (SubType->isRealFloatingType()) {      APFloat &Real = Result.FloatReal;      if (!EvaluateFloat(SubExpr, Real, Info)) | 

