[Bug middle-end/47397] Alignment of array element is not optimal in AVX mode due to use of TARGET_MEM_REFs
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jan 21 14:39:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47397
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2011.01.21 14:21:20
Summary|Alignment of array element |Alignment of array element
|is incorrect in AVX mode |is not optimal in AVX mode
| |due to use of
| |TARGET_MEM_REFs
Ever Confirmed|0 |1
--- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-01-21 14:21:20 UTC ---
This is because index is unknown in both
vect_var_.13_20 = MEM[symbol: a, index: ivtmp.24_12, offset: 16B];
and
MEM[symbol: b, index: ivtmp.24_12, offset: 0B] = vect_var_.14_22;
we don't have a way to record that ivtmp.24_12 is {0, +, 32} for
RTL expansion. Which means that IVOPTs is responsible for the
loss of information. Before IVOPTs we have
# ALIGN = 32, MISALIGN = 16
# vect_pa.9_18 = PHI <vect_pa.9_19(4), vect_pa.12_17(2)>
# ALIGN = 32, MISALIGN = 0
# vect_pb.16_24 = PHI <vect_pb.16_25(4), vect_pb.19_23(2)>
vect_var_.13_20 = MEM[(double[1024] *)vect_pa.9_18];
MEM[(double[1024] *)vect_pb.16_24] = vect_var_.14_22;
so we know that the pointers we dereference are properly aligned.
More information about the Gcc-bugs
mailing list