[clang] [clang] Introduce [[clang::lifetime_capture_by(X)]] (PR #111499)

Haojian Wu via cfe-commits cfe-commits at lists.llvm.org
Tue Oct 22 00:44:57 PDT 2024


================
@@ -248,9 +256,12 @@ static void visitLocalsRetainedByReferenceBinding(IndirectLocalPath &Path,
                                                   LocalVisitor Visit);
 
 template <typename T> static bool isRecordWithAttr(QualType Type) {
-  if (auto *RD = Type->getAsCXXRecordDecl())
-    return RD->hasAttr<T>();
-  return false;
+  CXXRecordDecl *RD = Type.getNonReferenceType()->getAsCXXRecordDecl();
+  if (!RD)
+    return false;
+  if (auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(RD))
----------------
hokein wrote:

Why do we need to handle template specializations specifically? The GSL pointer/owner attribute should propagate from the primary template to its specializations.

https://github.com/llvm/llvm-project/pull/111499


More information about the cfe-commits mailing list