From d94a3592d4b796aa86da74cda88de8dfaadddbf3 Mon Sep 17 00:00:00 2001 From: Kai Tietz Date: Mon, 7 Jun 2010 10:56:44 +0000 Subject: [PATCH] re PR testsuite/44159 (CPU options cause testsuite failures) 2010-06-07 Kai Tietz PR target/44159 * gcc.target/i386/abi-2.c: Check sysv abi here. * gcc.target/i386/aes-avx-check.h: Call test in noinline function to avoid failures by different ABIs. * gcc.target/i386/aes-check.h: Likewise. * gcc.target/i386/avx-check.h: Likewise. * gcc.target/i386/fma4-check.h: Likewise. * gcc.target/i386/mmx-3dnow-check.h: Likewise. * gcc.target/i386/mmx-check.h: Likewise. * gcc.target/i386/pclmul-avx-check.h: Likewise. * gcc.target/i386/pclmul-check.h: Likewise. * gcc.target/i386/sse-check.h: Likewise. * gcc.target/i386/sse2-check.h: Likewise. * gcc.target/i386/sse3-check.h: Likewise. * gcc.target/i386/sse4_1-check.h: Likewise. * gcc.target/i386/sse4_2-check.h: Likewise. * gcc.target/i386/sse4a-check.h: Likewise. * gcc.target/i386/ssse3-check.h: Likewise. * gcc.target/i386/xop-check.h: Likewise. * gcc.target/i386/pr27971.c: Fix for LLP64. * gcc.target/i386/pr39139.c: Likewise. * gcc.target/i386/pr39315-check.c: Likewise. * gcc.target/i386/vararg-1.c: Likewise. * gcc.target/i386/vararg-2.c: Likewise. Additional add dg-compile to avoid failure due missing foo symbol. From-SVN: r160363 --- gcc/testsuite/ChangeLog | 27 +++++++++++++++++++ gcc/testsuite/gcc.target/i386/abi-2.c | 1 + gcc/testsuite/gcc.target/i386/aes-avx-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/aes-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/avx-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/fma4-check.h | 9 ++++++- .../gcc.target/i386/mmx-3dnow-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/mmx-check.h | 9 ++++++- .../gcc.target/i386/pclmul-avx-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/pclmul-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/pr27971.c | 8 +++++- gcc/testsuite/gcc.target/i386/pr39139.c | 16 ++++++----- gcc/testsuite/gcc.target/i386/pr39315-check.c | 4 ++- gcc/testsuite/gcc.target/i386/sse-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/sse2-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/sse3-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/sse4_1-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/sse4_2-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/sse4a-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/ssse3-check.h | 9 ++++++- gcc/testsuite/gcc.target/i386/vararg-1.c | 1 + gcc/testsuite/gcc.target/i386/vararg-2.c | 1 + gcc/testsuite/gcc.target/i386/xop-check.h | 9 ++++++- 23 files changed, 177 insertions(+), 25 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e9f66a3f55a..7020fc7aa73 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,32 @@ 2010-06-07 Kai Tietz + PR target/44159 + * gcc.target/i386/abi-2.c: Check sysv abi here. + * gcc.target/i386/aes-avx-check.h: Call test in noinline + function to avoid failures by different ABIs. + * gcc.target/i386/aes-check.h: Likewise. + * gcc.target/i386/avx-check.h: Likewise. + * gcc.target/i386/fma4-check.h: Likewise. + * gcc.target/i386/mmx-3dnow-check.h: Likewise. + * gcc.target/i386/mmx-check.h: Likewise. + * gcc.target/i386/pclmul-avx-check.h: Likewise. + * gcc.target/i386/pclmul-check.h: Likewise. + * gcc.target/i386/sse-check.h: Likewise. + * gcc.target/i386/sse2-check.h: Likewise. + * gcc.target/i386/sse3-check.h: Likewise. + * gcc.target/i386/sse4_1-check.h: Likewise. + * gcc.target/i386/sse4_2-check.h: Likewise. + * gcc.target/i386/sse4a-check.h: Likewise. + * gcc.target/i386/ssse3-check.h: Likewise. + * gcc.target/i386/xop-check.h: Likewise. + * gcc.target/i386/pr27971.c: Fix for LLP64. + * gcc.target/i386/pr39139.c: Likewise. + * gcc.target/i386/pr39315-check.c: Likewise. + * gcc.target/i386/vararg-1.c: Likewise. + * gcc.target/i386/vararg-2.c: Likewise. + Additional add dg-compile to avoid failure due + missing foo symbol. + * gcc.dg/compound-literal-1.c: Fix for llp64. * gcc.dg/pr32370.c: Likewise. * gcc.dg/pr37561.c: Likewise. diff --git a/gcc/testsuite/gcc.target/i386/abi-2.c b/gcc/testsuite/gcc.target/i386/abi-2.c index 5ed6b4a56dd..39eafc25039 100644 --- a/gcc/testsuite/gcc.target/i386/abi-2.c +++ b/gcc/testsuite/gcc.target/i386/abi-2.c @@ -1,6 +1,7 @@ /* Make certain that we pass __m256i in the correct register for AVX. */ /* { dg-do compile } */ /* { dg-options "-O1 -mavx" } */ +/* { dg-options "-mabi=sysv -O1 -mavx" { target x86_64-*-mingw* } } */ typedef long long __m256i __attribute__ ((__vector_size__ (32))); __m256i foo (void) { return (__m256i){ 1, 2, 3, 4 }; } diff --git a/gcc/testsuite/gcc.target/i386/aes-avx-check.h b/gcc/testsuite/gcc.target/i386/aes-avx-check.h index e73e36eab25..e91e88173cf 100644 --- a/gcc/testsuite/gcc.target/i386/aes-avx-check.h +++ b/gcc/testsuite/gcc.target/i386/aes-avx-check.h @@ -6,6 +6,13 @@ static void aes_avx_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + aes_avx_test (); +} + int main () { @@ -17,7 +24,7 @@ main () /* Run AES + AVX test only if host has AES + AVX support. */ if ((ecx & (bit_AVX | bit_AES)) == (bit_AVX | bit_AES)) { - aes_avx_test (); + do_test (); #ifdef DEBUG printf ("PASSED\n"); #endif diff --git a/gcc/testsuite/gcc.target/i386/aes-check.h b/gcc/testsuite/gcc.target/i386/aes-check.h index f56f1adeb3e..7e794423e47 100644 --- a/gcc/testsuite/gcc.target/i386/aes-check.h +++ b/gcc/testsuite/gcc.target/i386/aes-check.h @@ -5,6 +5,13 @@ static void aes_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + aes_test (); +} + int main () { @@ -16,7 +23,7 @@ main () /* Run AES test only if host has AES support. */ if (ecx & bit_AES) { - aes_test (); + do_test (); #ifdef DEBUG printf ("PASSED\n"); #endif diff --git a/gcc/testsuite/gcc.target/i386/avx-check.h b/gcc/testsuite/gcc.target/i386/avx-check.h index 8db55a10357..7736fc9f40b 100644 --- a/gcc/testsuite/gcc.target/i386/avx-check.h +++ b/gcc/testsuite/gcc.target/i386/avx-check.h @@ -4,6 +4,13 @@ static void avx_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + avx_test (); +} + int main () { @@ -15,7 +22,7 @@ main () /* Run AVX test only if host has AVX support. */ if (ecx & bit_AVX) { - avx_test (); + do_test (); #ifdef DEBUG printf ("PASSED\n"); #endif diff --git a/gcc/testsuite/gcc.target/i386/fma4-check.h b/gcc/testsuite/gcc.target/i386/fma4-check.h index 76fcdef99b6..dc7ee574878 100644 --- a/gcc/testsuite/gcc.target/i386/fma4-check.h +++ b/gcc/testsuite/gcc.target/i386/fma4-check.h @@ -4,6 +4,13 @@ static void fma4_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + fma4_test (); +} + int main () { @@ -14,7 +21,7 @@ main () /* Run FMA4 test only if host has FMA4 support. */ if (ecx & bit_FMA4) - fma4_test (); + do_test (); exit (0); } diff --git a/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h b/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h index 458e7cda898..4f2f7f3ac40 100644 --- a/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h +++ b/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h @@ -5,6 +5,13 @@ static void mmx_3dnow_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + mmx_3dnow_test (); +} + int main () { @@ -15,7 +22,7 @@ main () /* Run 3DNow! test only if host has 3DNow! support. */ if (edx & bit_3DNOW) - mmx_3dnow_test (); + do_test (); return 0; } diff --git a/gcc/testsuite/gcc.target/i386/mmx-check.h b/gcc/testsuite/gcc.target/i386/mmx-check.h index aefdc4e8799..faf9b876f38 100644 --- a/gcc/testsuite/gcc.target/i386/mmx-check.h +++ b/gcc/testsuite/gcc.target/i386/mmx-check.h @@ -5,6 +5,13 @@ static void mmx_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + mmx_test (); +} + int main () { @@ -15,7 +22,7 @@ main () /* Run MMX test only if host has MMX support. */ if (edx & bit_MMX) - mmx_test (); + do_test (); return 0; } diff --git a/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h b/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h index de633336157..550e49904d9 100644 --- a/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h +++ b/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h @@ -6,6 +6,13 @@ static void pclmul_avx_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + pclmul_avx_test (); +} + int main () { @@ -17,7 +24,7 @@ main () /* Run PCLMUL + AVX test only if host has PCLMUL + AVX support. */ if ((ecx & (bit_AVX | bit_PCLMUL)) == (bit_AVX | bit_PCLMUL)) { - pclmul_avx_test (); + do_test (); #ifdef DEBUG printf ("PASSED\n"); #endif diff --git a/gcc/testsuite/gcc.target/i386/pclmul-check.h b/gcc/testsuite/gcc.target/i386/pclmul-check.h index 706fd640034..7526cbe2ddf 100644 --- a/gcc/testsuite/gcc.target/i386/pclmul-check.h +++ b/gcc/testsuite/gcc.target/i386/pclmul-check.h @@ -5,6 +5,13 @@ static void pclmul_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + pclmul_test (); +} + int main () { @@ -16,7 +23,7 @@ main () /* Run PCLMULQDQ test only if host has PCLMULQDQ support. */ if (ecx & bit_PCLMUL) { - pclmul_test (); + do_test (); #ifdef DEBUG printf ("PASSED\n"); #endif diff --git a/gcc/testsuite/gcc.target/i386/pr27971.c b/gcc/testsuite/gcc.target/i386/pr27971.c index 8c706adda59..27888de6d2f 100644 --- a/gcc/testsuite/gcc.target/i386/pr27971.c +++ b/gcc/testsuite/gcc.target/i386/pr27971.c @@ -3,7 +3,13 @@ unsigned array[4]; -unsigned foo(unsigned long x) +#ifdef _WIN64 +__extension__ typedef unsigned long long TYPE; +#else +#define TYPE unsigned long +#endif + +unsigned foo(TYPE x) { return array[(x>>2)&3ul]; } diff --git a/gcc/testsuite/gcc.target/i386/pr39139.c b/gcc/testsuite/gcc.target/i386/pr39139.c index 95ea7fda9ba..e4cb845f9ec 100644 --- a/gcc/testsuite/gcc.target/i386/pr39139.c +++ b/gcc/testsuite/gcc.target/i386/pr39139.c @@ -12,22 +12,24 @@ # define SI_REG asm ("esi") #endif +__extension__ typedef __SIZE_TYPE__ size_t; + static inline int foo (unsigned int x, void *y) { - register unsigned long r AX_REG; - register unsigned long a1 DI_REG; - register unsigned long a2 SI_REG; - a1 = (unsigned long) x; - a2 = (unsigned long) y; + register size_t r AX_REG; + register size_t a1 DI_REG; + register size_t a2 SI_REG; + a1 = (size_t) x; + a2 = (size_t) y; asm volatile ("" : "=r" (r), "+r" (a1), "+r" (a2) : : "memory"); return (int) r; } -struct T { unsigned long t1, t2; unsigned int t3, t4, t5; }; +struct T { size_t t1, t2; unsigned int t3, t4, t5; }; int -bar (unsigned long x, unsigned int y, unsigned long u, unsigned int v) +bar (size_t x, unsigned int y, size_t u, unsigned int v) { long r; struct T e = { .t1 = x, .t2 = u }; diff --git a/gcc/testsuite/gcc.target/i386/pr39315-check.c b/gcc/testsuite/gcc.target/i386/pr39315-check.c index ff926057536..8f7376015d0 100644 --- a/gcc/testsuite/gcc.target/i386/pr39315-check.c +++ b/gcc/testsuite/gcc.target/i386/pr39315-check.c @@ -1,4 +1,6 @@ +/* { dg-compile } */ typedef float __m128 __attribute__ ((__vector_size__ (16))); +__extension__ typedef __PTRDIFF_TYPE__ ptrdiff_t; extern void foo (__m128 *); extern void abort (void); @@ -8,7 +10,7 @@ __m128 y = { 0.0, 1.0, 2.0, 3.0 }; void bar (__m128 *x, int align) { - if ((((__PTRDIFF_TYPE__) x) & (align - 1)) != 0) + if ((((ptrdiff_t) x) & (align - 1)) != 0) abort (); if (__builtin_memcmp (x, &y, sizeof (y)) != 0) abort (); diff --git a/gcc/testsuite/gcc.target/i386/sse-check.h b/gcc/testsuite/gcc.target/i386/sse-check.h index 79ea4815517..85629cc71b9 100644 --- a/gcc/testsuite/gcc.target/i386/sse-check.h +++ b/gcc/testsuite/gcc.target/i386/sse-check.h @@ -6,6 +6,13 @@ static void sse_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + sse_test (); +} + int main () { @@ -16,7 +23,7 @@ main () /* Run SSE test only if host has SSE support. */ if (edx & bit_SSE) - sse_test (); + do_test (); return 0; } diff --git a/gcc/testsuite/gcc.target/i386/sse2-check.h b/gcc/testsuite/gcc.target/i386/sse2-check.h index a69333e391a..e9f17f04079 100644 --- a/gcc/testsuite/gcc.target/i386/sse2-check.h +++ b/gcc/testsuite/gcc.target/i386/sse2-check.h @@ -4,6 +4,13 @@ static void sse2_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + sse2_test (); +} + int main () { @@ -14,7 +21,7 @@ main () /* Run SSE2 test only if host has SSE2 support. */ if (edx & bit_SSE2) - sse2_test (); + do_test (); return 0; } diff --git a/gcc/testsuite/gcc.target/i386/sse3-check.h b/gcc/testsuite/gcc.target/i386/sse3-check.h index 92930d10a3f..df0e63a4575 100644 --- a/gcc/testsuite/gcc.target/i386/sse3-check.h +++ b/gcc/testsuite/gcc.target/i386/sse3-check.h @@ -5,6 +5,13 @@ static void sse3_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + sse3_test (); +} + int main () { @@ -15,7 +22,7 @@ main () /* Run SSE3 test only if host has SSE3 support. */ if (ecx & bit_SSE3) - sse3_test (); + do_test (); return 0; } diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-check.h b/gcc/testsuite/gcc.target/i386/sse4_1-check.h index 2d1c4e835a3..788f65d61cb 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-check.h +++ b/gcc/testsuite/gcc.target/i386/sse4_1-check.h @@ -7,6 +7,13 @@ static void sse4_1_test (void); #define MASK 0x2 +static void +__attribute__ ((noinline)) +do_test (void) +{ + sse4_1_test (); +} + int main () { @@ -17,7 +24,7 @@ main () /* Run SSE4.1 test only if host has SSE4.1 support. */ if (ecx & bit_SSE4_1) - sse4_1_test (); + do_test (); return 0; } diff --git a/gcc/testsuite/gcc.target/i386/sse4_2-check.h b/gcc/testsuite/gcc.target/i386/sse4_2-check.h index 2a397e88683..d10e6c7d7e2 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_2-check.h +++ b/gcc/testsuite/gcc.target/i386/sse4_2-check.h @@ -5,6 +5,13 @@ static void sse4_2_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + sse4_2_test (); +} + int main () { @@ -15,7 +22,7 @@ main () /* Run SSE4.2 test only if host has SSE4.2 support. */ if (ecx & bit_SSE4_2) - sse4_2_test (); + do_test (); return 0; } diff --git a/gcc/testsuite/gcc.target/i386/sse4a-check.h b/gcc/testsuite/gcc.target/i386/sse4a-check.h index d6140e8969c..d43b4b222b1 100644 --- a/gcc/testsuite/gcc.target/i386/sse4a-check.h +++ b/gcc/testsuite/gcc.target/i386/sse4a-check.h @@ -5,6 +5,13 @@ static void sse4a_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + sse4a_test (); +} + int main () { @@ -15,7 +22,7 @@ main () /* Run SSE4a test only if host has SSE4a support. */ if (ecx & bit_SSE4a) - sse4a_test (); + do_test (); return 0; } diff --git a/gcc/testsuite/gcc.target/i386/ssse3-check.h b/gcc/testsuite/gcc.target/i386/ssse3-check.h index 78df15db7d7..3ca79333c7f 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-check.h +++ b/gcc/testsuite/gcc.target/i386/ssse3-check.h @@ -5,6 +5,13 @@ static void ssse3_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + ssse3_test (); +} + int main () { @@ -15,7 +22,7 @@ main () /* Run SSSE3 test only if host has SSSE3 support. */ if (ecx & bit_SSSE3) - ssse3_test (); + do_test (); return 0; } diff --git a/gcc/testsuite/gcc.target/i386/vararg-1.c b/gcc/testsuite/gcc.target/i386/vararg-1.c index cfb1e30ab07..9ed9ab087d0 100644 --- a/gcc/testsuite/gcc.target/i386/vararg-1.c +++ b/gcc/testsuite/gcc.target/i386/vararg-1.c @@ -1,6 +1,7 @@ /* PR middle-end/36858 */ /* { dg-do run } */ /* { dg-options "-w" { target { lp64 } } } */ +/* { dg-options "-w" { target { llp64 } } } */ /* { dg-options "-w -msse2 -mpreferred-stack-boundary=2" { target { ilp32 } } } */ /* { dg-require-effective-target sse2 } */ diff --git a/gcc/testsuite/gcc.target/i386/vararg-2.c b/gcc/testsuite/gcc.target/i386/vararg-2.c index 60793173d6c..804801256f1 100644 --- a/gcc/testsuite/gcc.target/i386/vararg-2.c +++ b/gcc/testsuite/gcc.target/i386/vararg-2.c @@ -1,6 +1,7 @@ /* PR middle-end/36859 */ /* { dg-do run } */ /* { dg-options "-w" { target { lp64 } } } */ +/* { dg-options "-w" { target { llp64 } } } */ /* { dg-options "-w -msse2 -mpreferred-stack-boundary=2" { target { ilp32 } } } */ /* { dg-require-effective-target sse2 } */ diff --git a/gcc/testsuite/gcc.target/i386/xop-check.h b/gcc/testsuite/gcc.target/i386/xop-check.h index fb98c6d4bd4..7e8e665c79f 100644 --- a/gcc/testsuite/gcc.target/i386/xop-check.h +++ b/gcc/testsuite/gcc.target/i386/xop-check.h @@ -5,6 +5,13 @@ static void xop_test (void); +static void +__attribute__ ((noinline)) +do_test (void) +{ + xop_test (); +} + int main () { @@ -15,7 +22,7 @@ main () /* Run XOP test only if host has XOP support. */ if (ecx & bit_XOP) - xop_test (); + do_test (); exit (0); } -- 2.30.2