https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88398

--- Comment #45 from Jiu Fu Guo <guojiufu at gcc dot gnu.org> ---
(In reply to Wilco from comment #44)
> (In reply to Jiu Fu Guo from comment #43)
> > To handle vectorization for this kind of code, it needs to overcome the hard
> > issue mentioned in comment #5: the loop has 2 exits.
> 
> Yes and that also implies vector loads are unsafe unless they are
> non-faulting. Few ISAs have such support.

Thanks a lot for your kind comments!

For this case, the first match for (p[len] != cur[len]) very very possible
happen at middle of vector. Vector loading reads more data than required.  Also
as comment #3 and comment #7 said, those data are in question if they are
really accessible.

Since this is a loop, can we assume it is safe if reading data less than the
upbound of the loop and if two buffers are not cross pages?
something like: "while (++len != max - sizeof(T)) { T a = *(T*)(p+len)..}" and
"p & page_size_mask == (p+len) & page_size_mask".

Reply via email to