https://github.com/xgupta created https://github.com/llvm/llvm-project/pull/95715
This is reported in https://pvs-studio.com/en/blog/posts/cpp/1126/, fragment N4-8 V501 There are identical sub-expressions 'FirstStmt->getStmtClass()' to the left and to the right of the '!=' operator. ASTUtils.cpp:99 V501 There are identical sub-expressions to the left and to the right of the '!=' operator: Fn1->isVariadic() != Fn1->isVariadic(). SemaOverload.cpp:10190 V501 There are identical sub-expressions to the left and to the right of the '<' operator: G1->Rank < G1->Rank. SCCIterator.h:285 V501 There are identical sub-expressions 'slice1.getMixedOffsets().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:581 V501 There are identical sub-expressions 'slice1.getMixedSizes().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:583 V501 There are identical sub-expressions 'slice1.getMixedStrides().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:585 V501 There are identical sub-expressions 'slice1.getMixedOffsets().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:646 V501 There are identical sub-expressions 'slice1.getMixedSizes().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:648 V501 There are identical sub-expressions 'slice1.getMixedStrides().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:650 V501 There are identical sub-expressions 'EltRange.getEnd() >= Range.getEnd()' to the left and to the right of the '||' operator. HTMLLogger.cpp:421 V501 There are identical sub-expressions 'SrcExpr.get()->containsErrors()' to the left and to the right of the '||' operator. SemaCast.cpp:2938 V501 There are identical sub-expressions 'ND->getDeclContext()' to the left and to the right of the '!=' operator. SemaDeclCXX.cpp:4391 V501 There are identical sub-expressions 'DepType != OMPC_DOACROSS_source' to the left and to the right of the '&&' operator. SemaOpenMP.cpp:24348 V501 There are identical sub-expressions '!OldMethod->isStatic()' to the left and to the right of the '&&' operator. SemaOverload.cpp:1425 V501 There are identical sub-expressions 'lldb::eTypeClassUnion' to the left and to the right of the '|' operator. JSONUtils.cpp:139 V501 There are identical sub-expressions to the left and to the right of the '&&' operator: !BFI &&!BFI. JumpThreading.cpp:2531 V501 There are identical sub-expressions 'BI->isConditional()' to the left and to the right of the '&&' operator. VPlanHCFGBuilder.cpp:401 V501 There are identical sub-expressions to the left and to the right of the '==' operator: getNumRows() == getNumRows(). Simplex.cpp:108 >From f80cc3b6ee218e954d68e867637c38211f344d83 Mon Sep 17 00:00:00 2001 From: Shivam Gupta <shivam98....@gmail.com> Date: Sun, 16 Jun 2024 23:39:47 +0530 Subject: [PATCH] [clang][lldb][mlir] Fix some identical sub-expressions warnings (NFC) This is actually reported in https://pvs-studio.com/en/blog/posts/cpp/1126/, fragment N4-8 V501 There are identical sub-expressions 'FirstStmt->getStmtClass()' to the left and to the right of the '!=' operator. ASTUtils.cpp:99 V501 There are identical sub-expressions to the left and to the right of the '!=' operator: Fn1->isVariadic() != Fn1->isVariadic(). SemaOverload.cpp:10190 V501 There are identical sub-expressions to the left and to the right of the '<' operator: G1->Rank < G1->Rank. SCCIterator.h:285 V501 There are identical sub-expressions 'slice1.getMixedOffsets().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:581 V501 There are identical sub-expressions 'slice1.getMixedSizes().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:583 V501 There are identical sub-expressions 'slice1.getMixedStrides().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:585 V501 There are identical sub-expressions 'slice1.getMixedOffsets().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:646 V501 There are identical sub-expressions 'slice1.getMixedSizes().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:648 V501 There are identical sub-expressions 'slice1.getMixedStrides().size()' to the left and to the right of the '==' operator. ValueBoundsOpInterface.cpp:650 V501 There are identical sub-expressions 'EltRange.getEnd() >= Range.getEnd()' to the left and to the right of the '||' operator. HTMLLogger.cpp:421 V501 There are identical sub-expressions 'SrcExpr.get()->containsErrors()' to the left and to the right of the '||' operator. SemaCast.cpp:2938 V501 There are identical sub-expressions 'ND->getDeclContext()' to the left and to the right of the '!=' operator. SemaDeclCXX.cpp:4391 V501 There are identical sub-expressions 'DepType != OMPC_DOACROSS_source' to the left and to the right of the '&&' operator. SemaOpenMP.cpp:24348 V501 There are identical sub-expressions '!OldMethod->isStatic()' to the left and to the right of the '&&' operator. SemaOverload.cpp:1425 V501 There are identical sub-expressions 'lldb::eTypeClassUnion' to the left and to the right of the '|' operator. JSONUtils.cpp:139 V501 There are identical sub-expressions to the left and to the right of the '&&' operator: !BFI &&!BFI. JumpThreading.cpp:2531 V501 There are identical sub-expressions 'BI->isConditional()' to the left and to the right of the '&&' operator. VPlanHCFGBuilder.cpp:401 V501 There are identical sub-expressions to the left and to the right of the '==' operator: getNumRows() == getNumRows(). Simplex.cpp:108 --- clang-tools-extra/clang-tidy/utils/ASTUtils.cpp | 2 +- clang/lib/Analysis/FlowSensitive/HTMLLogger.cpp | 7 +++---- clang/lib/Sema/SemaCast.cpp | 3 +-- clang/lib/Sema/SemaDeclCXX.cpp | 2 +- clang/lib/Sema/SemaOpenMP.cpp | 3 +-- llvm/lib/Transforms/Scalar/JumpThreading.cpp | 2 +- llvm/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp | 2 +- mlir/lib/Analysis/Presburger/Simplex.cpp | 3 ++- mlir/lib/Interfaces/ValueBoundsOpInterface.cpp | 12 ++++++------ 9 files changed, 17 insertions(+), 19 deletions(-) diff --git a/clang-tools-extra/clang-tidy/utils/ASTUtils.cpp b/clang-tools-extra/clang-tidy/utils/ASTUtils.cpp index fd5dadc9b01db..0cdc7d08abc99 100644 --- a/clang-tools-extra/clang-tidy/utils/ASTUtils.cpp +++ b/clang-tools-extra/clang-tidy/utils/ASTUtils.cpp @@ -96,7 +96,7 @@ bool areStatementsIdentical(const Stmt *FirstStmt, const Stmt *SecondStmt, if (FirstStmt == SecondStmt) return true; - if (FirstStmt->getStmtClass() != FirstStmt->getStmtClass()) + if (FirstStmt->getStmtClass() != SecondStmt->getStmtClass()) return false; if (isa<Expr>(FirstStmt) && isa<Expr>(SecondStmt)) { diff --git a/clang/lib/Analysis/FlowSensitive/HTMLLogger.cpp b/clang/lib/Analysis/FlowSensitive/HTMLLogger.cpp index a36cb41a63dfb..323f9698dc2aa 100644 --- a/clang/lib/Analysis/FlowSensitive/HTMLLogger.cpp +++ b/clang/lib/Analysis/FlowSensitive/HTMLLogger.cpp @@ -430,11 +430,10 @@ class HTMLLogger : public Logger { AST.getSourceManager(), AST.getLangOpts()); if (EltRange.isInvalid()) continue; - if (EltRange.getBegin() < Range.getBegin() || - EltRange.getEnd() >= Range.getEnd() || - EltRange.getEnd() < Range.getBegin() || - EltRange.getEnd() >= Range.getEnd()) + if (EltRange.getEnd() <= Range.getBegin() || + EltRange.getBegin() >= Range.getEnd()) continue; + unsigned Off = EltRange.getBegin().getRawEncoding() - Range.getBegin().getRawEncoding(); unsigned Len = EltRange.getEnd().getRawEncoding() - diff --git a/clang/lib/Sema/SemaCast.cpp b/clang/lib/Sema/SemaCast.cpp index f03dcf05411df..bfdb8896f81c3 100644 --- a/clang/lib/Sema/SemaCast.cpp +++ b/clang/lib/Sema/SemaCast.cpp @@ -2947,8 +2947,7 @@ void CastOperation::CheckCStyleCast() { if (Self.getASTContext().isDependenceAllowed() && (DestType->isDependentType() || SrcExpr.get()->isTypeDependent() || SrcExpr.get()->isValueDependent())) { - assert((DestType->containsErrors() || SrcExpr.get()->containsErrors() || - SrcExpr.get()->containsErrors()) && + assert((DestType->containsErrors() || SrcExpr.get()->containsErrors()) && "should only occur in error-recovery path."); assert(Kind == CK_Dependent); return; diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 37f0df2a6a27d..27c16cebde419 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -4368,7 +4368,7 @@ bool Sema::DiagRedefinedPlaceholderFieldDecl(SourceLocation Loc, Diag(Loc, diag::err_using_placeholder_variable) << Name; for (DeclContextLookupResult::iterator It = Found; It != Result.end(); It++) { const NamedDecl *ND = *It; - if (ND->getDeclContext() != ND->getDeclContext()) + if (ND->getDeclContext() != ClassDecl->getDeclContext()) break; if (isa<FieldDecl, IndirectFieldDecl>(ND) && ND->isPlaceholderVar(getLangOpts())) diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 5c759aedf9798..0878a2f635c36 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -24771,8 +24771,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPDoacrossClause( if (DSAStack->getCurrentDirective() == OMPD_ordered && DepType != OMPC_DOACROSS_source && DepType != OMPC_DOACROSS_sink && DepType != OMPC_DOACROSS_sink_omp_cur_iteration && - DepType != OMPC_DOACROSS_source_omp_cur_iteration && - DepType != OMPC_DOACROSS_source) { + DepType != OMPC_DOACROSS_source_omp_cur_iteration) { Diag(DepLoc, diag::err_omp_unexpected_clause_value) << "'source' or 'sink'" << getOpenMPClauseName(OMPC_doacross); return nullptr; diff --git a/llvm/lib/Transforms/Scalar/JumpThreading.cpp b/llvm/lib/Transforms/Scalar/JumpThreading.cpp index 1aef2800e9846..d9c761e2b08ec 100644 --- a/llvm/lib/Transforms/Scalar/JumpThreading.cpp +++ b/llvm/lib/Transforms/Scalar/JumpThreading.cpp @@ -2533,7 +2533,7 @@ void JumpThreadingPass::updateBlockFreqAndEdgeWeight(BasicBlock *PredBB, BlockFrequencyInfo *BFI, BranchProbabilityInfo *BPI, bool HasProfile) { - assert(((BFI && BPI) || (!BFI && !BFI)) && + assert(((BFI && BPI) || (!BFI && !BPI)) && "Both BFI & BPI should either be set or unset"); if (!BFI) { diff --git a/llvm/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp b/llvm/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp index b57ff2840a729..a1c6521a3f361 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp @@ -397,7 +397,7 @@ void PlainCFGBuilder::buildPlainCFG() { : static_cast<VPBlockBase *>(Successor)); continue; } - assert(BI->isConditional() && NumSuccs == 2 && BI->isConditional() && + assert(BI->isConditional() && NumSuccs == 2 && "block must have conditional branch with 2 successors"); // Look up the branch condition to get the corresponding VPValue // representing the condition bit in VPlan (which may be in another VPBB). diff --git a/mlir/lib/Analysis/Presburger/Simplex.cpp b/mlir/lib/Analysis/Presburger/Simplex.cpp index 2cdd79d42732d..d6c920e835be1 100644 --- a/mlir/lib/Analysis/Presburger/Simplex.cpp +++ b/mlir/lib/Analysis/Presburger/Simplex.cpp @@ -104,8 +104,9 @@ Simplex::Unknown &SimplexBase::unknownFromRow(unsigned row) { unsigned SimplexBase::addZeroRow(bool makeRestricted) { // Resize the tableau to accommodate the extra row. + unsigned oldNumRows = getNumRows(); unsigned newRow = tableau.appendExtraRow(); - assert(getNumRows() == getNumRows() && "Inconsistent tableau size"); + assert(getNumRows() == oldNumRows + 1 && "Inconsistent tableau size"); rowUnknown.push_back(~con.size()); con.emplace_back(Orientation::Row, makeRestricted, newRow); undoLog.push_back(UndoLogEntry::RemoveLastConstraint); diff --git a/mlir/lib/Interfaces/ValueBoundsOpInterface.cpp b/mlir/lib/Interfaces/ValueBoundsOpInterface.cpp index 6420c192b257d..4b9f026832044 100644 --- a/mlir/lib/Interfaces/ValueBoundsOpInterface.cpp +++ b/mlir/lib/Interfaces/ValueBoundsOpInterface.cpp @@ -778,11 +778,11 @@ FailureOr<bool> ValueBoundsConstraintSet::areOverlappingSlices(MLIRContext *ctx, HyperrectangularSlice slice1, HyperrectangularSlice slice2) { - assert(slice1.getMixedOffsets().size() == slice1.getMixedOffsets().size() && + assert(slice1.getMixedOffsets().size() == slice2.getMixedOffsets().size() && "expected slices of same rank"); - assert(slice1.getMixedSizes().size() == slice1.getMixedSizes().size() && + assert(slice1.getMixedSizes().size() == slice2.getMixedSizes().size() && "expected slices of same rank"); - assert(slice1.getMixedStrides().size() == slice1.getMixedStrides().size() && + assert(slice1.getMixedStrides().size() == slice2.getMixedStrides().size() && "expected slices of same rank"); Builder b(ctx); @@ -843,11 +843,11 @@ FailureOr<bool> ValueBoundsConstraintSet::areEquivalentSlices(MLIRContext *ctx, HyperrectangularSlice slice1, HyperrectangularSlice slice2) { - assert(slice1.getMixedOffsets().size() == slice1.getMixedOffsets().size() && + assert(slice1.getMixedOffsets().size() == slice2.getMixedOffsets().size() && "expected slices of same rank"); - assert(slice1.getMixedSizes().size() == slice1.getMixedSizes().size() && + assert(slice1.getMixedSizes().size() == slice2.getMixedSizes().size() && "expected slices of same rank"); - assert(slice1.getMixedStrides().size() == slice1.getMixedStrides().size() && + assert(slice1.getMixedStrides().size() == slice2.getMixedStrides().size() && "expected slices of same rank"); // The two slices are equivalent if all of their offsets, sizes and strides _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits