[PATCH] D110927: [analyzer] Access stored value of a constant array through a pointer to another type

Denys Petrov via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Nov 17 11:22:26 PST 2021


ASDenysPetrov added a comment.

@steakhal Please, read the discussion started from here D104285#2943449 <https://reviews.llvm.org/D104285#2943449>. It's directly relates to this patch and what we've been arguing about.

I'm still hesitating about this patch.
On one hand we have the fact that almost all compilers ignore some Standard's paragraphs about UB in terms of casts.
E.g. they consider next snippets as OK, but they are NOT according to the Standard <http://eel.is/c++draft/basic.lval#11>:

- `int arr[1][2][3]; int *ptr = (int*)arr; ptr[4] = 42;` // **int(*)[2][3]** can't be aliased by **int***
- `int i; signed char *ptr = (signed char*)&i; ptr[2] = 42;` // **int*** can't be aliased by **signed char***
- `int arr[3][3]; int (*ptr)[8] = (int(*)[6])arr; ptr[1][1] = 42;` // `ptr[1]` can't go further then aliased by **int(*)[6]**

I've checked all those examples on Godbolt
On the other hand introducing this patch will show unexpected warnings to users which they can't reproduce in a real life.

I can't choose the way to act.


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

https://reviews.llvm.org/D110927



More information about the cfe-commits mailing list