diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/pch')
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/apple-altivec-1.c | 126 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/apple-altivec-1.hs | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-1.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-1.hs | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-1b.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-1b.hs | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-2.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-2.hs | 1 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-3.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-3.hs | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-4.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-4.hs | 1 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-5.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-5.hs | 1 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-6.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pch/valid-6.hs | 1 |
16 files changed, 177 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pch/apple-altivec-1.c b/gcc/testsuite/gcc.dg/pch/apple-altivec-1.c new file mode 100644 index 00000000000..7dc24c0d797 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/apple-altivec-1.c @@ -0,0 +1,126 @@ +/* APPLE LOCAL file AltiVec */ +/* { dg-do compile { target powerpc-*-darwin* } } */ +/* { dg-options "-faltivec -Wno-long-double -I." } */ + +#include "apple-altivec-1.h" + +/* Test for correct handling of AltiVec constants passed + through '...' (va_arg). */ + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> + +#define CHECK_INVARIANT(expr) \ + if (!(expr)) { \ + printf ("ASSERT FAILED: %d: %s\n", __LINE__, #expr); \ + abort (); \ + } + +struct foo { int x; int y; }; +struct vfoo { int x; __vector signed int v; int y; }; +union u { __vector signed int v; signed int i[4]; }; + +struct foo x_g = { 3, 4}; +struct vfoo vx_g = { 10, (vector signed int)(11, 12, 13, 14), 15 }; +__vector signed int v_g = (vector signed int) (22, 23, 24, 25); +struct vfoo vx2_g = { 30, (vector signed int)(31, 32, 33, 34), 35 }; +__vector signed int v2_g = (vector signed int)(40, 41, 42, 43); +int i_1 = 99, i_2 = 33; +double d_2 = 1.5, d_3 = 1.75; +long double ld_1 = 1.25; + +void bar (int i, ... ) +{ + struct foo xi; + double d; + long double ld; + float f; + char c; + short s; + va_list ap; + va_start(ap, i); + xi = va_arg(ap, struct foo); + s = (short)va_arg(ap, int); + f = (float)va_arg(ap, double); + ld = va_arg(ap, long double); + c = (char)va_arg(ap, int); + d = va_arg(ap, double); + va_end(ap); + + CHECK_INVARIANT (xi.x == x_g.x && xi.y == x_g.y); + CHECK_INVARIANT (s == (short)i_2); + CHECK_INVARIANT (f == (float)d_2); + CHECK_INVARIANT (ld == ld_1); + CHECK_INVARIANT (c == (char)i_1); + CHECK_INVARIANT (d == d_3); +} + +void baz (int i, ... ) +{ + struct vfoo vx, vx2; + __vector signed int v_i, v2_i; + int j, k, l; + va_list ap; + va_start(ap, i); + v_i = va_arg(ap, __vector signed int); + j = va_arg(ap, int); + vx = va_arg(ap, struct vfoo); + k = va_arg(ap, int); + v2_i = va_arg(ap, __vector signed int); + l = va_arg(ap, int); + vx2 = va_arg(ap, struct vfoo); + va_end(ap); + + CHECK_INVARIANT (vec_all_eq (v_i, v_g)); + CHECK_INVARIANT (j == i_1); + CHECK_INVARIANT (vx.x == vx_g.x && vec_all_eq(vx.v, vx_g.v) && vx.y == vx_g.y); + CHECK_INVARIANT (k == i_1); + CHECK_INVARIANT (vec_all_eq (v2_i, v2_g)); + CHECK_INVARIANT (l == i_1); + CHECK_INVARIANT (vx2.x == vx2_g.x && vec_all_eq(vx2.v, vx2_g.v) && vx2.y == vx2_g.y); +} + +void quux (int i, ... ) +{ + __vector signed int v_i, v2_i; + union u vi, v2i; + va_list ap; + va_start(ap, i); + v_i = va_arg(ap, __vector signed int); + v2_i = va_arg(ap, __vector signed int); + va_end(ap); + vi.v = v_i; + v2i.v = v2_i; + + CHECK_INVARIANT (vec_all_eq (v_i, v_g)); + CHECK_INVARIANT (vec_all_eq (v2_i, v_g)); + CHECK_INVARIANT (vec_all_eq (vi.v, v_g)); + CHECK_INVARIANT (vec_all_eq (v2i.v, v_g)); +} + +void baz2 (int i, ... ) +{ + struct vfoo vx; + union u vxi; + va_list ap; + va_start(ap, i); + vx = va_arg(ap, struct vfoo); + va_end(ap); + vxi.v = vx.v; + + CHECK_INVARIANT (vx.x == vx_g.x && vec_all_eq(vx.v, vx_g.v) && vx.y == vx_g.y); + CHECK_INVARIANT (vec_all_eq (vxi.v, vx_g.v)); +} + +int main(void) +{ + CHECK_INVARIANT (sizeof(struct foo) == 8 && sizeof(struct vfoo) == 48); + + bar(i_1, x_g, (short)i_2, (float)d_2, ld_1, (char)i_1, d_3); + baz(i_1, v_g, i_1, vx_g, i_1, v2_g, i_1, vx2_g); + quux(i_1, v_g, v_g); + baz2(i_1, vx_g); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/pch/apple-altivec-1.hs b/gcc/testsuite/gcc.dg/pch/apple-altivec-1.hs new file mode 100644 index 00000000000..d31591ae112 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/apple-altivec-1.hs @@ -0,0 +1,2 @@ +/* APPLE LOCAL file AltiVec */ +/* { dg-options "-faltivec -Wno-long-double" } */ diff --git a/gcc/testsuite/gcc.dg/pch/valid-1.c b/gcc/testsuite/gcc.dg/pch/valid-1.c new file mode 100644 index 00000000000..ebfa85a9949 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-1.c @@ -0,0 +1,5 @@ +/* { dg-options "-I. -Winvalid-pch -g" } */ + +#include "valid-1.h"/* { dg-error "created with -gnone, but used with -g|No such file|they were invalid" } */ + +int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-1.hs b/gcc/testsuite/gcc.dg/pch/valid-1.hs new file mode 100644 index 00000000000..e1ed11df4cc --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-1.hs @@ -0,0 +1,3 @@ +/* { dg-options "-I. -Winvalid-pch -g0" } */ + +extern int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-1b.c b/gcc/testsuite/gcc.dg/pch/valid-1b.c new file mode 100644 index 00000000000..a2709967c07 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-1b.c @@ -0,0 +1,5 @@ +/* { dg-options "-I. -Winvalid-pch -g0" } */ + +#include "valid-1b.h" + +int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-1b.hs b/gcc/testsuite/gcc.dg/pch/valid-1b.hs new file mode 100644 index 00000000000..6dc358735a7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-1b.hs @@ -0,0 +1,3 @@ +/* { dg-options "-I. -Winvalid-pch -g" } */ + +extern int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-2.c b/gcc/testsuite/gcc.dg/pch/valid-2.c new file mode 100644 index 00000000000..52a2e35a441 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-2.c @@ -0,0 +1,5 @@ +/* { dg-options "-I. -Winvalid-pch -fexceptions" } */ + +#include "valid-2.h"/* { dg-error "settings for -fexceptions do not match|No such file|they were invalid" } */ + +int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-2.hs b/gcc/testsuite/gcc.dg/pch/valid-2.hs new file mode 100644 index 00000000000..2497af651c2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-2.hs @@ -0,0 +1 @@ +extern int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-3.c b/gcc/testsuite/gcc.dg/pch/valid-3.c new file mode 100644 index 00000000000..741a917df5d --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-3.c @@ -0,0 +1,5 @@ +/* { dg-options "-I. -Winvalid-pch -fno-unit-at-a-time" } */ + +#include "valid-3.h"/* { dg-error "settings for -funit-at-a-time do not match|No such file|they were invalid" } */ + +int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-3.hs b/gcc/testsuite/gcc.dg/pch/valid-3.hs new file mode 100644 index 00000000000..2a0af94c9f7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-3.hs @@ -0,0 +1,3 @@ +/* { dg-options "-I. -Winvalid-pch -funit-at-a-time" } */ + +extern int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-4.c b/gcc/testsuite/gcc.dg/pch/valid-4.c new file mode 100644 index 00000000000..1249531ef67 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-4.c @@ -0,0 +1,6 @@ +/* { dg-options "-I. -Winvalid-pch -Wtrigraphs" } */ + +#include "valid-4.h" + +char * x = "??/"; /* { dg-error "trigraph" } */ + diff --git a/gcc/testsuite/gcc.dg/pch/valid-4.hs b/gcc/testsuite/gcc.dg/pch/valid-4.hs new file mode 100644 index 00000000000..051c720ee3f --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-4.hs @@ -0,0 +1 @@ +extern char * x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-5.c b/gcc/testsuite/gcc.dg/pch/valid-5.c new file mode 100644 index 00000000000..4022d0458f2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-5.c @@ -0,0 +1,5 @@ +/* { dg-options "-I. -Winvalid-pch -pedantic-errors" } */ + +#include "valid-5.h" + +int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-5.hs b/gcc/testsuite/gcc.dg/pch/valid-5.hs new file mode 100644 index 00000000000..2497af651c2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-5.hs @@ -0,0 +1 @@ +extern int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-6.c b/gcc/testsuite/gcc.dg/pch/valid-6.c new file mode 100644 index 00000000000..f111c31ae99 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-6.c @@ -0,0 +1,5 @@ +/* { dg-options "-I. -Winvalid-pch -dH -pipe -fcond-mismatch" } */ + +#include "valid-6.h" + +int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-6.hs b/gcc/testsuite/gcc.dg/pch/valid-6.hs new file mode 100644 index 00000000000..2497af651c2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pch/valid-6.hs @@ -0,0 +1 @@ +extern int x; |