Add missing casts to AST.

llvm-svn: 144455
This commit is contained in:
Eli Friedman
2011-11-12 03:56:23 +00:00
parent d48ab84556
commit 47133bed4a
2 changed files with 11 additions and 1 deletions

View File

@@ -823,14 +823,21 @@ static QualType handleComplexIntConversion(Sema &S, ExprResult &LHS,
if (LHSComplexInt) {
// int -> _Complex int
// FIXME: This needs to take integer ranks into account
RHS = S.ImpCastExprToType(RHS.take(), LHSComplexInt->getElementType(),
CK_IntegralCast);
RHS = S.ImpCastExprToType(RHS.take(), LHSType, CK_IntegralRealToComplex);
return LHSType;
}
assert(RHSComplexInt);
// int -> _Complex int
if (!IsCompAssign)
// FIXME: This needs to take integer ranks into account
if (!IsCompAssign) {
LHS = S.ImpCastExprToType(LHS.take(), RHSComplexInt->getElementType(),
CK_IntegralCast);
LHS = S.ImpCastExprToType(LHS.take(), RHSType, CK_IntegralRealToComplex);
}
return RHSType;
}

View File

@@ -81,6 +81,9 @@ EVAL_EXPR(38, __builtin_expect(1,1) == 1 ? 1 : -1)
EVAL_EXPR(39, __real__(1.f) == 1 ? 1 : -1)
EVAL_EXPR(40, __imag__(1.f) == 0 ? 1 : -1)
// From gcc testsuite
EVAL_EXPR(41, (int)(1+(_Complex unsigned)2))
// rdar://8875946
void rdar8875946() {
double _Complex P;