------- Comment #25 from irar at il dot ibm dot com 2009-06-17 11:06 ------- (In reply to comment #24) > If I add to vect-42.c (with my patch) the line > > /* { dg-final { scan-tree-dump-times "bla bla bla" 1 "vect" { target vector_alignment_reachable } } } */ ... > i.e., the test is done for -m32 (and fail) but not for -m64.
So, vector_alignment_reachable is true for -m32 and false for -m64. ... > i.e., vect_hw_misalign is false for both -m32 and -m64. > So it looks that vect_hw_misalign has the opposite meaning of that assumed in > comment #16: > > hmmm... versioning should not be done for targets that support > > vect_hw_misalign... Why? vect_hw_misalign means that misaligned data acceses are supported by hardware, therefore, we don't need to do versioning. And we expect versioning here with -m64 since both vect_hw_misalign and vector_alignment_reachable are false. > Final note, the change in comment #17 does not help. Thanks for checking. I still don't understand why this test works on -m64 /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align || vect_hw_misalign } || { ! vector_alignment_reachable } } } } } */ vector_alignment_reachable is false, so there should be no peeling according to the test. But it is there, and the test doesn't XPASS... And, of course, I don't understand why we do peeling, i.e., builtin vector_alignment_reachable returns true. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40359