------- 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