From 9e1e551c01803ef110edbd2a0509de14224d6403 Mon Sep 17 00:00:00 2001 From: Steve Naroff Date: Thu, 23 Aug 2007 21:37:33 +0000 Subject: [PATCH] Remove a FIXME, allowing ++/-- on Complex types (a GCC extension). Now, the following test case succeeds... _Complex double x, y; void test2(int c) { ++x; } llvm-svn: 41335 --- clang/Sema/SemaExpr.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clang/Sema/SemaExpr.cpp b/clang/Sema/SemaExpr.cpp index 7fc6422ab7bb..6d5d8527191d 100644 --- a/clang/Sema/SemaExpr.cpp +++ b/clang/Sema/SemaExpr.cpp @@ -1262,14 +1262,14 @@ QualType Sema::CheckIncrementDecrementOperand(Expr *op, SourceLocation OpLoc) { resType.getAsString(), op->getSourceRange()); return QualType(); } - } else if (!resType->isRealType()) { - // FIXME: Allow Complex as a GCC extension. + } else if (!resType->isRealType() && !resType->isComplexType()) { + // Allowing Complex is a GCC extension. Diag(OpLoc, diag::err_typecheck_illegal_increment_decrement, resType.getAsString(), op->getSourceRange()); return QualType(); } - // At this point, we know we have a real or pointer type. Now make sure - // the operand is a modifiable lvalue. + // At this point, we know we have a real, complex or pointer type. + // Now make sure the operand is a modifiable lvalue. Expr::isModifiableLvalueResult mlval = op->isModifiableLvalue(); if (mlval != Expr::MLV_Valid) { // FIXME: emit a more precise diagnostic...