Author: Mariya Podchishchaeva Date: 2024-02-08T14:31:57+01:00 New Revision: 8697bbe2d4aed109520e83c6beab52196ec5b702
URL: https://github.com/llvm/llvm-project/commit/8697bbe2d4aed109520e83c6beab52196ec5b702 DIFF: https://github.com/llvm/llvm-project/commit/8697bbe2d4aed109520e83c6beab52196ec5b702.diff LOG: [clang] Use CPlusPlus language option instead of Bool (#80975) As it was pointed out in https://github.com/llvm/llvm-project/pull/80724, we should not be checking `getLangOpts().Bool` when determining something related to logical operators, since it only indicates that bool keyword is present, not which semantic logical operators have. As a side effect a missing `-Wpointer-bool-conversion` in OpenCL C was restored since like C23, OpenCL C has bool keyword but logical operators still return int. Added: Modified: clang/lib/Sema/SemaChecking.cpp clang/test/SemaOpenCL/operators.cl Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index c775ff207ba837..f8b73c7923baba 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -16129,10 +16129,10 @@ static void CheckConditionalOperator(Sema &S, AbstractConditionalOperator *E, /// Check conversion of given expression to boolean. /// Input argument E is a logical expression. static void CheckBoolLikeConversion(Sema &S, Expr *E, SourceLocation CC) { - // While C23 does have bool as a keyword, we still need to run the bool-like - // conversion checks as bools are still not used as the return type from - // "boolean" operators or as the input type for conditional operators. - if (S.getLangOpts().Bool && !S.getLangOpts().C23) + // Run the bool-like conversion checks only for C since there bools are + // still not used as the return type from "boolean" operators or as the input + // type for conditional operators. + if (S.getLangOpts().CPlusPlus) return; if (E->IgnoreParenImpCasts()->getType()->isAtomicType()) return; diff --git a/clang/test/SemaOpenCL/operators.cl b/clang/test/SemaOpenCL/operators.cl index cf359acd5acb97..76a7692a7105c8 100644 --- a/clang/test/SemaOpenCL/operators.cl +++ b/clang/test/SemaOpenCL/operators.cl @@ -118,6 +118,6 @@ kernel void pointer_ops(){ bool b = !p; b = p==0; int i; - b = !&i; + b = !&i; // expected-warning {{address of 'i' will always evaluate to 'true'}} b = &i==(int *)1; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits