[Bug middle-end/78261] vect pass only vectorizes half of the array in gcc.c-torture/execute/pr68532.c

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Nov 9 09:13:00 GMT 2016


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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |INVALID

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Well, the testcase sums in[0] + in[8] + in[16] + ... and is vectorized using
interleaving which means the last vector iteration would load from outside of
the array.  So we apply peeling for gaps.

Now the question is why IPA-CP doesn't propagate alignment here (it doesn't
even for -O3):

    callsite  main/2 -> test/1 :
       param 0: CONST: 0
         value: 0x0, mask: 0x0
         Unknown VR
       param 1: CONST: &in
         value: 0x0, mask: 0x0fffffffffffffff0
         VR  ~[0, 0]
       param 2: CONST: 1
         value: 0x1, mask: 0x0
         Unknown VR

Not considering test for cloning; no hot calls.
Marking all lattices of test/1 as BOTTOM

ah.  Because it's called from main.

Well, so everything works as intended.  You likely see unaligned loads being
performed as well.


More information about the Gcc-bugs mailing list