Author: Aaron Ballman Date: 2024-04-12T07:43:39-04:00 New Revision: 33779b861d748ed18b8d4f9cbad3a84deaa95e9f
URL: https://github.com/llvm/llvm-project/commit/33779b861d748ed18b8d4f9cbad3a84deaa95e9f DIFF: https://github.com/llvm/llvm-project/commit/33779b861d748ed18b8d4f9cbad3a84deaa95e9f.diff LOG: Reword a diagnostic; NFC This diagnostic used to talk about complex integer types but is issued for use of the increment or decrement operators on any complex type, not just integral ones. The diagnostic also had zero test coverage, so new coverage is added along with the rewording. Added: clang/test/Sema/complex-inc-dec.c Modified: clang/include/clang/Basic/DiagnosticSemaKinds.td clang/lib/Sema/SemaExpr.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 180e913155d67c..774d2b53a38252 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -7588,8 +7588,8 @@ def ext_gnu_ptr_func_arith : Extension< InGroup<GNUPointerArith>; def err_readonly_message_assignment : Error< "assigning to 'readonly' return result of an Objective-C message not allowed">; -def ext_integer_increment_complex : Extension< - "ISO C does not support '++'/'--' on complex integer type %0">; +def ext_increment_complex : Extension< + "'%select{--|++}0' on an object of complex type is a Clang extension">; def ext_integer_complement_complex : Extension< "ISO C does not support '~' for complex conjugation of %0">; def err_nosetter_property_assignment : Error< diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 18284e0c3e987b..b294d2bd9f53f2 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -14859,8 +14859,8 @@ static QualType CheckIncrementDecrementOperand(Sema &S, Expr *Op, return QualType(); } else if (ResType->isAnyComplexType()) { // C99 does not support ++/-- on complex types, we allow as an extension. - S.Diag(OpLoc, diag::ext_integer_increment_complex) - << ResType << Op->getSourceRange(); + S.Diag(OpLoc, diag::ext_increment_complex) + << IsInc << Op->getSourceRange(); } else if (ResType->isPlaceholderType()) { ExprResult PR = S.CheckPlaceholderExpr(Op); if (PR.isInvalid()) return QualType(); diff --git a/clang/test/Sema/complex-inc-dec.c b/clang/test/Sema/complex-inc-dec.c new file mode 100644 index 00000000000000..ebc23c36f40c89 --- /dev/null +++ b/clang/test/Sema/complex-inc-dec.c @@ -0,0 +1,24 @@ +// RUN: %clang_cc1 -verify -pedantic -std=c99 %s + +void func(void) { + _Complex float cf; + _Complex double cd; + _Complex long double cld; + + ++cf; // expected-warning {{'++' on an object of complex type is a Clang extension}} + ++cd; // expected-warning {{'++' on an object of complex type is a Clang extension}} + ++cld; // expected-warning {{'++' on an object of complex type is a Clang extension}} + + --cf; // expected-warning {{'--' on an object of complex type is a Clang extension}} + --cd; // expected-warning {{'--' on an object of complex type is a Clang extension}} + --cld; // expected-warning {{'--' on an object of complex type is a Clang extension}} + + cf++; // expected-warning {{'++' on an object of complex type is a Clang extension}} + cd++; // expected-warning {{'++' on an object of complex type is a Clang extension}} + cld++; // expected-warning {{'++' on an object of complex type is a Clang extension}} + + cf--; // expected-warning {{'--' on an object of complex type is a Clang extension}} + cd--; // expected-warning {{'--' on an object of complex type is a Clang extension}} + cld--; // expected-warning {{'--' on an object of complex type is a Clang extension}} +} + _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits