------- Comment #21 from irar at il dot ibm dot com 2009-06-16 11:08 ------- (In reply to comment #20) > What are the expected patterns for the 3 variables > with -m32 and -m64?
I am not sure, this is why I asked you if the target is ([istarget *-*-darwin*] && [is-effective-target lp64]). vect_no_align and vect_hw_misalign have to be false, so, I guess, vector_alignment_reachable is different for -m32 and -m64, since the behaviour is different. "Alignment of access forced using versioning" means the vectorizer uses loop versioning to force alignment. It happens when there is no misalignment support at all (vect_no_align) or when other methods fail: loop peeling doesn't help (!vector_alignment_reachable) and also there is no hardware misalignment support (!vect_hw_misalign). >From the dump you attached, I see that loop peeling was done, therefore, vector_alignment_reachable is true, and it must not look for "Alignment of access forced using versioning". But it does. This what makes me think that it is just a syntax problem. On the other hand, I don't understand the difference with -m32 and -m64. It seems to me, that ([istarget *-*-darwin*] && [is-effective-target lp64]) is false for -m32 and, possibly, true for -m64. But that contradicts the dump. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40359