From 1d9fec7937f45dde5e04cac966a2d9a12f2fc15a Mon Sep 17 00:00:00 2001 From: Yiran Wang Date: Tue, 23 Jun 2015 15:33:17 -0700 Subject: Synchronize with google/gcc-4_9 to r224707 (from r214835) Change-Id: I3d6f06fc613c8f8b6a82143dc44b7338483aac5d --- .../gcc/testsuite/gcc.target/i386/avx2-pr64286.c | 37 +++++++ .../gcc.target/i386/avx256-unaligned-load-7.c | 6 +- .../gcc.target/i386/avx256-unaligned-store-7.c | 4 +- .../gcc/testsuite/gcc.target/i386/bmi2-bzhi-2.c | 67 ++++++++++++ .../testsuite/gcc.target/i386/memcpy-strategy-4.c | 21 ++++ .../testsuite/gcc.target/i386/memset-strategy-2.c | 10 ++ gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-1.c | 13 +++ gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-2.c | 13 +++ gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-3.c | 12 +++ gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-4.c | 11 ++ .../testsuite/gcc.target/i386/pie-copyrelocs-1.c | 11 +- .../testsuite/gcc.target/i386/pie-copyrelocs-2.c | 13 +-- .../testsuite/gcc.target/i386/pie-copyrelocs-3.c | 14 +++ .../testsuite/gcc.target/i386/pie-copyrelocs-4.c | 17 +++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr57003.c | 2 +- gcc-4.9/gcc/testsuite/gcc.target/i386/pr59927.c | 2 +- gcc-4.9/gcc/testsuite/gcc.target/i386/pr60516.c | 2 +- gcc-4.9/gcc/testsuite/gcc.target/i386/pr63285.c | 28 +++++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr63448.c | 120 +++++++++++++++++++++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr63495.c | 6 ++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr63538.c | 13 +++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr63661.c | 80 ++++++++++++++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr63947.c | 9 ++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr64409.c | 6 ++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr64513.c | 17 +++ 25 files changed, 515 insertions(+), 19 deletions(-) create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-pr64286.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi-2.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/memset-strategy-2.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-1.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-2.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-3.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-4.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-3.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-4.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr63285.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr63448.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr63495.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr63538.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr63661.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr63947.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr64409.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr64513.c (limited to 'gcc-4.9/gcc/testsuite/gcc.target/i386') diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-pr64286.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-pr64286.c new file mode 100644 index 000000000..2edb3210c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-pr64286.c @@ -0,0 +1,37 @@ +/* PR rtl-optimization/64286 */ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx2" } */ +/* { dg-require-effective-target avx2 } */ + +#include +#include +#include +#include "avx2-check.h" + +__m128i v; +__m256i w; + +__attribute__((noinline, noclone)) void +foo (__m128i *p, __m128i *q) +{ + __m128i a = _mm_loadu_si128 (p); + __m128i b = _mm_xor_si128 (a, v); + w = _mm256_cvtepu8_epi16 (a); + *q = b; +} + +static void +avx2_test (void) +{ + v = _mm_set1_epi8 (0x40); + __m128i c = _mm_set_epi8 (16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1); + __m128i d; + foo (&c, &d); + __m128i e = _mm_set_epi8 (0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, + 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41); + __m256i f = _mm256_set_epi16 (16, 15, 14, 13, 12, 11, 10, 9, + 8, 7, 6, 5, 4, 3, 2, 1); + if (memcmp (&w, &f, sizeof (w)) != 0 + || memcmp (&d, &e, sizeof (d)) != 0) + abort (); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c index ad16a5329..d8730dc09 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c @@ -33,7 +33,7 @@ avx_test (void) cp = mp; dp = lp; - for (i = N; i >= 0; i--) + for (i = N; i > 0; i--) { *cp++ = str; *dp++ = str; @@ -44,13 +44,13 @@ avx_test (void) cp = mp; dp = lp; - for (i = N; i >= 0; i--) + for (i = N; i > 0; i--) { *ap++ = *cp++; *bp++ = *dp++; } - for (i = N; i >= 0; i--) + for (i = N; i > 0; i--) { if (strcmp (*--ap, "STR") != 0) abort (); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c index 4272dc3cd..5ec14947f 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c @@ -29,13 +29,13 @@ avx_test (void) ap = ep; bp = fp; - for (i = N; i >= 0; i--) + for (i = N; i > 0; i--) { *ap++ = str; *bp++ = str; } - for (i = N; i >= 0; i--) + for (i = N; i > 0; i--) { if (strcmp (*--ap, "STR") != 0) abort (); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi-2.c new file mode 100644 index 000000000..34579d526 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi-2.c @@ -0,0 +1,67 @@ +/* PR target/65368 */ +/* { dg-do assemble { target bmi2 } } */ +/* { dg-options "-O2 -mbmi2" } */ + +#include +#include "bmi2-check.h" + +unsigned int a; +unsigned long long b; + +#define A __attribute__((noinline, noclone)) + +A unsigned int f1 (void) { return _bzhi_u32 (a, 0); } +A unsigned int f2 (unsigned int x) { return _bzhi_u32 (x, 0); } +A unsigned int f3 (void) { return _bzhi_u32 (a, 5); } +A unsigned int f4 (unsigned int x) { return _bzhi_u32 (x, 5); } +A unsigned int f5 (void) { return _bzhi_u32 (a, 31); } +A unsigned int f6 (unsigned int x) { return _bzhi_u32 (x, 31); } +A unsigned int f7 (void) { return _bzhi_u32 (a, 32); } +A unsigned int f8 (unsigned int x) { return _bzhi_u32 (x, 32); } +A unsigned int f9 (void) { return _bzhi_u32 (a, 37); } +A unsigned int f10 (unsigned int x) { return _bzhi_u32 (x, 37); } +A unsigned int f11 (void) { return _bzhi_u32 (a, 257); } +A unsigned int f12 (unsigned int x) { return _bzhi_u32 (x, 257); } +A unsigned int f13 (void) { return _bzhi_u32 (a, 289); } +A unsigned int f14 (unsigned int x) { return _bzhi_u32 (x, 289); } +#ifdef __x86_64__ +A unsigned long long f21 (void) { return _bzhi_u64 (b, 0); } +A unsigned long long f22 (unsigned long long x) { return _bzhi_u64 (x, 0); } +A unsigned long long f23 (void) { return _bzhi_u64 (b, 5); } +A unsigned long long f24 (unsigned long long x) { return _bzhi_u64 (x, 5); } +A unsigned long long f25 (void) { return _bzhi_u64 (b, 63); } +A unsigned long long f26 (unsigned long long x) { return _bzhi_u64 (x, 63); } +A unsigned long long f27 (void) { return _bzhi_u64 (b, 64); } +A unsigned long long f28 (unsigned long long x) { return _bzhi_u64 (x, 64); } +A unsigned long long f29 (void) { return _bzhi_u64 (b, 69); } +A unsigned long long f30 (unsigned long long x) { return _bzhi_u64 (x, 69); } +A unsigned long long f31 (void) { return _bzhi_u64 (b, 257); } +A unsigned long long f32 (unsigned long long x) { return _bzhi_u64 (x, 257); } +A unsigned long long f33 (void) { return _bzhi_u64 (b, 321); } +A unsigned long long f34 (unsigned long long x) { return _bzhi_u64 (x, 321); } +#endif + +static void +bmi2_test () +{ + a = -1U; + b = -1ULL; + if (f1 () != 0 || f2 (-1U) != 0 + || f3 () != 0x1f || f4 (-1U) != 0x1f + || f5 () != 0x7fffffffU || f6 (-1U) != 0x7fffffffU + || f7 () != -1U || f8 (-1U) != -1U + || f9 () != -1U || f10 (-1U) != -1U + || f11 () != 1 || f12 (-1U) != 1 + || f13 () != -1U || f14 (-1U) != -1U) + abort (); +#ifdef __x86_64__ + if (f21 () != 0 || f22 (-1ULL) != 0 + || f23 () != 0x1f || f24 (-1ULL) != 0x1f + || f25 () != 0x7fffffffffffffffULL || f26 (-1ULL) != 0x7fffffffffffffffULL + || f27 () != -1ULL || f28 (-1ULL) != -1ULL + || f29 () != -1ULL || f30 (-1ULL) != -1ULL + || f31 () != 1 || f32 (-1ULL) != 1 + || f33 () != -1ULL || f34 (-1ULL) != -1ULL) + abort (); +#endif +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c new file mode 100644 index 000000000..5c51248b5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c @@ -0,0 +1,21 @@ +/* PR target/64200 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=atom -mmemcpy-strategy=libcall:-1:align -minline-stringops-dynamically" } */ + +#include + +extern void bar(char *x); + +void foo (int size, ...) +{ + struct + { + char x[size]; + } d; + + va_list ap; + va_start(ap, size); + d = va_arg(ap, typeof (d)); + va_end(ap); + bar(d.x); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-strategy-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-strategy-2.c new file mode 100644 index 000000000..aafa54d00 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-strategy-2.c @@ -0,0 +1,10 @@ +/* PR target/64108 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=atom -mmemset-strategy=libcall:-1:align -minline-all-stringops" } */ + +char a[2048]; +void t (void) +{ + __builtin_memset (a, 1, 2048); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-1.c new file mode 100644 index 000000000..d9e5d6ea7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target x86_64-*-linux* } } */ +/* { dg-options "-fno-pic" } */ + +__attribute__ ((noplt)) +void foo(); + +int main() +{ + foo(); + return 0; +} + +/* { dg-final { scan-assembler "call\[ \t\]\\*.*foo.*@GOTPCREL\\(%rip\\)" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-2.c new file mode 100644 index 000000000..4df0618b6 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-2.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target x86_64-*-linux* } } */ +/* { dg-options "-O2 -fno-pic" } */ + + +__attribute__ ((noplt)) +int foo(); + +int main() +{ + return foo(); +} + +/* { dg-final { scan-assembler "jmp\[ \t\]\\*.*foo.*@GOTPCREL\\(%rip\\)" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-3.c new file mode 100644 index 000000000..e2a6f9386 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-3.c @@ -0,0 +1,12 @@ +/* { dg-do compile { target x86_64-*-linux* } } */ +/* { dg-options "-fno-pic -fno-plt" } */ + +void foo(); + +int main() +{ + foo(); + return 0; +} + +/* { dg-final { scan-assembler "call\[ \t\]\\*.*foo.*@GOTPCREL\\(%rip\\)" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-4.c new file mode 100644 index 000000000..d9039dd77 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/noplt-4.c @@ -0,0 +1,11 @@ +/* { dg-do compile { target x86_64-*-linux* } } */ +/* { dg-options "-O2 -fno-pic -fno-plt" } */ + +int foo(); + +int main() +{ + return foo(); +} + +/* { dg-final { scan-assembler "jmp\[ \t\]\\*.*foo.*@GOTPCREL\\(%rip\\)" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c index ae339bd9e..7af851bde 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c @@ -1,6 +1,7 @@ -/* Test if -mcopyrelocs does the right thing. */ -/* { dg-do compile } */ -/* { dg-options "-O2 -fpie -mcopyrelocs" } */ +/* Check that GOTPCREL isn't used to access glob_a. */ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-require-effective-target pie_copyreloc } */ +/* { dg-options "-O2 -fpie" } */ extern int glob_a; @@ -9,5 +10,5 @@ int foo () return glob_a; } -/* glob_a should never be accessed with a GOTPCREL */ -/* { dg-final { scan-assembler-not "glob_a\\@GOTPCREL" { target { x86_64-*-* } } } } */ +/* glob_a should never be accessed with a GOTPCREL. */ +/* { dg-final { scan-assembler-not "glob_a@GOTPCREL" { target { ! ia32 } } } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c index ed60d0329..19cb97e88 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c @@ -1,13 +1,14 @@ -/* Test if -mno-copyrelocs does the right thing. */ -/* { dg-do compile } */ -/* { dg-options "-O2 -fpie -mno-copyrelocs" } */ +/* Check that GOTPCREL isn't used to access glob_a. */ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-require-effective-target pie_copyreloc } */ +/* { dg-options "-O2 -fpie" } */ -extern int glob_a; +int glob_a; int foo () { return glob_a; } -/* glob_a should always be accessed via GOT */ -/* { dg-final { scan-assembler "glob_a\\@GOT" { target { x86_64-*-* } } } } */ +/* glob_a should never be accessed with a GOTPCREL. */ +/* { dg-final { scan-assembler-not "glob_a@GOTPCREL" { target { ! ia32 } } } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-3.c new file mode 100644 index 000000000..c2fa8968e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-3.c @@ -0,0 +1,14 @@ +/* Check that PLT is used to access glob_a. */ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-require-effective-target pie_copyreloc } */ +/* { dg-options "-O2 -fpie" } */ + +extern int glob_a (void); + +int foo () +{ + return glob_a (); +} + +/* glob_a should be accessed with a PLT. */ +/* { dg-final { scan-assembler "glob_a@PLT" { target { ! ia32 } } } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-4.c new file mode 100644 index 000000000..413cdf381 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-4.c @@ -0,0 +1,17 @@ +/* Check that GOTPCREL is used to access glob_a. */ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-require-effective-target pie_copyreloc } */ +/* { dg-options "-O2 -fpie" } */ + +extern int glob_a __attribute__((weak)); + +int foo () +{ + if (&glob_a != 0) + return glob_a; + else + return 0; +} + +/* weak glob_a should be accessed with a GOTPCREL. */ +/* { dg-final { scan-assembler "glob_a@GOTPCREL" { target { ! ia32 } } } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr57003.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr57003.c index dfa6b8b50..08a743dda 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr57003.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr57003.c @@ -1,5 +1,5 @@ /* PR rtl-optimization/57003 */ -/* { dg-do run } */ +/* { dg-do run { target { ! x32 } } } */ /* { dg-options "-O2" } */ #define N 2001 diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59927.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59927.c index 693c76595..afb53069b 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59927.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59927.c @@ -1,5 +1,5 @@ /* PR target/59927 */ -/* { dg-do compile } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-O2 -g" } */ extern void baz (int) __attribute__ ((__ms_abi__)); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60516.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60516.c index 575c8b61d..d7e11161c 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60516.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60516.c @@ -1,5 +1,5 @@ /* PR target/60516 */ -/* { dg-do compile } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-O2" } */ struct S { char c[65536]; }; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63285.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63285.c new file mode 100644 index 000000000..e4df8fb92 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63285.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fcompare-debug" } */ + +struct S { int a; }; +struct T { int b, c; } a; +long b; +int c, d; +void bar (int, int); +void baz (void *, int); + +void +foo (struct S *x, int y, int z, void *f, int *p, struct T *e) +{ + while (x) + { + baz (f, &d > p); + if (z & 1) + bar (f > (void *) &f, z); + } + if (c) + { + asm ("" : "+m" (a) : "i" (0)); + y--; + } + if (e->b == e->c) + c = y; + y--; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63448.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63448.c new file mode 100644 index 000000000..3f8262e87 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63448.c @@ -0,0 +1,120 @@ +/* PR rtl-optimization/63448 */ +/* { dg-do compile } */ +/* { dg-options "-O -std=c99" } */ + +int a, d, e, g, h, j; +float b, c, k, l, m, n; +int *__restrict i; +void +foo (void) +{ + int o = e; + int *p; + float *q, *r = (float *) 0x1234000; + float s, t, u, v, w, x; + do + { + for (a = o; a; a--) + { + s += m; + t += n; + u += m; + v += n; + w += d; + x += d; + n = l; + s += r[1]; + t += n; + v += r[1]; + m = k * r[4]; + n = q[0] * r[4]; + s += m; + m = q[1] * r[4]; + t += n; + q += g; + k = *q; + n = q[1] * r[4]; + s += m; + t += n; + u += r[4]; + m = q[8] * r[4]; + q += 1; + n = q[1] * r[4]; + s += m; + m = q[4]; + t += n; + q += g; + w += m; + m = k * r[4]; + s += m; + t += q[0]; + m = q[1] * r[4]; + v += q[0]; + n = q[10] * r[4]; + s += m; + t += n; + u += b; + m = q[8] * r[4]; + n = q[2] * r[4]; + s += m; + m = q[4] * r[4]; + t += n; + q++; + n = q[2] * r[16]; + s += m; + m = q[4]; + t += n; + s += m; + t += r[6]; + q += g; + k = *q; + w += m; + m = k * r[20]; + x += r[16]; + n = q[1] * r[20]; + s += m; + t += n; + q += g; + k = *q; + w += m; + m = k * r[2]; + n = q[1] * r[22]; + s += m; + m = q[4]; + t += n; + q += g; + s += m; + t += q[0]; + s += m; + u += m; + n = q[1] * r[22]; + s += m; + m = q[4] * r[22]; + t += n; + q += g; + k = 1; + w += m; + c = q[10]; + x += r[22]; + s += m; + t += r[22]; + u += m; + v += r[22]; + n = q[10] * r[30]; + d = r[32]; + l = q[1]; + b = 0; + w += m; + m = r[32]; + x += n; + r = 0; + } + *i = s; + p[0] = t; + p[1] = u; + p[6] = v; + p[8] = w; + p[10] = x; + } + while (j); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63495.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63495.c new file mode 100644 index 000000000..7f02f37d8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63495.c @@ -0,0 +1,6 @@ +/* PR c/63495 */ +/* { dg-do compile { target { i?86-*-linux* x86_64-*-linux* } } } */ +/* { dg-options "-std=gnu11" } */ + +struct __attribute__ ((aligned (8))) S { char c; }; +_Static_assert (_Alignof (struct S) >= 8, "wrong alignment"); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63538.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63538.c new file mode 100644 index 000000000..7b979c35d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63538.c @@ -0,0 +1,13 @@ +/* PR target/63538 */ +/* { dg-do compile } */ +/* { dg-require-effective-target lp64 } */ +/* { dg-options "-O2 -mcmodel=medium -mlarge-data-threshold=0" } */ + +static char *str = "Hello World"; + +char *foo () +{ + return str; +} + +/* { dg-final { scan-assembler "movabs" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63661.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63661.c new file mode 100644 index 000000000..a5ffd2f4f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63661.c @@ -0,0 +1,80 @@ +/* PR target/63661 */ +/* { dg-do run } */ +/* { dg-require-effective-target fpic } */ +/* { dg-options "-mtune=nehalem -fPIC -O2" } */ + +static void __attribute__((noinline,noclone,hot)) +foo (double a, double q, double *ff, double *gx, int e, int ni) +{ + union + { + double n; + unsigned long long o; + } punner; + double d; + + punner.n = q; + __builtin_printf("B: 0x%016llx ---- %g\n", punner.o, q); + + d = q - 5; + if(d < 0) + d = -d; + if (d > 0.1) + __builtin_abort(); +} + +static int __attribute__((noinline,noclone,hot)) +bar (int order, double q, double c[]) +{ + int ni, nn, i, e; + double g2, x2, de, s, ratio, ff; + + nn = 0; + e = order & 1; + s = 0; + ratio = 0; + x2 = 0; + g2 = 0; + + if(q == 0.0) + return 0; + + if (order < 5) + { + ratio = 1.0 / q; + nn = order; + } + + ni = -nn; + + while(1) + { + de = ratio - g2 - x2; + + foo (0, q, &ff, &g2, e, ni); + + if((int)de == 0) + break; + } + + s += 2 * nn * c[nn]; + + for (i = 0; i < 1; i++) + { + c[0] = nn; + for (; i < 10; i++) + c[i] = 0.0; + c[0] /= s; + } + + return 0; +} + +int +main () +{ + double c[1000]; + + bar (1, 5.0, c); + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63947.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63947.c new file mode 100644 index 000000000..3c0a67a73 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr63947.c @@ -0,0 +1,9 @@ +/* PR target/63947 */ +/* { dg-do assemble } */ +/* { dg-options "-Os" } */ +/* { dg-additional-options "-march=i686" { target ia32 } } */ + +long double foo (unsigned a, unsigned b) +{ + return a + b < a; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr64409.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr64409.c new file mode 100644 index 000000000..6a64b5961 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr64409.c @@ -0,0 +1,6 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-require-effective-target maybe_x32 } */ +/* { dg-options "-O0 -mx32" } */ + +int a; +int* __attribute__ ((ms_abi)) fn1 () { return &a; } /* { dg-error "X32 does not support ms_abi attribute" } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr64513.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr64513.c new file mode 100644 index 000000000..023649609 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr64513.c @@ -0,0 +1,17 @@ +/* PR target/64513 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -mstack-arg-probe" } */ + +struct A {}; +struct B { struct A y; }; +int foo (struct A); + +int +bar (int x) +{ + struct B b; + int c; + while (x--) + c = foo (b.y); + return c; +} -- cgit v1.2.3