------- Comment #2 from pinskia at gcc dot gnu dot org  2008-10-08 20:18 -------
Just the alignment information is lost really:
(mem/s:V16QI (plus:SI (reg/f:SI 68)
                (reg:SI 63 [ ivtmp.68 ])) [4 resdst S16 A8])

Which I think is fixed via
http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00325.html .

The load is needed.

If we use a pointer instead of an array we get:
L2:
        pabsw   (%ecx,%eax), %xmm0
        movdqa  %xmm0, (%edx,%eax)
        addl    $16, %eax
        cmpl    $160, %eax
        jne     L2

Note since __m128i has the attribute of may_alias you have to do the load of
the global pointer before the loop.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pinskia at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |missed-optimization
   Last reconfirmed|0000-00-00 00:00:00         |2008-10-08 20:18:35
               date|                            |
            Summary|[4.4 Regression] Unnecessary|[4.4 Regression] Alignment
                   |load instruction in a loop  |information is lost for
                   |                            |ARRAY_REFs
   Target Milestone|---                         |4.4.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37774

Reply via email to