https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99117
--- Comment #6 from rguenther at suse dot de <rguenther at suse dot de> --- On Tue, 16 Feb 2021, jakub at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99117 > > Jakub Jelinek <jakub at gcc dot gnu.org> changed: > > What |Removed |Added > ---------------------------------------------------------------------------- > Known to work|7.5.0, 8.4.0 | > CC| |jakub at gcc dot gnu.org > > --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- > int* p = sum._M_data; > int* e1 = sum._M_data; > > If p and e1 aren't __restrict__ too, shouldn't that be fine? Reading the same But I think it's two different 'sum' in this case. The actual flow is quite hard to follow since as usual expression templates rely on a lot of inlining and most restrict qualifiers only take effect when on function parameters (there I see 'this' being restrict qualified quite often). > value multiple times shouldn't create new clique each time it is read. It doesn't. It uses points-to sets to assign cliques so unless the PTA solution is wrong the clique assignment shouldn't. > Though, isn't it before optimization a different argument instead? > I'd think even that should be ok, because using __restrict__ from FIELD_DECLs > is only ok if we can prove it is different structs (say pointers to them also > being restrict), but the current aliasing code probably doesn't do that. See above.