[clang] [clang-tools-extra] [llvm] [mlir] [clang][lldb][mlir] Fix some identical sub-expressions warnings (NFC) (PR #95715)
Shivam Gupta via cfe-commits
cfe-commits at lists.llvm.org
Sun Jun 16 11:15:02 PDT 2024
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.tkg at 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
More information about the cfe-commits
mailing list