From e97c99f15937e5762a973b25192aab824126a6d3 Mon Sep 17 00:00:00 2001 From: Rong Xu Date: Tue, 2 Sep 2014 15:29:57 -0700 Subject: [gcc-4.9] Merge svn r214745 from google/gcc-4_9 branch. Merge gcc-4_9 source r214745 from google/gcc-4_9 branch. Change-Id: Ie6fa0fd72f4b4eec3adc4db4bb922e652d1c2605 --- .../gcc/testsuite/gcc.target/arm/frame-pointer-1.c | 1 + .../testsuite/gcc.target/arm/neon-vext-execute.c | 1 + gcc-4.9/gcc/testsuite/gcc.target/arm/pr56184.C | 1 + gcc-4.9/gcc/testsuite/gcc.target/arm/pr58784.c | 1 + gcc-4.9/gcc/testsuite/gcc.target/arm/pr59896.c | 1 + gcc-4.9/gcc/testsuite/gcc.target/arm/pr59985.C | 1 + .../gcc/testsuite/gcc.target/arm/stack-red-zone.c | 1 + .../gcc.target/arm/thumb-find-work-register.c | 1 + .../gcc.target/i386/avx512f-vfixupimmpd-2.c | 7 +-- .../gcc.target/i386/avx512f-vfixupimmps-2.c | 6 +-- .../gcc.target/i386/avx512f-vfixupimmsd-2.c | 6 +-- .../gcc.target/i386/avx512f-vfixupimmss-2.c | 6 +-- .../testsuite/gcc.target/i386/avx512f-vpermi2d-2.c | 1 - .../gcc.target/i386/avx512f-vpermi2pd-2.c | 1 - .../gcc.target/i386/avx512f-vpermi2ps-2.c | 1 - .../testsuite/gcc.target/i386/avx512f-vpermi2q-2.c | 1 - .../testsuite/gcc.target/i386/avx512f-vpermt2d-2.c | 1 - .../gcc.target/i386/avx512f-vpermt2pd-2.c | 1 - .../gcc.target/i386/avx512f-vpermt2ps-2.c | 1 - .../testsuite/gcc.target/i386/avx512f-vpermt2q-2.c | 1 - gcc-4.9/gcc/testsuite/gcc.target/i386/pr61794.c | 12 ++++++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr61801.c | 21 +++++++++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr61855.c | 10 +++++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr61923.c | 36 ++++++++++++++++ .../testsuite/gcc.target/i386/xop-imul64-vector.c | 1 - .../gcc/testsuite/gcc.target/mips/pr62030-octeon.c | 50 ++++++++++++++++++++++ .../gcc.target/powerpc/ppc64-abi-warn-1.c | 12 ++++++ .../gcc.target/powerpc/ppc64-abi-warn-2.c | 11 +++++ .../gcc.target/powerpc/ppc64-abi-warn-3.c | 9 ++++ gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60102.c | 11 +++++ gcc-4.9/gcc/testsuite/gcc.target/sh/pr61996.c | 12 ++++++ 31 files changed, 205 insertions(+), 21 deletions(-) create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr61794.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr61801.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr61855.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr61923.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/mips/pr62030-octeon.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60102.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/sh/pr61996.c (limited to 'gcc-4.9/gcc/testsuite/gcc.target') diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/frame-pointer-1.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/frame-pointer-1.c index bb1888e38..c288fef83 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/frame-pointer-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/frame-pointer-1.c @@ -1,6 +1,7 @@ /* Check local register variables using a register conventionally used as the frame pointer aren't clobbered under high register pressure. */ /* { dg-do run } */ +/* { dg-skip-if "incompatible options" { ! { arm_thumb1_ok || arm_thumb2_ok } } { "*" } { "" } } */ /* { dg-options "-Os -mthumb -fomit-frame-pointer" } */ #include diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/neon-vext-execute.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/neon-vext-execute.c index 3d6c28cca..8e44d9ad5 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/neon-vext-execute.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/neon-vext-execute.c @@ -1,5 +1,6 @@ /* { dg-do run } */ /* { dg-require-effective-target arm_neon_ok } */ +/* { dg-require-effective-target arm_neon_hw } */ /* { dg-require-effective-target arm_little_endian } */ /* { dg-options "-O2" } */ /* { dg-add-options arm_neon } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr56184.C b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr56184.C index d44c1b432..5d23c40c5 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr56184.C +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr56184.C @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "incompatible options" { ! { arm_thumb1_ok || arm_thumb2_ok } } { "*" } { "" } } */ /* { dg-options "-fno-short-enums -O2 -mthumb -march=armv7-a -mfpu=neon -mfloat-abi=softfp -mtune=cortex-a9 -fno-section-anchors" } */ typedef unsigned int size_t; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr58784.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr58784.c index e3ef950b4..9a1fcff1c 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr58784.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr58784.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "incompatible options" { arm_thumb1 } { "*" } { "" } } */ /* { dg-options "-march=armv7-a -mfloat-abi=hard -mfpu=neon -marm -O2" } */ typedef struct __attribute__ ((__packed__)) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59896.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59896.c index 5896e7379..ea6dc248b 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59896.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59896.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "incompatible options" { ! { arm_thumb1_ok || arm_thumb2_ok } } { "*" } { "" } } */ /* { dg-options "-mthumb -O2" } */ typedef unsigned int size_t; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59985.C b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59985.C index cc688a965..1351c486f 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59985.C +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59985.C @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "incompatible options" { arm_thumb1 } { "*" } { "" } } */ /* { dg-options "-g -fcompare-debug -O2 -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mfloat-abi=hard" } */ extern void *f1 (unsigned long, unsigned long); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/stack-red-zone.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/stack-red-zone.c index b9f0f9937..8db2e2c09 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/stack-red-zone.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/stack-red-zone.c @@ -1,4 +1,5 @@ /* No stack red zone. PR38644. */ +/* { dg-skip-if "incompatible options" { ! { arm_thumb1_ok || arm_thumb2_ok } } { "*" } { "" } } */ /* { dg-options "-mthumb -O2" } */ /* { dg-final { scan-assembler "ldrb\[^\n\]*\\n\[\t \]*add\[\t \]*sp" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/thumb-find-work-register.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/thumb-find-work-register.c index f2c0225a4..e67a627ea 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/thumb-find-work-register.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/thumb-find-work-register.c @@ -1,5 +1,6 @@ /* Wrong method to get number of arg reg will cause argument corruption. */ /* { dg-do run } */ +/* { dg-skip-if "incompatible options" { ! { arm_thumb1_ok || arm_thumb2_ok } } { "*" } { "" } } */ /* { dg-require-effective-target arm_eabi } */ /* { dg-options "-mthumb -O1" } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c index d4ddd3214..995b446d8 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c @@ -10,7 +10,8 @@ #define SIZE (AVX512F_LEN / 64) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" +#include "float.h" + static void CALC (double *r, double src, long long tbl) @@ -60,10 +61,10 @@ CALC (double *r, double src, long long tbl) *r = M_PI_2; break; case 14: - *r = MAXDOUBLE; + *r = DBL_MAX; break; case 15: - *r = -MAXDOUBLE; + *r = -DBL_MAX; break; default: abort (); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c index 6c2539d0f..edb149cf5 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c @@ -10,7 +10,7 @@ #define SIZE (AVX512F_LEN / 32) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" +#include "float.h" static void CALC (float *r, float src, int tbl) @@ -60,10 +60,10 @@ CALC (float *r, float src, int tbl) *r = M_PI_2; break; case 14: - *r = MAXFLOAT; + *r = FLT_MAX; break; case 15: - *r = -MAXFLOAT; + *r = -FLT_MAX; break; default: abort (); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c index 1344c7fd1..1b66a9821 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c @@ -6,7 +6,7 @@ #include "avx512f-check.h" #include "avx512f-helper.h" #include -#include +#include #include "avx512f-mask-type.h" void @@ -57,10 +57,10 @@ compute_fixupimmpd (double *r, double src, long long tbl) *r = M_PI_2; break; case 14: - *r = MAXDOUBLE; + *r = DBL_MAX; break; case 15: - *r = -MAXDOUBLE; + *r = -DBL_MAX; break; default: abort (); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c index 25e165ff5..87883ba6a 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c @@ -6,7 +6,7 @@ #include "avx512f-check.h" #include "avx512f-helper.h" #include -#include +#include #include "avx512f-mask-type.h" void @@ -57,10 +57,10 @@ compute_fixupimmps (float *r, float src, int tbl) *r = M_PI_2; break; case 14: - *r = MAXFLOAT; + *r = FLT_MAX; break; case 15: - *r = -MAXFLOAT; + *r = -FLT_MAX; break; default: abort (); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c index 9aa104bbf..6205cc530 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 32) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (int *dst, int *src1, int *ind, int *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c index a2daca0bd..0bb5b4c52 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 64) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (double *dst, double *src1, long long *ind, double *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c index 56215cfca..f8038ef15 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 32) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (float *dst, float *src1, int *ind, float *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c index 9d7b9bec3..0268afbce 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 64) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (long long *dst, long long *src1, long long *ind, long long *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c index ef8d1951b..bba108abd 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 32) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (int *dst, int *src1, int *ind, int *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c index 511a47015..4891c8553 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 64) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (double *dst, double *src1, long long *ind, double *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c index cd35d1237..a3d57c41d 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 32) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (float *dst, float *src1, int *ind, float *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c index 5f449adec..57fe3d4b1 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 64) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (long long *dst, long long *src1, long long *ind, long long *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61794.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61794.c new file mode 100644 index 000000000..5f8e7d06c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61794.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f" } */ + +#include + +__m512i zmm; +__m128i xmm; + +void test (void) +{ + xmm = _mm512_extracti32x4_epi32 (zmm, 0); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61801.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61801.c new file mode 100644 index 000000000..d0d08ccb4 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61801.c @@ -0,0 +1,21 @@ +/* PR rtl-optimization/61801 */ +/* { dg-do compile } */ +/* { dg-options "-Os -fcompare-debug" } */ + +int a, c; +int bar (void); +void baz (void); + +void +foo (void) +{ + int d; + if (bar ()) + { + int e; + baz (); + asm volatile ("" : "=a" (e) : "0" (a), "i" (0)); + d = e; + } + c = d; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61855.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61855.c new file mode 100644 index 000000000..09c62aebb --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61855.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f" } */ + +#include + +__m512 test (__m512 x) +{ + return _mm512_getmant_ps(x, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_zero); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61923.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61923.c new file mode 100644 index 000000000..458158cc6 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61923.c @@ -0,0 +1,36 @@ +/* PR debug/61923 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fcompare-debug" } */ + +typedef struct +{ + struct + { + struct + { + char head; + } tickets; + }; +} arch_spinlock_t; +struct ext4_map_blocks +{ + int m_lblk; + int m_len; + int m_flags; +}; +int ext4_da_map_blocks_ei_0; +void fn1 (int p1, struct ext4_map_blocks *p2) +{ + int ret; + if (p2->m_flags) + { + ext4_da_map_blocks_ei_0++; + arch_spinlock_t *lock; + switch (sizeof *&lock->tickets.head) + case 1: + asm("" : "+m"(*&lock->tickets.head) : ""(0)); + __asm__(""); + ret = 0; + } + fn2 (p2->m_lblk, p2->m_len); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c index 382677e60..97ef3935a 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c @@ -33,4 +33,3 @@ int main () /* { dg-final { scan-assembler "vpmulld" } } */ /* { dg-final { scan-assembler "vphadddq" } } */ -/* { dg-final { scan-assembler "vpmacsdql" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/mips/pr62030-octeon.c b/gcc-4.9/gcc/testsuite/gcc.target/mips/pr62030-octeon.c new file mode 100644 index 000000000..5e3d3b3b6 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/mips/pr62030-octeon.c @@ -0,0 +1,50 @@ +/* { dg-do run } */ +/* { dg-options "-march=octeon" } */ + +extern void abort (void); + +struct node +{ + struct node *next; + struct node *prev; +}; + +struct node node; + +struct head +{ + struct node *first; +}; + +struct head heads[5]; + +int k = 2; + +struct head *head = &heads[2]; + +static int __attribute__((noinline)) +foo (void) +{ + node.prev = (void *)head; + head->first = &node; + + struct node *n = head->first; + struct head *h = &heads[k]; + struct node *next = n->next; + + if (n->prev == (void *)h) + h->first = next; + else + n->prev->next = next; + + n->next = h->first; + return n->next == &node; +} + +int +main (void) +{ + if (foo ()) + abort (); + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c new file mode 100644 index 000000000..6e0d54883 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c @@ -0,0 +1,12 @@ +/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ +/* { dg-options "-mabi=elfv2" } */ + +struct f8 + { + float x[8]; + }; + +void test (struct f8 a, struct f8 b) /* { dg-message "note: the ABI of passing homogeneous float aggregates will change" } */ +{ +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c new file mode 100644 index 000000000..c4820e925 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c @@ -0,0 +1,11 @@ +/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ + +struct test + { + long a __attribute__((aligned (16))); + }; + +void test (struct test a) /* { dg-message "note: the ABI of passing aggregates with 16-byte alignment will change" } */ +{ +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c new file mode 100644 index 000000000..830de6bcc --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c @@ -0,0 +1,9 @@ +/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +struct test + { + int a __attribute__((vector_size (8))); + }; /* { dg-message "note: the layout of aggregates containing vectors with 8-byte alignment will change" } */ + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60102.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60102.c new file mode 100644 index 000000000..d32e41d68 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60102.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */ +/* { dg-options "-mcpu=8548 -mspe -mabi=spe -g -mfloat-gprs=double" } */ + +double +pr60102 (double x, int m) +{ + double y; + y = m % 2 ? x : 1; + return y; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/sh/pr61996.c b/gcc-4.9/gcc/testsuite/gcc.target/sh/pr61996.c new file mode 100644 index 000000000..51a5f929d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/sh/pr61996.c @@ -0,0 +1,12 @@ +/* Check that the option -musermode has no effect on targets that do not + support user/privileged mode and that it does not interfere with option + -matomic-model=soft-imask. */ +/* { dg-do compile } */ +/* { dg-options "-matomic-model=soft-imask" } */ +/* { dg-skip-if "" { "sh*-*-*" } { "*"} { "-m1*" "-m2*" } } */ + +int +test (void) +{ + return 0; +} -- cgit v1.2.3