[PATCH] D96215: [clang-tidy] Recognize captures as a form of aliasing.

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 10 08:17:13 PST 2021


aaron.ballman added a comment.

In D96215#2550227 <https://reviews.llvm.org/D96215#2550227>, @NoQ wrote:

> In D96215#2548492 <https://reviews.llvm.org/D96215#2548492>, @aaron.ballman wrote:
>
>> Should structured bindings be treated similarly as well (not necessarily as part of this patch)?
>
> Umm, looks like we're both missing the elephant in the room: passing a variable into a function by reference.

Additionally, pointers to non-const objects. I had assumed both of these were intentionally out-of-scope because of flow sensitivity though.

>   int &hidden_reference(int &x) {
>     return x;
>   }
>   
>   void test_hidden_reference() {
>     int x = 0;
>     int &y = hidden_reference(x);
>     for (; x < 10; ++y) { // Warns ¯\_(ツ)_/¯
>     }
>   }
>
> With this taken care of, I hope structured bindings will be handled automatically because whatever's unwrapped couldn't have obtained a reference to our local variable without going through a function first (eg., the constructor). Unless there's some aggregate magic going on... but in this case, again, we have to take care of aggregate magic and structured bindings aren't at fault.

FWIW, I was thinking of code like: https://godbolt.org/z/jK53G5 but, I don't think it needs to be handled right now in this patch.


Repository:
  rCTE Clang Tools Extra

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96215/new/

https://reviews.llvm.org/D96215



More information about the cfe-commits mailing list