Author: Timm Bäder Date: 2022-08-05T06:45:32+02:00 New Revision: 8b74074731eeb3ff673bd7da4cd963efe78f8db6
URL: https://github.com/llvm/llvm-project/commit/8b74074731eeb3ff673bd7da4cd963efe78f8db6 DIFF: https://github.com/llvm/llvm-project/commit/8b74074731eeb3ff673bd7da4cd963efe78f8db6.diff LOG: [clang][sema] Fix collectConjunctionTerms() Consider: A == 5 && A != 5 IfA is 5, the old collectConjunctionTerms() would call itself again for the LHS (which it ignores), then the RHS (which it also ignores) and then just return without ever adding anything to the Terms array. Differential Revision: https://reviews.llvm.org/D131070 Added: Modified: clang/docs/ReleaseNotes.rst clang/lib/Sema/SemaTemplate.cpp Removed: ################################################################################ diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index b9729a6a047f..c9f65b271413 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -60,6 +60,8 @@ Bug Fixes - No longer assert/miscompile when trying to make a vectorized ``_BitInt`` type using the ``ext_vector_type`` attribute (the ``vector_size`` attribute was already properly diagnosing this case). +- Fix clang not properly diagnosing the failing subexpression when chained + binary operators are used in a ``static_assert`` expression. Improvements to Clang's diagnostics ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index ec1d5421ff51..a9ed3ef6400c 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -3585,9 +3585,8 @@ static void collectConjunctionTerms(Expr *Clause, if (BinOp->getOpcode() == BO_LAnd) { collectConjunctionTerms(BinOp->getLHS(), Terms); collectConjunctionTerms(BinOp->getRHS(), Terms); + return; } - - return; } Terms.push_back(Clause); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits