================
@@ -232,8 +283,27 @@ const Origin &OriginManager::getOrigin(OriginID ID) const {
void OriginManager::collectMissingOrigins(Stmt &FunctionBody,
LifetimeSafetyStats &LSStats) {
- MissingOriginCollector Collector(this->ExprToList, LSStats);
+ MissingOriginCollector Collector(this->ExprToList, *this, LSStats);
Collector.TraverseStmt(const_cast<Stmt *>(&FunctionBody));
}
+void OriginManager::collectLifetimeboundOriginTypes(AnalysisDeclContext &AC) {
+ LifetimeboundOriginTypeCollector Collector(*this);
+ if (Stmt *Body = AC.getBody())
+ Collector.TraverseStmt(Body);
+ if (const auto *CD = dyn_cast<CXXConstructorDecl>(AC.getDecl()))
+ for (const auto *Init : CD->inits())
+ Collector.TraverseStmt(Init->getInit());
+}
+
+void OriginManager::registerLifetimeboundOriginType(QualType QT) {
+ // TODO: Support [[gsl::Owner]] return types. For now, skip them because they
----------------
aeft wrote:
test: gsl_owner_return_does_not_crash
https://github.com/llvm/llvm-project/pull/187917
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits