This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/81558] Loop not vectorized


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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu.org
             Blocks|                            |53947

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
The inner loop in foo2 is completely unrolled by GCC and imgY_org[y][x] is

  _32 = (long unsigned int) y_103;
  _33 = _32 * 8;
  _34 = imgY_org.8_31 + _33;
  _35 = *_34;

where *_34 aliases *orgptr.  Thus it's not possible to vectorize this without
a runtime alias check.  The innermost loop in foo1 is vectorized, the unrolled
loop in foo2 is not basic-block vectorized because basic-block vectorization
runs into the very same dependence issue.

Does LLVM do a runtime alias check here?  For foo1 GCC adds a runtime alias
check
(BB vectorization cannot version for aliasing).


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947
[Bug 53947] [meta-bug] vectorizer missed-optimizations

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]