[clang] [NFC] [analyzer] Factor out SymbolManager::get<*> (PR #121781)
Arseniy Zaostrovnykh via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 6 07:57:53 PST 2025
https://github.com/necto updated https://github.com/llvm/llvm-project/pull/121781
>From 08b838adf275f1e0eaf2ab3e3d4b2b6d89bf4ed6 Mon Sep 17 00:00:00 2001
From: Arseniy Zaostrovnykh <necto.ne at gmail.com>
Date: Mon, 6 Jan 2025 14:37:08 +0100
Subject: [PATCH 01/11] [NFC] Replace getRegionValueSymbol with
get<SymbolRegionValue>
This should generalize to all get<symbol> methods handled in subsequent commits
---
.../Core/PathSensitive/SymbolManager.h | 17 +++++++++++++++--
clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | 2 +-
clang/lib/StaticAnalyzer/Core/SymbolManager.cpp | 14 --------------
3 files changed, 16 insertions(+), 17 deletions(-)
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index c530dff495238b..d1c6cf98358046 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -525,8 +525,8 @@ class SymbolManager {
static bool canSymbolicate(QualType T);
- /// Make a unique symbol for MemRegion R according to its kind.
- const SymbolRegionValue* getRegionValueSymbol(const TypedValueRegion* R);
+ template <typename T, typename... Args>
+ const T *get(Args &&...args);
const SymbolConjured* conjureSymbol(const Stmt *E,
const LocationContext *LCtx,
@@ -707,6 +707,19 @@ class SymbolVisitor {
virtual bool VisitMemRegion(const MemRegion *) { return true; }
};
+template <typename T, typename... Args>
+const T *SymbolManager::get(Args &&...args) {
+ llvm::FoldingSetNodeID profile;
+ T::Profile(profile, std::forward<Args>(args)...);
+ void *InsertPos;
+ SymExpr *SD = DataSet.FindNodeOrInsertPos(profile, InsertPos);
+ if (!SD) {
+ SD = Alloc.make<T>(std::forward<Args>(args)...);
+ DataSet.InsertNode(SD, InsertPos);
+ }
+ return cast<T>(SD);
+}
+
} // namespace ento
} // namespace clang
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index 2b855801863818..d20d7ea3eff6cd 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -143,7 +143,7 @@ SValBuilder::getRegionValueSymbolVal(const TypedValueRegion *region) {
if (!SymbolManager::canSymbolicate(T))
return UnknownVal();
- SymbolRef sym = SymMgr.getRegionValueSymbol(region);
+ SymbolRef sym = SymMgr.get<SymbolRegionValue>(region);
if (Loc::isLocType(T))
return loc::MemRegionVal(MemMgr.getSymbolicRegion(sym));
diff --git a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
index 738b6a175ce6de..7caedb678218fd 100644
--- a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
@@ -163,20 +163,6 @@ void SymExpr::symbol_iterator::expand() {
llvm_unreachable("unhandled expansion case");
}
-const SymbolRegionValue*
-SymbolManager::getRegionValueSymbol(const TypedValueRegion* R) {
- llvm::FoldingSetNodeID profile;
- SymbolRegionValue::Profile(profile, R);
- void *InsertPos;
- SymExpr *SD = DataSet.FindNodeOrInsertPos(profile, InsertPos);
- if (!SD) {
- SD = Alloc.make<SymbolRegionValue>(R);
- DataSet.InsertNode(SD, InsertPos);
- }
-
- return cast<SymbolRegionValue>(SD);
-}
-
const SymbolConjured* SymbolManager::conjureSymbol(const Stmt *E,
const LocationContext *LCtx,
QualType T,
>From 5213d1b9f9723d90397dbba1969ebb4d04119fe7 Mon Sep 17 00:00:00 2001
From: Arseniy Zaostrovnykh <necto.ne at gmail.com>
Date: Mon, 6 Jan 2025 14:44:20 +0100
Subject: [PATCH 02/11] [NFC] Redefine conjureSymbol via get<SymbolConjured>
---
.../Core/PathSensitive/SymbolManager.h | 12 +++++++-----
clang/lib/StaticAnalyzer/Core/SymbolManager.cpp | 17 -----------------
2 files changed, 7 insertions(+), 22 deletions(-)
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index d1c6cf98358046..2acf40616ade48 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -113,10 +113,10 @@ class SymbolConjured : public SymbolData {
void dumpToStream(raw_ostream &os) const override;
- static void Profile(llvm::FoldingSetNodeID& profile, const Stmt *S,
- QualType T, unsigned Count, const LocationContext *LCtx,
+ static void Profile(llvm::FoldingSetNodeID &profile, const Stmt *S,
+ const LocationContext *LCtx, QualType T, unsigned Count,
const void *SymbolTag) {
- profile.AddInteger((unsigned) SymbolConjuredKind);
+ profile.AddInteger((unsigned)SymbolConjuredKind);
profile.AddPointer(S);
profile.AddPointer(LCtx);
profile.Add(T);
@@ -125,7 +125,7 @@ class SymbolConjured : public SymbolData {
}
void Profile(llvm::FoldingSetNodeID& profile) override {
- Profile(profile, S, T, Count, LCtx, SymbolTag);
+ Profile(profile, S, LCtx, T, Count, SymbolTag);
}
// Implement isa<T> support.
@@ -532,7 +532,9 @@ class SymbolManager {
const LocationContext *LCtx,
QualType T,
unsigned VisitCount,
- const void *SymbolTag = nullptr);
+ const void *SymbolTag = nullptr) {
+ return get<SymbolConjured>(E, LCtx, T, VisitCount, SymbolTag);
+ }
const SymbolConjured* conjureSymbol(const Expr *E,
const LocationContext *LCtx,
diff --git a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
index 7caedb678218fd..cc666ef85f9c94 100644
--- a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
@@ -163,23 +163,6 @@ void SymExpr::symbol_iterator::expand() {
llvm_unreachable("unhandled expansion case");
}
-const SymbolConjured* SymbolManager::conjureSymbol(const Stmt *E,
- const LocationContext *LCtx,
- QualType T,
- unsigned Count,
- const void *SymbolTag) {
- llvm::FoldingSetNodeID profile;
- SymbolConjured::Profile(profile, E, T, Count, LCtx, SymbolTag);
- void *InsertPos;
- SymExpr *SD = DataSet.FindNodeOrInsertPos(profile, InsertPos);
- if (!SD) {
- SD = Alloc.make<SymbolConjured>(E, LCtx, T, Count, SymbolTag);
- DataSet.InsertNode(SD, InsertPos);
- }
-
- return cast<SymbolConjured>(SD);
-}
-
const SymbolDerived*
SymbolManager::getDerivedSymbol(SymbolRef parentSymbol,
const TypedValueRegion *R) {
>From cd94ceda7afe92ef18170bedeea0a59cb5ca0d6d Mon Sep 17 00:00:00 2001
From: Arseniy Zaostrovnykh <necto.ne at gmail.com>
Date: Mon, 6 Jan 2025 14:48:00 +0100
Subject: [PATCH 03/11] [NFC] Replace getDerivedSymbol with get<SymbolDerived>
---
.../Core/PathSensitive/SymbolManager.h | 3 ---
clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | 2 +-
clang/lib/StaticAnalyzer/Core/SymbolManager.cpp | 15 ---------------
3 files changed, 1 insertion(+), 19 deletions(-)
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index 2acf40616ade48..86babeb893223a 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -543,9 +543,6 @@ class SymbolManager {
return conjureSymbol(E, LCtx, E->getType(), VisitCount, SymbolTag);
}
- const SymbolDerived *getDerivedSymbol(SymbolRef parentSymbol,
- const TypedValueRegion *R);
-
const SymbolExtent *getExtentSymbol(const SubRegion *R);
/// Creates a metadata symbol associated with a specific region.
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index d20d7ea3eff6cd..34b32e1b2225d4 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -264,7 +264,7 @@ SValBuilder::getDerivedRegionValueSymbolVal(SymbolRef parentSymbol,
if (!SymbolManager::canSymbolicate(T))
return UnknownVal();
- SymbolRef sym = SymMgr.getDerivedSymbol(parentSymbol, region);
+ SymbolRef sym = SymMgr.get<SymbolDerived>(parentSymbol, region);
if (Loc::isLocType(T))
return loc::MemRegionVal(MemMgr.getSymbolicRegion(sym));
diff --git a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
index cc666ef85f9c94..7fc237cc8d0c90 100644
--- a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
@@ -163,21 +163,6 @@ void SymExpr::symbol_iterator::expand() {
llvm_unreachable("unhandled expansion case");
}
-const SymbolDerived*
-SymbolManager::getDerivedSymbol(SymbolRef parentSymbol,
- const TypedValueRegion *R) {
- llvm::FoldingSetNodeID profile;
- SymbolDerived::Profile(profile, parentSymbol, R);
- void *InsertPos;
- SymExpr *SD = DataSet.FindNodeOrInsertPos(profile, InsertPos);
- if (!SD) {
- SD = Alloc.make<SymbolDerived>(parentSymbol, R);
- DataSet.InsertNode(SD, InsertPos);
- }
-
- return cast<SymbolDerived>(SD);
-}
-
const SymbolExtent*
SymbolManager::getExtentSymbol(const SubRegion *R) {
llvm::FoldingSetNodeID profile;
>From 605ee807879a73009a09fdf31d76d79a8209ae66 Mon Sep 17 00:00:00 2001
From: Arseniy Zaostrovnykh <necto.ne at gmail.com>
Date: Mon, 6 Jan 2025 14:50:20 +0100
Subject: [PATCH 04/11] [NFC] Replace getExtentSymbol with get<SymbolExtent>
---
.../Core/PathSensitive/SymbolManager.h | 2 --
clang/lib/StaticAnalyzer/Core/MemRegion.cpp | 6 +++---
clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | 2 +-
clang/lib/StaticAnalyzer/Core/SymbolManager.cpp | 14 --------------
4 files changed, 4 insertions(+), 20 deletions(-)
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index 86babeb893223a..180f25ae74b093 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -543,8 +543,6 @@ class SymbolManager {
return conjureSymbol(E, LCtx, E->getType(), VisitCount, SymbolTag);
}
- const SymbolExtent *getExtentSymbol(const SubRegion *R);
-
/// Creates a metadata symbol associated with a specific region.
///
/// VisitCount can be used to differentiate regions corresponding to
diff --git a/clang/lib/StaticAnalyzer/Core/MemRegion.cpp b/clang/lib/StaticAnalyzer/Core/MemRegion.cpp
index 559c80634c12e5..326cc7fd451ee6 100644
--- a/clang/lib/StaticAnalyzer/Core/MemRegion.cpp
+++ b/clang/lib/StaticAnalyzer/Core/MemRegion.cpp
@@ -811,7 +811,7 @@ DefinedOrUnknownSVal MemRegionManager::getStaticSize(const MemRegion *MR,
switch (SR->getKind()) {
case MemRegion::AllocaRegionKind:
case MemRegion::SymbolicRegionKind:
- return nonloc::SymbolVal(SymMgr.getExtentSymbol(SR));
+ return nonloc::SymbolVal(SymMgr.get<SymbolExtent>(SR));
case MemRegion::StringRegionKind:
return SVB.makeIntVal(
cast<StringRegion>(SR)->getStringLiteral()->getByteLength() + 1,
@@ -829,7 +829,7 @@ DefinedOrUnknownSVal MemRegionManager::getStaticSize(const MemRegion *MR,
case MemRegion::ObjCStringRegionKind: {
QualType Ty = cast<TypedValueRegion>(SR)->getDesugaredValueType(Ctx);
if (isa<VariableArrayType>(Ty))
- return nonloc::SymbolVal(SymMgr.getExtentSymbol(SR));
+ return nonloc::SymbolVal(SymMgr.get<SymbolExtent>(SR));
if (Ty->isIncompleteType())
return UnknownVal();
@@ -897,7 +897,7 @@ DefinedOrUnknownSVal MemRegionManager::getStaticSize(const MemRegion *MR,
case MemRegion::BlockDataRegionKind:
case MemRegion::BlockCodeRegionKind:
case MemRegion::FunctionCodeRegionKind:
- return nonloc::SymbolVal(SymMgr.getExtentSymbol(SR));
+ return nonloc::SymbolVal(SymMgr.get<SymbolExtent>(SR));
default:
llvm_unreachable("Unhandled region");
}
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index 34b32e1b2225d4..7741a3bbd50083 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -724,7 +724,7 @@ class EvalCastVisitor : public SValVisitor<EvalCastVisitor, SVal> {
// because there are no generic region address metadata
// symbols to use, only content metadata.
return nonloc::SymbolVal(
- VB.getSymbolManager().getExtentSymbol(FTR));
+ VB.getSymbolManager().get<SymbolExtent>(FTR));
if (const SymbolicRegion *SymR = R->getSymbolicBase()) {
SymbolRef Sym = SymR->getSymbol();
diff --git a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
index 7fc237cc8d0c90..221ab58992fd8a 100644
--- a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
@@ -163,20 +163,6 @@ void SymExpr::symbol_iterator::expand() {
llvm_unreachable("unhandled expansion case");
}
-const SymbolExtent*
-SymbolManager::getExtentSymbol(const SubRegion *R) {
- llvm::FoldingSetNodeID profile;
- SymbolExtent::Profile(profile, R);
- void *InsertPos;
- SymExpr *SD = DataSet.FindNodeOrInsertPos(profile, InsertPos);
- if (!SD) {
- SD = Alloc.make<SymbolExtent>(R);
- DataSet.InsertNode(SD, InsertPos);
- }
-
- return cast<SymbolExtent>(SD);
-}
-
const SymbolMetadata *
SymbolManager::getMetadataSymbol(const MemRegion* R, const Stmt *S, QualType T,
const LocationContext *LCtx,
>From 883a6e3f3f579d605c80de8a701bbafcc990d109 Mon Sep 17 00:00:00 2001
From: Arseniy Zaostrovnykh <necto.ne at gmail.com>
Date: Mon, 6 Jan 2025 14:56:05 +0100
Subject: [PATCH 05/11] [NFC] Replace getMetadataSymbol with
get<SymbolMetadata>
---
.../Core/PathSensitive/SymbolManager.h | 12 ++----------
clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | 2 +-
clang/lib/StaticAnalyzer/Core/SymbolManager.cpp | 16 ----------------
3 files changed, 3 insertions(+), 27 deletions(-)
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index 180f25ae74b093..dc48b90099f29e 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -224,6 +224,8 @@ class SymbolMetadata : public SymbolData {
const Stmt *S;
QualType T;
const LocationContext *LCtx;
+ /// Count can be used to differentiate regions corresponding to
+ /// different loop iterations, thus, making the symbol path-dependent.
unsigned Count;
const void *Tag;
@@ -543,16 +545,6 @@ class SymbolManager {
return conjureSymbol(E, LCtx, E->getType(), VisitCount, SymbolTag);
}
- /// Creates a metadata symbol associated with a specific region.
- ///
- /// VisitCount can be used to differentiate regions corresponding to
- /// different loop iterations, thus, making the symbol path-dependent.
- const SymbolMetadata *getMetadataSymbol(const MemRegion *R, const Stmt *S,
- QualType T,
- const LocationContext *LCtx,
- unsigned VisitCount,
- const void *SymbolTag = nullptr);
-
const SymbolCast* getCastSymbol(const SymExpr *Operand,
QualType From, QualType To);
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index 7741a3bbd50083..dbfba049ffca21 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -245,7 +245,7 @@ DefinedSVal SValBuilder::getMetadataSymbolVal(const void *symbolTag,
assert(SymbolManager::canSymbolicate(type) && "Invalid metadata symbol type");
SymbolRef sym =
- SymMgr.getMetadataSymbol(region, expr, type, LCtx, count, symbolTag);
+ SymMgr.get<SymbolMetadata>(region, expr, type, LCtx, count, symbolTag);
if (Loc::isLocType(type))
return loc::MemRegionVal(MemMgr.getSymbolicRegion(sym));
diff --git a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
index 221ab58992fd8a..94e16831311efb 100644
--- a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
@@ -163,22 +163,6 @@ void SymExpr::symbol_iterator::expand() {
llvm_unreachable("unhandled expansion case");
}
-const SymbolMetadata *
-SymbolManager::getMetadataSymbol(const MemRegion* R, const Stmt *S, QualType T,
- const LocationContext *LCtx,
- unsigned Count, const void *SymbolTag) {
- llvm::FoldingSetNodeID profile;
- SymbolMetadata::Profile(profile, R, S, T, LCtx, Count, SymbolTag);
- void *InsertPos;
- SymExpr *SD = DataSet.FindNodeOrInsertPos(profile, InsertPos);
- if (!SD) {
- SD = Alloc.make<SymbolMetadata>(R, S, T, LCtx, Count, SymbolTag);
- DataSet.InsertNode(SD, InsertPos);
- }
-
- return cast<SymbolMetadata>(SD);
-}
-
const SymbolCast*
SymbolManager::getCastSymbol(const SymExpr *Op,
QualType From, QualType To) {
>From dd41465d0138da364ddce0a89fca1d99d12b605a Mon Sep 17 00:00:00 2001
From: Arseniy Zaostrovnykh <necto.ne at gmail.com>
Date: Mon, 6 Jan 2025 14:59:12 +0100
Subject: [PATCH 06/11] [NFC] Replace getCastSybol with get<SymbolCast>
---
.../Core/PathSensitive/SymbolManager.h | 3 ---
clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | 2 +-
clang/lib/StaticAnalyzer/Core/SymbolManager.cpp | 15 ---------------
3 files changed, 1 insertion(+), 19 deletions(-)
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index dc48b90099f29e..6a7182a66773fa 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -545,9 +545,6 @@ class SymbolManager {
return conjureSymbol(E, LCtx, E->getType(), VisitCount, SymbolTag);
}
- const SymbolCast* getCastSymbol(const SymExpr *Operand,
- QualType From, QualType To);
-
const SymIntExpr *getSymIntExpr(const SymExpr *lhs, BinaryOperator::Opcode op,
APSIntPtr rhs, QualType t);
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index dbfba049ffca21..c6d2fc6b3e575a 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -111,7 +111,7 @@ nonloc::SymbolVal SValBuilder::makeNonLoc(const SymExpr *operand,
assert(!Loc::isLocType(toTy));
if (fromTy == toTy)
return nonloc::SymbolVal(operand);
- return nonloc::SymbolVal(SymMgr.getCastSymbol(operand, fromTy, toTy));
+ return nonloc::SymbolVal(SymMgr.get<SymbolCast>(operand, fromTy, toTy));
}
SVal SValBuilder::convertToArrayIndex(SVal val) {
diff --git a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
index 94e16831311efb..9bab9aefaf90c3 100644
--- a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
@@ -163,21 +163,6 @@ void SymExpr::symbol_iterator::expand() {
llvm_unreachable("unhandled expansion case");
}
-const SymbolCast*
-SymbolManager::getCastSymbol(const SymExpr *Op,
- QualType From, QualType To) {
- llvm::FoldingSetNodeID ID;
- SymbolCast::Profile(ID, Op, From, To);
- void *InsertPos;
- SymExpr *data = DataSet.FindNodeOrInsertPos(ID, InsertPos);
- if (!data) {
- data = Alloc.make<SymbolCast>(Op, From, To);
- DataSet.InsertNode(data, InsertPos);
- }
-
- return cast<SymbolCast>(data);
-}
-
const SymIntExpr *SymbolManager::getSymIntExpr(const SymExpr *lhs,
BinaryOperator::Opcode op,
APSIntPtr v, QualType t) {
>From 71d05bb4c1845104756fd5eb01190a4229e3610b Mon Sep 17 00:00:00 2001
From: Arseniy Zaostrovnykh <necto.ne at gmail.com>
Date: Mon, 6 Jan 2025 15:10:09 +0100
Subject: [PATCH 07/11] [NFC] Replace getSymIntExpr with get<SymIntExpr>
---
.../Core/PathSensitive/SymbolManager.h | 8 --------
clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | 2 +-
.../StaticAnalyzer/Core/SimpleSValBuilder.cpp | 2 +-
clang/lib/StaticAnalyzer/Core/SymbolManager.cpp | 16 ----------------
4 files changed, 2 insertions(+), 26 deletions(-)
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index 6a7182a66773fa..b584a34d7cf0f4 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -545,14 +545,6 @@ class SymbolManager {
return conjureSymbol(E, LCtx, E->getType(), VisitCount, SymbolTag);
}
- const SymIntExpr *getSymIntExpr(const SymExpr *lhs, BinaryOperator::Opcode op,
- APSIntPtr rhs, QualType t);
-
- const SymIntExpr *getSymIntExpr(const SymExpr &lhs, BinaryOperator::Opcode op,
- APSIntPtr rhs, QualType t) {
- return getSymIntExpr(&lhs, op, rhs, t);
- }
-
const IntSymExpr *getIntSymExpr(APSIntPtr lhs, BinaryOperator::Opcode op,
const SymExpr *rhs, QualType t);
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index c6d2fc6b3e575a..eac9b930d2400f 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -79,7 +79,7 @@ nonloc::SymbolVal SValBuilder::makeNonLoc(const SymExpr *lhs,
APSIntPtr rhs, QualType type) {
assert(lhs);
assert(!Loc::isLocType(type));
- return nonloc::SymbolVal(SymMgr.getSymIntExpr(lhs, op, rhs, type));
+ return nonloc::SymbolVal(SymMgr.get<SymIntExpr>(lhs, op, rhs, type));
}
nonloc::SymbolVal SValBuilder::makeNonLoc(APSIntPtr lhs,
diff --git a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
index 455621739f6935..d77050e61c1898 100644
--- a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
@@ -351,7 +351,7 @@ static NonLoc doRearrangeUnchecked(ProgramStateRef State,
}
APSIntPtr PersistentResultInt = BV.getValue(ResultInt);
return nonloc::SymbolVal(
- SymMgr.getSymIntExpr(ResultSym, ResultOp, PersistentResultInt, ResultTy));
+ SymMgr.get<SymIntExpr>(ResultSym, ResultOp, PersistentResultInt, ResultTy));
}
// Rearrange if symbol type matches the result type and if the operator is a
diff --git a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
index 9bab9aefaf90c3..656cdccd0bc402 100644
--- a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
@@ -163,22 +163,6 @@ void SymExpr::symbol_iterator::expand() {
llvm_unreachable("unhandled expansion case");
}
-const SymIntExpr *SymbolManager::getSymIntExpr(const SymExpr *lhs,
- BinaryOperator::Opcode op,
- APSIntPtr v, QualType t) {
- llvm::FoldingSetNodeID ID;
- SymIntExpr::Profile(ID, lhs, op, v, t);
- void *InsertPos;
- SymExpr *data = DataSet.FindNodeOrInsertPos(ID, InsertPos);
-
- if (!data) {
- data = Alloc.make<SymIntExpr>(lhs, op, v, t);
- DataSet.InsertNode(data, InsertPos);
- }
-
- return cast<SymIntExpr>(data);
-}
-
const IntSymExpr *SymbolManager::getIntSymExpr(APSIntPtr lhs,
BinaryOperator::Opcode op,
const SymExpr *rhs, QualType t) {
>From 8dc8cfd0aac39da3592b50987bc5a18de9b99d0d Mon Sep 17 00:00:00 2001
From: Arseniy Zaostrovnykh <necto.ne at gmail.com>
Date: Mon, 6 Jan 2025 15:13:41 +0100
Subject: [PATCH 08/11] [NFC] Replace getIntSymExpr with get<IntSymExpr>
---
.../Core/PathSensitive/SymbolManager.h | 3 ---
clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | 2 +-
clang/lib/StaticAnalyzer/Core/SymbolManager.cpp | 16 ----------------
3 files changed, 1 insertion(+), 20 deletions(-)
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index b584a34d7cf0f4..0b77f4163ad052 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -545,9 +545,6 @@ class SymbolManager {
return conjureSymbol(E, LCtx, E->getType(), VisitCount, SymbolTag);
}
- const IntSymExpr *getIntSymExpr(APSIntPtr lhs, BinaryOperator::Opcode op,
- const SymExpr *rhs, QualType t);
-
const SymSymExpr *getSymSymExpr(const SymExpr *lhs, BinaryOperator::Opcode op,
const SymExpr *rhs, QualType t);
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index eac9b930d2400f..6b470453e5d9a5 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -87,7 +87,7 @@ nonloc::SymbolVal SValBuilder::makeNonLoc(APSIntPtr lhs,
const SymExpr *rhs, QualType type) {
assert(rhs);
assert(!Loc::isLocType(type));
- return nonloc::SymbolVal(SymMgr.getIntSymExpr(lhs, op, rhs, type));
+ return nonloc::SymbolVal(SymMgr.get<IntSymExpr>(lhs, op, rhs, type));
}
nonloc::SymbolVal SValBuilder::makeNonLoc(const SymExpr *lhs,
diff --git a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
index 656cdccd0bc402..502a41db1d282f 100644
--- a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
@@ -163,22 +163,6 @@ void SymExpr::symbol_iterator::expand() {
llvm_unreachable("unhandled expansion case");
}
-const IntSymExpr *SymbolManager::getIntSymExpr(APSIntPtr lhs,
- BinaryOperator::Opcode op,
- const SymExpr *rhs, QualType t) {
- llvm::FoldingSetNodeID ID;
- IntSymExpr::Profile(ID, lhs, op, rhs, t);
- void *InsertPos;
- SymExpr *data = DataSet.FindNodeOrInsertPos(ID, InsertPos);
-
- if (!data) {
- data = Alloc.make<IntSymExpr>(lhs, op, rhs, t);
- DataSet.InsertNode(data, InsertPos);
- }
-
- return cast<IntSymExpr>(data);
-}
-
const SymSymExpr *SymbolManager::getSymSymExpr(const SymExpr *lhs,
BinaryOperator::Opcode op,
const SymExpr *rhs,
>From 207ff9b5093b67cb413587988b14f5233abcfeae Mon Sep 17 00:00:00 2001
From: Arseniy Zaostrovnykh <necto.ne at gmail.com>
Date: Mon, 6 Jan 2025 16:34:47 +0100
Subject: [PATCH 09/11] [NFC] Replace getSymSymExpr with get<SymSymExpr>
---
.../Core/PathSensitive/SymbolManager.h | 2 --
.../Core/RangeConstraintManager.cpp | 8 ++++----
.../Core/RangedConstraintManager.cpp | 8 ++++----
clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | 2 +-
.../StaticAnalyzer/Core/SimpleSValBuilder.cpp | 6 +++---
clang/lib/StaticAnalyzer/Core/SymbolManager.cpp | 17 -----------------
6 files changed, 12 insertions(+), 31 deletions(-)
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index 0b77f4163ad052..6670287671be29 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -545,8 +545,6 @@ class SymbolManager {
return conjureSymbol(E, LCtx, E->getType(), VisitCount, SymbolTag);
}
- const SymSymExpr *getSymSymExpr(const SymExpr *lhs, BinaryOperator::Opcode op,
- const SymExpr *rhs, QualType t);
const UnarySymExpr *getUnarySymExpr(const SymExpr *operand,
UnaryOperator::Opcode op, QualType t);
diff --git a/clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp b/clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
index c39fa81109c853..4b67a543db2335 100644
--- a/clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
@@ -1471,7 +1471,7 @@ class SymbolicRangeInferrer
return getRangeForNegatedExpr(
[SSE, State = this->State]() -> SymbolRef {
if (SSE->getOpcode() == BO_Sub)
- return State->getSymbolManager().getSymSymExpr(
+ return State->getSymbolManager().get<SymSymExpr>(
SSE->getRHS(), BO_Sub, SSE->getLHS(), SSE->getType());
return nullptr;
},
@@ -1495,7 +1495,7 @@ class SymbolicRangeInferrer
if (!IsCommutative)
return std::nullopt;
- SymbolRef Commuted = State->getSymbolManager().getSymSymExpr(
+ SymbolRef Commuted = State->getSymbolManager().get<SymSymExpr>(
SSE->getRHS(), Op, SSE->getLHS(), SSE->getType());
if (const RangeSet *Range = getConstraint(State, Commuted))
return *Range;
@@ -1540,7 +1540,7 @@ class SymbolicRangeInferrer
// Let's find an expression e.g. (x < y).
BinaryOperatorKind QueriedOP = OperatorRelationsTable::getOpFromIndex(i);
- const SymSymExpr *SymSym = SymMgr.getSymSymExpr(LHS, QueriedOP, RHS, T);
+ const SymSymExpr *SymSym = SymMgr.get<SymSymExpr>(LHS, QueriedOP, RHS, T);
const RangeSet *QueriedRangeSet = getConstraint(State, SymSym);
// If ranges were not previously found,
@@ -1548,7 +1548,7 @@ class SymbolicRangeInferrer
if (!QueriedRangeSet) {
const BinaryOperatorKind ROP =
BinaryOperator::reverseComparisonOp(QueriedOP);
- SymSym = SymMgr.getSymSymExpr(RHS, ROP, LHS, T);
+ SymSym = SymMgr.get<SymSymExpr>(RHS, ROP, LHS, T);
QueriedRangeSet = getConstraint(State, SymSym);
}
diff --git a/clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp b/clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp
index 4bbe933be2129e..4fe80711dbea12 100644
--- a/clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp
@@ -62,8 +62,8 @@ ProgramStateRef RangedConstraintManager::assumeSym(ProgramStateRef State,
SymbolManager &SymMgr = getSymbolManager();
QualType DiffTy = SymMgr.getContext().getPointerDiffType();
- SymbolRef Subtraction =
- SymMgr.getSymSymExpr(SSE->getRHS(), BO_Sub, SSE->getLHS(), DiffTy);
+ SymbolRef Subtraction = SymMgr.get<SymSymExpr>(SSE->getRHS(), BO_Sub,
+ SSE->getLHS(), DiffTy);
const llvm::APSInt &Zero = getBasicVals().getValue(0, DiffTy);
Op = BinaryOperator::reverseComparisonOp(Op);
@@ -76,8 +76,8 @@ ProgramStateRef RangedConstraintManager::assumeSym(ProgramStateRef State,
SymbolManager &SymMgr = getSymbolManager();
QualType ExprType = SSE->getType();
- SymbolRef CanonicalEquality =
- SymMgr.getSymSymExpr(SSE->getLHS(), BO_EQ, SSE->getRHS(), ExprType);
+ SymbolRef CanonicalEquality = SymMgr.get<SymSymExpr>(
+ SSE->getLHS(), BO_EQ, SSE->getRHS(), ExprType);
bool WasEqual = SSE->getOpcode() == BO_EQ;
bool IsExpectedEqual = WasEqual == Assumption;
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index 6b470453e5d9a5..7ffe5cabc32c73 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -95,7 +95,7 @@ nonloc::SymbolVal SValBuilder::makeNonLoc(const SymExpr *lhs,
const SymExpr *rhs, QualType type) {
assert(lhs && rhs);
assert(!Loc::isLocType(type));
- return nonloc::SymbolVal(SymMgr.getSymSymExpr(lhs, op, rhs, type));
+ return nonloc::SymbolVal(SymMgr.get<SymSymExpr>(lhs, op, rhs, type));
}
NonLoc SValBuilder::makeNonLoc(const SymExpr *operand, UnaryOperator::Opcode op,
diff --git a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
index d77050e61c1898..1622d2726a2ead 100644
--- a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
@@ -328,16 +328,16 @@ static NonLoc doRearrangeUnchecked(ProgramStateRef State,
// FIXME: Maybe it'd be better to have consistency in
// "$x - $y" vs. "$y - $x" because those are solver's keys.
if (LInt > RInt) {
- ResultSym = SymMgr.getSymSymExpr(RSym, BO_Sub, LSym, SymTy);
+ ResultSym = SymMgr.get<SymSymExpr>(RSym, BO_Sub, LSym, SymTy);
ResultOp = BinaryOperator::reverseComparisonOp(Op);
ResultInt = LInt - RInt; // Opposite order!
} else {
- ResultSym = SymMgr.getSymSymExpr(LSym, BO_Sub, RSym, SymTy);
+ ResultSym = SymMgr.get<SymSymExpr>(LSym, BO_Sub, RSym, SymTy);
ResultOp = Op;
ResultInt = RInt - LInt; // Opposite order!
}
} else {
- ResultSym = SymMgr.getSymSymExpr(LSym, Op, RSym, SymTy);
+ ResultSym = SymMgr.get<SymSymExpr>(LSym, Op, RSym, SymTy);
ResultInt = (Op == BO_Add) ? (LInt + RInt) : (LInt - RInt);
ResultOp = BO_Add;
// Bring back the cosmetic difference.
diff --git a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
index 502a41db1d282f..cff6792734477b 100644
--- a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
@@ -163,23 +163,6 @@ void SymExpr::symbol_iterator::expand() {
llvm_unreachable("unhandled expansion case");
}
-const SymSymExpr *SymbolManager::getSymSymExpr(const SymExpr *lhs,
- BinaryOperator::Opcode op,
- const SymExpr *rhs,
- QualType t) {
- llvm::FoldingSetNodeID ID;
- SymSymExpr::Profile(ID, lhs, op, rhs, t);
- void *InsertPos;
- SymExpr *data = DataSet.FindNodeOrInsertPos(ID, InsertPos);
-
- if (!data) {
- data = Alloc.make<SymSymExpr>(lhs, op, rhs, t);
- DataSet.InsertNode(data, InsertPos);
- }
-
- return cast<SymSymExpr>(data);
-}
-
const UnarySymExpr *SymbolManager::getUnarySymExpr(const SymExpr *Operand,
UnaryOperator::Opcode Opc,
QualType T) {
>From 824649120ac51ac75ad22a7276f7380f801e6db6 Mon Sep 17 00:00:00 2001
From: Arseniy Zaostrovnykh <necto.ne at gmail.com>
Date: Mon, 6 Jan 2025 16:36:06 +0100
Subject: [PATCH 10/11] [NFC] Replace getUnarySymExpr with get<UnarySymExpr>
---
.../Core/PathSensitive/SymbolManager.h | 4 ----
.../Core/RangeConstraintManager.cpp | 4 ++--
clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | 2 +-
clang/lib/StaticAnalyzer/Core/SymbolManager.cpp | 15 ---------------
4 files changed, 3 insertions(+), 22 deletions(-)
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index 6670287671be29..e83164c9b42618 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -545,10 +545,6 @@ class SymbolManager {
return conjureSymbol(E, LCtx, E->getType(), VisitCount, SymbolTag);
}
-
- const UnarySymExpr *getUnarySymExpr(const SymExpr *operand,
- UnaryOperator::Opcode op, QualType t);
-
QualType getType(const SymExpr *SE) const {
return SE->getType();
}
diff --git a/clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp b/clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
index 4b67a543db2335..2b85421036326e 100644
--- a/clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
@@ -1481,8 +1481,8 @@ class SymbolicRangeInferrer
std::optional<RangeSet> getRangeForNegatedSym(SymbolRef Sym) {
return getRangeForNegatedExpr(
[Sym, State = this->State]() {
- return State->getSymbolManager().getUnarySymExpr(Sym, UO_Minus,
- Sym->getType());
+ return State->getSymbolManager().get<UnarySymExpr>(Sym, UO_Minus,
+ Sym->getType());
},
Sym->getType());
}
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index 7ffe5cabc32c73..e65c4b2e3bb9d0 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -102,7 +102,7 @@ NonLoc SValBuilder::makeNonLoc(const SymExpr *operand, UnaryOperator::Opcode op,
QualType type) {
assert(operand);
assert(!Loc::isLocType(type));
- return nonloc::SymbolVal(SymMgr.getUnarySymExpr(operand, op, type));
+ return nonloc::SymbolVal(SymMgr.get<UnarySymExpr>(operand, op, type));
}
nonloc::SymbolVal SValBuilder::makeNonLoc(const SymExpr *operand,
diff --git a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
index cff6792734477b..a4648f5922ef11 100644
--- a/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
@@ -163,21 +163,6 @@ void SymExpr::symbol_iterator::expand() {
llvm_unreachable("unhandled expansion case");
}
-const UnarySymExpr *SymbolManager::getUnarySymExpr(const SymExpr *Operand,
- UnaryOperator::Opcode Opc,
- QualType T) {
- llvm::FoldingSetNodeID ID;
- UnarySymExpr::Profile(ID, Operand, Opc, T);
- void *InsertPos;
- SymExpr *data = DataSet.FindNodeOrInsertPos(ID, InsertPos);
- if (!data) {
- data = Alloc.make<UnarySymExpr>(Operand, Opc, T);
- DataSet.InsertNode(data, InsertPos);
- }
-
- return cast<UnarySymExpr>(data);
-}
-
QualType SymbolConjured::getType() const {
return T;
}
>From 3ed3a3434ba65ab61690c4823dbdafb0be50598f Mon Sep 17 00:00:00 2001
From: Arseniy Zaostrovnykh <necto.ne at gmail.com>
Date: Mon, 6 Jan 2025 16:57:31 +0100
Subject: [PATCH 11/11] [NFC] fix formatting
---
.../StaticAnalyzer/Core/PathSensitive/SymbolManager.h | 8 +++-----
clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp | 4 ++--
2 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index e83164c9b42618..a96b2fd85fff0b 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -527,12 +527,10 @@ class SymbolManager {
static bool canSymbolicate(QualType T);
- template <typename T, typename... Args>
- const T *get(Args &&...args);
+ template <typename T, typename... Args> const T *get(Args &&...args);
- const SymbolConjured* conjureSymbol(const Stmt *E,
- const LocationContext *LCtx,
- QualType T,
+ const SymbolConjured *conjureSymbol(const Stmt *E,
+ const LocationContext *LCtx, QualType T,
unsigned VisitCount,
const void *SymbolTag = nullptr) {
return get<SymbolConjured>(E, LCtx, T, VisitCount, SymbolTag);
diff --git a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
index 1622d2726a2ead..9c6222e8822f90 100644
--- a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
@@ -350,8 +350,8 @@ static NonLoc doRearrangeUnchecked(ProgramStateRef State,
}
}
APSIntPtr PersistentResultInt = BV.getValue(ResultInt);
- return nonloc::SymbolVal(
- SymMgr.get<SymIntExpr>(ResultSym, ResultOp, PersistentResultInt, ResultTy));
+ return nonloc::SymbolVal(SymMgr.get<SymIntExpr>(
+ ResultSym, ResultOp, PersistentResultInt, ResultTy));
}
// Rearrange if symbol type matches the result type and if the operator is a
More information about the cfe-commits
mailing list