aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Braenne <mboehme@google.com>2023-04-05 12:32:13 +0000
committerMartin Braenne <mboehme@google.com>2023-04-06 07:26:24 +0000
commiteffdfa7d5f49b00b4c0d36f7c6835b519b0f46bb (patch)
tree5df593ba44930581e297c05fb5af09e3c226d7dd
parentdb6b30b1831095c216378a9df215b7c0ae6b959f (diff)
downloadllvm-effdfa7d5f49b00b4c0d36f7c6835b519b0f46bb.zip
llvm-effdfa7d5f49b00b4c0d36f7c6835b519b0f46bb.tar.gz
llvm-effdfa7d5f49b00b4c0d36f7c6835b519b0f46bb.tar.bz2
[clang][dataflow] Use `isRecordType()` where appropriate.
This is less verbose than checking for class, struct, and union individually, and I believe it's also more efficient (not that that should be the overriding concern). Reviewed By: sammccall, xazax.hun Differential Revision: https://reviews.llvm.org/D147603
-rw-r--r--clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp3
-rw-r--r--clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp4
2 files changed, 3 insertions, 4 deletions
diff --git a/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp b/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp
index 4d8a42c..1fbc375 100644
--- a/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp
+++ b/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp
@@ -45,8 +45,7 @@ DataflowAnalysisContext::getReferencedFields(QualType Type) {
}
StorageLocation &DataflowAnalysisContext::createStorageLocation(QualType Type) {
- if (!Type.isNull() &&
- (Type->isStructureOrClassType() || Type->isUnionType())) {
+ if (!Type.isNull() && Type->isRecordType()) {
llvm::DenseMap<const ValueDecl *, StorageLocation *> FieldLocs;
// During context-sensitive analysis, a struct may be allocated in one
// function, but its field accessed in a function lower in the stack than
diff --git a/clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp b/clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp
index ee8f6c5..6a6343b 100644
--- a/clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp
+++ b/clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp
@@ -608,7 +608,7 @@ void Environment::setValue(const StorageLocation &Loc, Value &Val) {
auto &AggregateLoc = *cast<AggregateStorageLocation>(&Loc);
const QualType Type = AggregateLoc.getType();
- assert(Type->isStructureOrClassType() || Type->isUnionType());
+ assert(Type->isRecordType());
for (const FieldDecl *Field : DACtx->getReferencedFields(Type)) {
assert(Field != nullptr);
@@ -708,7 +708,7 @@ Value *Environment::createValueUnlessSelfReferential(
return &create<PointerValue>(PointeeLoc);
}
- if (Type->isStructureOrClassType() || Type->isUnionType()) {
+ if (Type->isRecordType()) {
CreatedValuesCount++;
llvm::DenseMap<const ValueDecl *, Value *> FieldValues;
for (const FieldDecl *Field : DACtx->getReferencedFields(Type)) {