summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/torture
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2011-11-06 15:16:32 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2011-11-06 15:16:32 +0000
commit31ba6c3ff2311bad9422246f49d59c532cbb5078 (patch)
tree6e862e3ea14b2edf93a92c404a0d9b29f3f9ba65 /gcc/testsuite/gcc.dg/torture
parentbab85b65e545231656361b997a81fb8a44b266b4 (diff)
downloadgcc-31ba6c3ff2311bad9422246f49d59c532cbb5078.tar.gz
2011-11-06 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 181026 using svnmerge git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@181034 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg/torture')
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr50890.c17
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr50902.c9
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c11
-rw-r--r--gcc/testsuite/gcc.dg/torture/vec-cvt-1.c211
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v16hi.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v16qi.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v2df.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v2di.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v32qi.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v4df.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v4di.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v4sf.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v4si.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v8hi.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v8sf.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/vshuf-v8si.c1
16 files changed, 259 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/pr50890.c b/gcc/testsuite/gcc.dg/torture/pr50890.c
new file mode 100644
index 00000000000..17240d4fb82
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr50890.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+
+static float make_insn_raw (void)
+{
+ return 0;
+}
+
+static int emit_pattern_after_noloc (int (make_raw) ())
+{
+ return make_raw ();
+}
+
+void emit_insn_after_noloc (void)
+{
+ emit_pattern_after_noloc ((void *) make_insn_raw);
+}
+
diff --git a/gcc/testsuite/gcc.dg/torture/pr50902.c b/gcc/testsuite/gcc.dg/torture/pr50902.c
new file mode 100644
index 00000000000..5b7275b839d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr50902.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+
+_Bool data[128];
+void foo (_Bool *init)
+{
+ int i;
+ for (i = 0; i < 128; i++)
+ data[i] = *init;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c b/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c
index a1ba20fce53..89c71a99d5b 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c
@@ -9,6 +9,15 @@
#define INTEGER_ARG 5
+#if defined(__ARM_PCS) || defined(__epiphany__)
+/* For Base AAPCS, NAME is passed in r0. D is passed in r2 and r3.
+ E, F and G are passed on stack. So the size of the stack argument
+ data is 20. */
+#define STACK_ARGUMENTS_SIZE 20
+#else
+#define STACK_ARGUMENTS_SIZE 64
+#endif
+
extern void abort(void);
void foo(char *name, double d, double e, double f, int g)
@@ -19,7 +28,7 @@ void foo(char *name, double d, double e, double f, int g)
void bar(char *name, ...)
{
- __builtin_apply(foo, __builtin_apply_args(), 64);
+ __builtin_apply(foo, __builtin_apply_args(), STACK_ARGUMENTS_SIZE);
}
int main(void)
diff --git a/gcc/testsuite/gcc.dg/torture/vec-cvt-1.c b/gcc/testsuite/gcc.dg/torture/vec-cvt-1.c
new file mode 100644
index 00000000000..601f098889c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/vec-cvt-1.c
@@ -0,0 +1,211 @@
+/* { dg-do run } */
+
+#include <stdlib.h>
+
+#define N 1024
+signed char sc[N];
+short ss[N];
+int si[N];
+long long sl[N];
+unsigned char uc[N];
+unsigned short us[N];
+unsigned int ui[N];
+unsigned long long ul[N];
+float f[N];
+double d[N];
+
+#define FN1(from, to) \
+__attribute__((noinline, noclone)) void \
+from##2##to (void) \
+{ \
+ int i; \
+ for (i = 0; i < N; i++) \
+ to[i] = from[i]; \
+}
+#define FN(intt, fltt) FN1 (intt, fltt) FN1 (fltt, intt)
+
+FN (sc, f)
+FN (ss, f)
+FN (si, f)
+FN (sl, f)
+FN (uc, f)
+FN (us, f)
+FN (ui, f)
+FN (ul, f)
+FN (sc, d)
+FN (ss, d)
+FN (si, d)
+FN (sl, d)
+FN (uc, d)
+FN (us, d)
+FN (ui, d)
+FN (ul, d)
+
+#define FLTTEST(min, max, intt) \
+__attribute__((noinline, noclone)) void \
+flttointtest##intt (void) \
+{ \
+ int i; \
+ volatile float fltmin, fltmax, vf, vf2; \
+ volatile double dblmin, dblmax, vd, vd2; \
+ if (min == 0) \
+ fltmin = 0.0f; \
+ else \
+ { \
+ vf2 = fltmin = min - 1.0f; \
+ for (vf = 1.0f; (fltmin = vf2 + vf) == vf2; vf = vf * 2.0f) \
+ ; \
+ } \
+ vf2 = fltmax = max + 1.0f; \
+ for (vf = 1.0f; (fltmax = vf2 - vf) == vf2; vf = vf * 2.0f) \
+ ; \
+ if (min == 0) \
+ dblmin = 0.0; \
+ else \
+ { \
+ vd2 = dblmin = min - 1.0; \
+ for (vd = 1.0; (dblmin = vd2 + vd) == vd2; vd = vd * 2.0) \
+ ; \
+ } \
+ vd2 = dblmax = max + 1.0; \
+ for (vd = 1.0; (dblmax = vd2 - vd) == vd2; vd = vd * 2.0) \
+ ; \
+ for (i = 0; i < N; i++) \
+ { \
+ asm (""); \
+ if (i == 0) \
+ f[i] = fltmin; \
+ else if (i < N / 4) \
+ f[i] = fltmin + i + 0.25f; \
+ else if (i < 3 * N / 4) \
+ f[i] = (fltmax + fltmin) / 2.0 - N * 8 + 16.0f * i; \
+ else \
+ f[i] = fltmax - N + 1 + i; \
+ if (f[i] < fltmin) f[i] = fltmin; \
+ if (f[i] > fltmax) f[i] = fltmax; \
+ if (i == 0) \
+ d[i] = dblmin; \
+ else if (i < N / 4) \
+ d[i] = dblmin + i + 0.25f; \
+ else if (i < 3 * N / 4) \
+ d[i] = (dblmax + dblmin) / 2.0 - N * 8 + 16.0f * i; \
+ else \
+ d[i] = dblmax - N + 1 + i; \
+ if (d[i] < dblmin) d[i] = dblmin; \
+ if (d[i] > dblmax) d[i] = dblmax; \
+ } \
+ f2##intt (); \
+ for (i = 0; i < N; i++) \
+ if (intt[i] != (__typeof (intt[0])) f[i]) \
+ abort (); \
+ d2##intt (); \
+ for (i = 0; i < N; i++) \
+ if (intt[i] != (__typeof (intt[0])) d[i]) \
+ abort (); \
+ for (i = 0; i < N; i++) \
+ { \
+ unsigned long long r = random (); \
+ r = (r << 21) ^ (unsigned) random (); \
+ r = (r << 21) ^ (unsigned) random (); \
+ asm (""); \
+ f[i] = (r >> 59) / 32.0f + (__typeof (intt[0])) r; \
+ if (f[i] < fltmin) f[i] = fltmin; \
+ if (f[i] > fltmax) f[i] = fltmax; \
+ d[i] = (r >> 59) / 32.0 + (__typeof (intt[0])) r; \
+ if (d[i] < dblmin) f[i] = dblmin; \
+ if (d[i] > dblmax) f[i] = dblmax; \
+ } \
+ f2##intt (); \
+ for (i = 0; i < N; i++) \
+ if (intt[i] != (__typeof (intt[0])) f[i]) \
+ abort (); \
+ d2##intt (); \
+ for (i = 0; i < N; i++) \
+ if (intt[i] != (__typeof (intt[0])) d[i]) \
+ abort (); \
+} \
+ \
+__attribute__((noinline, noclone)) void \
+inttoflttest##intt (void) \
+{ \
+ int i; \
+ volatile float vf; \
+ volatile double vd; \
+ for (i = 0; i < N; i++) \
+ { \
+ asm (""); \
+ if (i < N / 4) \
+ intt[i] = min + i; \
+ else if (i < 3 * N / 4) \
+ intt[i] = (max + min) / 2 - N * 8 + 16 * i; \
+ else \
+ intt[i] = max - N + 1 + i; \
+ } \
+ intt##2f (); \
+ for (i = 0; i < N; i++) \
+ { \
+ vf = intt[i]; \
+ if (f[i] != vf) \
+ abort (); \
+ } \
+ intt##2d (); \
+ for (i = 0; i < N; i++) \
+ { \
+ vd = intt[i]; \
+ if (d[i] != vd) \
+ abort (); \
+ } \
+ for (i = 0; i < N; i++) \
+ { \
+ unsigned long long r = random (); \
+ r = (r << 21) ^ (unsigned) random (); \
+ r = (r << 21) ^ (unsigned) random (); \
+ asm (""); \
+ intt[i] = r; \
+ } \
+ intt##2f (); \
+ for (i = 0; i < N; i++) \
+ { \
+ vf = intt[i]; \
+ if (f[i] != vf) \
+ abort (); \
+ } \
+ intt##2d (); \
+ for (i = 0; i < N; i++) \
+ { \
+ vd = intt[i]; \
+ if (d[i] != vd) \
+ abort (); \
+ } \
+}
+
+FLTTEST (- __SCHAR_MAX__ - 1, __SCHAR_MAX__, sc)
+FLTTEST (- __SHRT_MAX__ - 1, __SHRT_MAX__, ss)
+FLTTEST (- __INT_MAX__ - 1, __INT_MAX__, si)
+FLTTEST (- __LONG_LONG_MAX__ - 1LL, __LONG_LONG_MAX__, sl)
+FLTTEST (0, 2U * __SCHAR_MAX__ + 1, uc)
+FLTTEST (0, 2U * __SHRT_MAX__ + 1, us)
+FLTTEST (0, 2U * __INT_MAX__ + 1, ui)
+FLTTEST (0, 2ULL * __LONG_LONG_MAX__ + 1, ul)
+
+int
+main ()
+{
+ flttointtestsc ();
+ flttointtestss ();
+ flttointtestsi ();
+ flttointtestsl ();
+ flttointtestuc ();
+ flttointtestus ();
+ flttointtestui ();
+ flttointtestul ();
+ inttoflttestsc ();
+ inttoflttestss ();
+ inttoflttestsi ();
+ inttoflttestsl ();
+ inttoflttestuc ();
+ inttoflttestus ();
+ inttoflttestui ();
+ inttoflttestul ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v16hi.c b/gcc/testsuite/gcc.dg/torture/vshuf-v16hi.c
index a6fbeb5aed5..9ff3ebbfa3d 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v16hi.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v16hi.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v16qi.c b/gcc/testsuite/gcc.dg/torture/vshuf-v16qi.c
index 526edf28967..062324d7bb9 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v16qi.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v16qi.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v2df.c b/gcc/testsuite/gcc.dg/torture/vshuf-v2df.c
index 7e327b13b75..8e33d1d0411 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v2df.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v2df.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v2di.c b/gcc/testsuite/gcc.dg/torture/vshuf-v2di.c
index 63da659807b..d498c28f0f9 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v2di.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v2di.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v32qi.c b/gcc/testsuite/gcc.dg/torture/vshuf-v32qi.c
index cf85815142a..0179006870c 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v32qi.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v32qi.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v4df.c b/gcc/testsuite/gcc.dg/torture/vshuf-v4df.c
index cc9d340a17f..c11d6396dfd 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v4df.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v4df.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v4di.c b/gcc/testsuite/gcc.dg/torture/vshuf-v4di.c
index 2d568961641..494cb78260e 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v4di.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v4di.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v4sf.c b/gcc/testsuite/gcc.dg/torture/vshuf-v4sf.c
index 7e605980312..4db59f9da14 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v4sf.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v4sf.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v4si.c b/gcc/testsuite/gcc.dg/torture/vshuf-v4si.c
index f12b98ea209..3ae86acd3c6 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v4si.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v4si.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v8hi.c b/gcc/testsuite/gcc.dg/torture/vshuf-v8hi.c
index 1440fb53f89..f4639880fb6 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v8hi.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v8hi.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v8sf.c b/gcc/testsuite/gcc.dg/torture/vshuf-v8sf.c
index 2044760bdc3..d11aa0c950a 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v8sf.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v8sf.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/vshuf-v8si.c b/gcc/testsuite/gcc.dg/torture/vshuf-v8si.c
index dbf9da7a699..64d97164d65 100644
--- a/gcc/testsuite/gcc.dg/torture/vshuf-v8si.c
+++ b/gcc/testsuite/gcc.dg/torture/vshuf-v8si.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-DEXPENSIVE" { target run_expensive_tests } } */
+/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */