../../clang/lib/Sema/SemaExpr.cpp:13481:25: error: no member named 'warn_bitwise_negation_bool' in namespace 'clang::diag' Diag(OpLoc, diag::warn_bitwise_negation_bool) ~~~~~~^ 1 error generated.
On Thu, Oct 3, 2019 at 11:16 AM David Bolvansky via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: xbolva00 > Date: Thu Oct 3 08:17:59 2019 > New Revision: 373614 > > URL: http://llvm.org/viewvc/llvm-project?rev=373614&view=rev > Log: > [Diagnostics] Bitwise negation of a boolean expr always evaluates to true; > warn with -Wbool-operation > > Requested here: > http://lists.llvm.org/pipermail/cfe-dev/2019-October/063452.html > > > Added: > cfe/trunk/test/Sema/warn-bitwise-negation-bool.c > Modified: > cfe/trunk/lib/Sema/SemaExpr.cpp > > Modified: cfe/trunk/lib/Sema/SemaExpr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=373614&r1=373613&r2=373614&view=diff > > ============================================================================== > --- cfe/trunk/lib/Sema/SemaExpr.cpp (original) > +++ cfe/trunk/lib/Sema/SemaExpr.cpp Thu Oct 3 08:17:59 2019 > @@ -13470,7 +13470,6 @@ ExprResult Sema::CreateBuiltinUnaryOp(So > if (Input.isInvalid()) > return ExprError(); > resultType = Input.get()->getType(); > - > if (resultType->isDependentType()) > break; > // C99 6.5.3.3p1. We allow complex int and float as a GCC extension. > @@ -13478,6 +13477,9 @@ ExprResult Sema::CreateBuiltinUnaryOp(So > // C99 does not support '~' for complex conjugation. > Diag(OpLoc, diag::ext_integer_complement_complex) > << resultType << Input.get()->getSourceRange(); > + else if > (Input.get()->IgnoreParenImpCasts()->getType()->isBooleanType()) > + Diag(OpLoc, diag::warn_bitwise_negation_bool) > + << FixItHint::CreateReplacement(OpLoc, "!"); > else if (resultType->hasIntegerRepresentation()) > break; > else if (resultType->isExtVectorType() && > Context.getLangOpts().OpenCL) { > > Added: cfe/trunk/test/Sema/warn-bitwise-negation-bool.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/warn-bitwise-negation-bool.c?rev=373614&view=auto > > ============================================================================== > --- cfe/trunk/test/Sema/warn-bitwise-negation-bool.c (added) > +++ cfe/trunk/test/Sema/warn-bitwise-negation-bool.c Thu Oct 3 08:17:59 > 2019 > @@ -0,0 +1,20 @@ > +// RUN: %clang_cc1 -x c -fsyntax-only -verify -Wbool-operation %s > +// RUN: %clang_cc1 -x c -fsyntax-only -verify %s > +// RUN: %clang_cc1 -x c -fsyntax-only -fdiagnostics-parseable-fixits %s > 2>&1 | FileCheck %s > +// RUN: %clang_cc1 -x c++ -fsyntax-only -verify -Wbool-operation %s > +// RUN: %clang_cc1 -x c++ -fsyntax-only -verify %s > +// RUN: %clang_cc1 -x c++ -fsyntax-only -fdiagnostics-parseable-fixits %s > 2>&1 | FileCheck %s > + > +#ifdef __cplusplus > +typedef bool boolean; > +#else > +typedef _Bool boolean; > +#endif > + > +void test(boolean b, int i) { > + b = ~b; // expected-warning {{bitwise negation of a boolean expression > always evaluates to 'true'}} > + // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:7-[[@LINE-1]]:8}:"!" > + b = ~(b); // expected-warning {{bitwise negation of a boolean > expression always evaluates to 'true'}} > + // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:7-[[@LINE-1]]:8}:"!" > + b = ~i; > +} > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits