------- Comment #4 from hjl dot tools at gmail dot com 2008-03-18 02:43 ------- I don't think alias is the cause. With this patch:
--- ./ssse3-psignw.c.foo 2007-08-23 09:44:31.000000000 -0700 +++ ./ssse3-psignw.c 2008-03-17 19:40:53.000000000 -0700 @@ -9,7 +9,7 @@ /* Test the 64-bit form */ static void -ssse3_test_psignw (int *i1, int *i2, int *r) +ssse3_test_psignw (void *i1, void *i2, void *r) { __m64 t1 = *(__m64 *) i1; __m64 t2 = *(__m64 *) i2; @@ -19,7 +19,7 @@ ssse3_test_psignw (int *i1, int *i2, int /* Test the 128-bit form */ static void -ssse3_test_psignw128 (int *i1, int *i2, int *r) +ssse3_test_psignw128 (void *i1, void *i2, void *r) { /* Assumes incoming pointers are 16-byte aligned */ __m128i t1 = *(__m128i *) i1; @@ -29,7 +29,7 @@ ssse3_test_psignw128 (int *i1, int *i2, /* Routine to manually compute the results */ static void -compute_correct_result (int *i1, int *i2, int *r) +compute_correct_result (void *i1, void *i2, void *r) { short *s1 = (short *) i1; short *s2 = (short *) i2; -O3 still fails. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35621