Make GetDeclObject() return a pointer.
PiperOrigin-RevId: 458419520
diff --git a/lifetime_analysis/lifetime_analysis.cc b/lifetime_analysis/lifetime_analysis.cc
index b5b7dbe..d572c0f 100644
--- a/lifetime_analysis/lifetime_analysis.cc
+++ b/lifetime_analysis/lifetime_analysis.cc
@@ -493,7 +493,7 @@
return std::nullopt;
}
- Object object = object_repository_.GetDeclObject(decl);
+ const Object* object = object_repository_.GetDeclObject(decl);
assert(decl_ref->isGLValue() || decl_ref->getType()->isBuiltinType());
@@ -630,14 +630,15 @@
const clang::DeclStmt* decl_stmt) {
for (const clang::Decl* decl : decl_stmt->decls()) {
if (const auto* var_decl = clang::dyn_cast<clang::VarDecl>(decl)) {
- Object var_object = object_repository_.GetDeclObject(var_decl);
+ const Object* var_object = object_repository_.GetDeclObject(var_decl);
// Don't need to record initializers because initialization has already
// happened in VisitCXXConstructExpr(), VisitInitListExpr(), or
// VisitCallExpr().
if (var_decl->hasInit() && !var_decl->getType()->isRecordType()) {
- TransferInitializer(var_object, var_decl->getType(), object_repository_,
- var_decl->getInit(), points_to_map_);
+ TransferInitializer(*var_object, var_decl->getType(),
+ object_repository_, var_decl->getInit(),
+ points_to_map_);
}
}
}
diff --git a/lifetime_analysis/object_repository.cc b/lifetime_analysis/object_repository.cc
index 7da5f92..80221d6 100644
--- a/lifetime_analysis/object_repository.cc
+++ b/lifetime_analysis/object_repository.cc
@@ -525,7 +525,8 @@
return new (object_allocator_.Allocate()) Object(func);
}
-Object ObjectRepository::GetDeclObject(const clang::ValueDecl* decl) const {
+const Object* ObjectRepository::GetDeclObject(
+ const clang::ValueDecl* decl) const {
auto iter = object_repository_.find(decl);
if (iter == object_repository_.end()) {
llvm::errs() << "Didn't find object for Decl:\n";
@@ -533,7 +534,7 @@
llvm::errs() << "\n" << DebugString();
llvm::report_fatal_error("Didn't find object for Decl");
}
- return *iter->second;
+ return iter->second;
}
Object ObjectRepository::GetTemporaryObject(
diff --git a/lifetime_analysis/object_repository.h b/lifetime_analysis/object_repository.h
index 285dca4..ec3d7bf 100644
--- a/lifetime_analysis/object_repository.h
+++ b/lifetime_analysis/object_repository.h
@@ -97,7 +97,7 @@
const Object* CreateObjectFromFunctionDecl(const clang::FunctionDecl& func);
// Returns the object associated with a variable or function.
- Object GetDeclObject(const clang::ValueDecl* decl) const;
+ const Object* GetDeclObject(const clang::ValueDecl* decl) const;
// Returns the object associated with a materialize temporary expression.
Object GetTemporaryObject(const clang::MaterializeTemporaryExpr* expr) const;