================
@@ -1341,6 +1341,14 @@ checkExprLifetimeImpl(Sema &SemaRef, const
InitializedEntity *InitEntity,
}
if (IsGslPtrValueFromGslTempOwner && DiagLoc.isValid()) {
+
+ if (SemaRef.getLangOpts().CPlusPlus23) {
----------------
hokein wrote:
the analysis is done here, and we filter out the result. I think we can filter
out this case before (in `checkExprLifetimeImpl`) running the analysis to save
some cost.
Can you add a testcase (for the `lifetimebound` attr)? Make sure we don't warn
on it
```
using size_t = decltype(sizeof(void *));
namespace my_ns {
template <typename T> struct vector {
T &operator[](size_t I) [[clang::lifetimebound]];
};
struct string {
const char *begin();
const char *end();
};
} // namespace std
my_ns::vector<my_ns::string> getData();
void foo() {
for (auto c : getData()[0]) {
(void)c;
}
}
```
https://github.com/llvm/llvm-project/pull/145164
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits