================
@@ -415,6 +416,28 @@ class LifetimeChecker {
}
}
+ void reportMisplacedLifetimebound() {
+ const FunctionDecl *FDef = dyn_cast<FunctionDecl>(FD);
+ if (!FDef)
+ return;
+
+ const FunctionDecl *FDecl = FDef->getPreviousDecl();
----------------
usx95 wrote:
We add implicit attributes on redecl if we have attr in a previous decl.
Therefore we could suggest attr on "first" decl in the TU (aka canonical decl).
To prioritise "foo.h", we could instead suggest annotation on "first decl in a
different file" but I would prefer to keep this policy simpler to understand by
users. I would suggest to later have a separate warning enforcing that attrs on
cross-tu redecls should match the canonical decl.
I also feel we should share this policy with annotation suggestions. Sharing
this policy with `getCrossTUDecl` makes sense. To scope down this PR, we could
change `getCrossTUDecl` in a separate PR to choose the canonical decl (instead
of current: last decl in different file).
To summarise, we could:
1. (In this PR), introduce `getCanonicalDeclForAttr` to return the canonical
decl and a warning scope (intra-tu vs xTU).
2. Next PR, replace `getCrossTUDecl` to use `getCanonicalDeclForAttr` for
suggestions as well.
3. Next PR, identify unannotated cross-TU redeclarations not matching the
canonical decl.
WDYT @Xazax-hun ?
https://github.com/llvm/llvm-project/pull/197753
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits