https://github.com/Xazax-hun requested changes to this pull request.
I think we might want to take a step back and discuss at a higher level what we
want to do here. It is possible that I am misunderstanding what this PR is
trying to achieve.
Consider the following example:
```
struct S {
int *owned;
int *view;
S();
S(const S&);
~S();
};
S getS(S input [[clang::lifetimebound]]);
```
Here, imagine `S` has both owned data, and data that refers to some other
unowned storage. The `lifetimebound` here expressed that the output `S` depends
on whatever the input `S` depended on. If we recursively do the binding for all
fields, we might end up introducing a false dependency on `owned`. So I think
the right thing to do in this case is to consult what the input was depending
on and propagate the same dependence.
https://github.com/llvm/llvm-project/pull/214823
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits