aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog122
-rwxr-xr-xgcc/testsuite/ada/acats/run_acats19
-rw-r--r--gcc/testsuite/g++.dg/ext/attrib39.C9
-rw-r--r--gcc/testsuite/g++.dg/vect/pr43771.cc14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr42956.c33
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr43186.c15
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr43614.c27
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20100430-1.c51
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr43560.c28
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr43629.c13
-rw-r--r--gcc/testsuite/gcc.dg/gomp/pr44085.c27
-rw-r--r--gcc/testsuite/gcc.dg/pr43643.c24
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr43560.c34
-rw-r--r--gcc/testsuite/gcc.target/i386/pr43662.c24
-rw-r--r--gcc/testsuite/gcc.target/i386/pr43668.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr43671.c27
-rw-r--r--gcc/testsuite/gcc.target/sh/pr43417.c36
-rw-r--r--gcc/testsuite/gfortran.dg/actual_array_interface_2.f9013
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr43337.f9030
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr43836.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr44036-1.f9024
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr44036-2.f9017
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr44036-3.f9013
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr44085.f9025
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/sharing-2.f9012
-rw-r--r--gcc/testsuite/gnat.dg/rep_clause5.adb39
-rw-r--r--gcc/testsuite/gnat.dg/rep_clause5.ads12
-rw-r--r--gcc/testsuite/gnat.dg/rep_clause5_pkg.ads383
29 files changed, 1086 insertions, 9 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 05afbfb82f1..3a33d1ac437 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,123 @@
+2010-05-14 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/44135
+ * gfortran.dg/actual_array_interface_2.f90: New test.
+
+2010-05-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/44036
+ * gfortran.dg/gomp/pr44036-1.f90: New test.
+ * gfortran.dg/gomp/pr44036-2.f90: New test.
+ * gfortran.dg/gomp/pr44036-3.f90: New test.
+
+ PR middle-end/44085
+ * gcc.dg/gomp/pr44085.c: New test.
+ * gfortran.dg/gomp/pr44085.f90: New test.
+
+2010-05-05 Jason Merrill <jason@redhat.com>
+
+ PR debug/43370
+ * g++.dg/ext/attrib39.C: New.
+
+2010-05-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline
+ 2010-05-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR middle-end/43671
+ * gcc.target/i386/pr43671.c: New.
+
+2010-05-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * ada/acats/run_acats (which): New function.
+ (host_gnatchop, host_gnatmake): Use it.
+
+2010-04-30 DJ Delorie <dj@redhat.com>
+
+ * gcc.c-torture/execute/20100430-1.c: New test.
+
+2010-04-29 Release Manager
+
+ * GCC 4.4.4 released.
+
+2010-04-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/43836
+ * gfortran.dg/gomp/pr43836.f90: New test.
+
+2010-04-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/43339
+ * gfortran.dg/gomp/sharing-2.f90: Adjust for iteration vars
+ of sequential loops being private only in the innermost containing
+ task region.
+
+ PR middle-end/43337
+ * gfortran.dg/gomp/pr43337.f90: New test.
+
+2010-04-19 Jie Zhang <jie@codesourcery.com>
+
+ PR target/43662
+ * gcc.target/i386/pr43662.c: New test.
+
+2010-04-19 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/43771
+ * g++.dg/vect/pr43771.cc: New test.
+
+2010-04-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/rep_clause5.ad[sb]: New test.
+ * gnat.dg/rep_clause5_pkg.ads: New helper.
+
+2010-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/43560
+ * gcc.c-torture/execute/pr43560.c: New test.
+
+2010-04-10 Jie Zhang <jie@codesourcery.com>
+
+ PR target/43417
+ * gcc.target/sh/pr43417.c: New test.
+
+2010-04-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR target/43643
+ * gcc.dg/pr43643.c: New test.
+
+2010-04-08 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/42956
+ * gcc.c-torture/compile/pr42956.c: New testcase.
+
+2010-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline:
+ 2010-03-29 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/43560
+ * gcc.dg/torture/pr43560.c: New testcase.
+
+ 2010-04-01 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/43614
+ * gcc.c-torture/compile/pr43614.c: New testcase.
+
+2010-04-08 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/43186
+ * gcc.c-torture/compile/pr43186.c: New testcase.
+
+2010-04-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/43668
+ * gcc.target/i386/pr43668.c: New.
+
+2010-04-07 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/43629
+ * gcc.c-torture/execute/pr43629.c: New testcase.
+
2010-04-06 Jakub Jelinek <jakub@redhat.com>
* gcc.target/s390/stackcheck1.c: Add dg-warning.
@@ -6,7 +126,7 @@
* gcc.target/i386/pr43638.c: New test.
2010-04-01 Janne Blomqvist <jb@gcc.gnu.org>
- Dominique d'Humieres <dominiq@lps.ens.fr>
+ Dominique d'Humieres <dominiq@lps.ens.fr>
PR libfortran/43605
* gfortran.dg/ftell_3.f90: Enhance test case by reading more.
diff --git a/gcc/testsuite/ada/acats/run_acats b/gcc/testsuite/ada/acats/run_acats
index 05f3ff57df5..9a9bdc2a318 100755
--- a/gcc/testsuite/ada/acats/run_acats
+++ b/gcc/testsuite/ada/acats/run_acats
@@ -5,10 +5,25 @@ if [ "$testdir" = "" ]; then
exit 1
fi
+# Provide which replacement.
+#
+# type -p is missing from Solaris 2 /bin/sh and /bin/ksh (ksh88), but both
+# ksh93 and bash have it.
+# type output format differs between ksh88 and ksh93, so avoid it if
+# type -p is present.
+# Fall back to whence which ksh88 and ksh93 provide, but bash does not.
+
+which () {
+ type -p $* 2>/dev/null && return 0
+ type $* 2>/dev/null | awk '{print $3}' && return 0
+ whence $* 2>/dev/null && return 0
+ return 1
+}
+
# Set up environment to use the Ada compiler from the object tree
-host_gnatchop=`type gnatchop | awk '{print $3}'`
-host_gnatmake=`type gnatmake | awk '{print $3}'`
+host_gnatchop=`which gnatchop`
+host_gnatmake=`which gnatmake`
ROOT=`${PWDCMD-pwd}`
BASE=`cd $ROOT/../../..; ${PWDCMD-pwd}`
diff --git a/gcc/testsuite/g++.dg/ext/attrib39.C b/gcc/testsuite/g++.dg/ext/attrib39.C
new file mode 100644
index 00000000000..22a742942cb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/attrib39.C
@@ -0,0 +1,9 @@
+// PR debug/43370
+// { dg-options "-g" }
+
+int fragile_block(void) {
+ typedef __attribute__ ((aligned (16))) struct {
+ int i;
+ } XmmUint16;
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/vect/pr43771.cc b/gcc/testsuite/g++.dg/vect/pr43771.cc
new file mode 100644
index 00000000000..1a2d09aae93
--- /dev/null
+++ b/gcc/testsuite/g++.dg/vect/pr43771.cc
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+
+void KWayNodeRefine__(int nparts, int *gpwgts, int *badminpwgt, int
+*badmaxpwgt)
+{
+ int i;
+
+ for (i=0; i<nparts; i+=2) {
+ badminpwgt[i] = badminpwgt[i+1] = gpwgts[i]+gpwgts[i+1];
+ badmaxpwgt[i] = badmaxpwgt[i+1] = gpwgts[i]+gpwgts[i+1];
+ }
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog b/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
index 6c3e26c53cf..57d08fe35f4 100644
--- a/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
@@ -1,3 +1,7 @@
+2010-04-29 Release Manager
+
+ * GCC 4.4.4 released.
+
2010-01-21 Release Manager
* GCC 4.4.3 released.
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr42956.c b/gcc/testsuite/gcc.c-torture/compile/pr42956.c
new file mode 100644
index 00000000000..f592d4be4d7
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr42956.c
@@ -0,0 +1,33 @@
+typedef const int cint;
+typedef struct {
+} Bounds;
+int ndim_, ncomp_, selectedcomp_, nregions_;
+void *voidregion_;
+typedef struct {
+ double diff, err, spread;
+} Errors;
+typedef const Errors cErrors;
+void Split(int iregion, int depth, int xregion)
+{
+ typedef struct {
+ double avg, err, spread, chisq;
+ double xmin[ndim_], xmax[ndim_];
+ } Result;
+ typedef struct region {
+ Result result[ncomp_];
+ } Region;
+ Errors errors[ncomp_];
+ int comp, ireg, xreg;
+ for( ireg = iregion, xreg = xregion; ireg < nregions_; ireg = xreg++ )
+ {
+ Result *result = ((Region *)voidregion_)[ireg].result;
+ for( comp = 0; comp < ncomp_; ++comp )
+ {
+ Result *r = &result[comp];
+ cErrors *e = &errors[comp];
+ double c = e->diff;
+ if( r->err > 0 ) r->err = r->err*e->err + c;
+ }
+ }
+}
+
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr43186.c b/gcc/testsuite/gcc.c-torture/compile/pr43186.c
new file mode 100644
index 00000000000..7171e6ac03a
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr43186.c
@@ -0,0 +1,15 @@
+int n;
+
+void foo (int i)
+{
+ int a, b;
+
+ if (!i)
+ for (a = 1; a < 4; a++)
+ if (a)
+ for (b = 1; b < 3; b++)
+ foo (b);
+
+ n++;
+}
+
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr43614.c b/gcc/testsuite/gcc.c-torture/compile/pr43614.c
new file mode 100644
index 00000000000..411b25dac48
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr43614.c
@@ -0,0 +1,27 @@
+volatile int g_2[7];
+
+void foo (unsigned);
+
+int main (void)
+{
+ int i_459 = 0;
+ int t2818;
+ int t2819;
+ volatile char *t2820;
+ int t2821;
+ volatile char *t2822;
+ int *t2823;
+ unsigned t2824;
+LL655:
+ t2822 = (volatile char *)g_2;
+ t2821 = i_459;
+ t2820 = t2822 + t2821;
+ t2823 = (int *)t2820;
+ t2824 = *t2823;
+ foo (t2824);
+ t2818 = i_459;
+ t2819 = t2818 + 1;
+ i_459 = t2819;
+ goto LL655;
+}
+
diff --git a/gcc/testsuite/gcc.c-torture/execute/20100430-1.c b/gcc/testsuite/gcc.c-torture/execute/20100430-1.c
new file mode 100644
index 00000000000..d29c6fa1a37
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20100430-1.c
@@ -0,0 +1,51 @@
+/* This used to generate unaligned accesses at -O2 because of IVOPTS. */
+
+struct packed_struct
+{
+ struct packed_struct1
+ {
+ unsigned char cc11;
+ unsigned char cc12;
+ } __attribute__ ((packed)) pst1;
+ struct packed_struct2
+ {
+ unsigned char cc21;
+ unsigned char cc22;
+ unsigned short ss[104];
+ unsigned char cc23[13];
+ } __attribute__ ((packed)) pst2[4];
+} __attribute__ ((packed));
+
+typedef struct
+{
+ int ii;
+ struct packed_struct buf;
+} info_t;
+
+static unsigned short g;
+
+static void __attribute__((noinline))
+dummy (unsigned short s)
+{
+ g = s;
+}
+
+static int
+foo (info_t *info)
+{
+ int i, j;
+
+ for (i = 0; i < info->buf.pst1.cc11; i++)
+ for (j = 0; j < info->buf.pst2[i].cc22; j++)
+ dummy (info->buf.pst2[i].ss[j]);
+
+ return 0;
+}
+
+int main(void)
+{
+ info_t info;
+ info.buf.pst1.cc11 = 2;
+ info.buf.pst2[0].cc22 = info.buf.pst2[1].cc22 = 8;
+ return foo (&info);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr43560.c b/gcc/testsuite/gcc.c-torture/execute/pr43560.c
new file mode 100644
index 00000000000..cb420c614cc
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr43560.c
@@ -0,0 +1,28 @@
+/* PR tree-optimization/43560 */
+
+struct S
+{
+ int a, b;
+ char c[10];
+};
+
+__attribute__ ((noinline)) void
+test (struct S *x)
+{
+ while (x->b > 1 && x->c[x->b - 1] == '/')
+ {
+ x->b--;
+ x->c[x->b] = '\0';
+ }
+}
+
+const struct S s = { 0, 0, "" };
+
+int
+main ()
+{
+ struct S *p;
+ asm ("" : "=r" (p) : "0" (&s));
+ test (p);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr43629.c b/gcc/testsuite/gcc.c-torture/execute/pr43629.c
new file mode 100644
index 00000000000..10c0196c89b
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr43629.c
@@ -0,0 +1,13 @@
+int flag;
+extern void abort (void);
+int main()
+{
+ int x;
+ if (flag)
+ x = -1;
+ else
+ x &= 0xff;
+ if (x & ~0xff)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/gomp/pr44085.c b/gcc/testsuite/gcc.dg/gomp/pr44085.c
new file mode 100644
index 00000000000..55462abe504
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/pr44085.c
@@ -0,0 +1,27 @@
+/* PR middle-end/44085 */
+/* { dg-do compile } */
+/* { dg-require-effective-target tls_native } */
+/* { dg-options "-fopenmp" } */
+
+int thr1, thr2;
+#pragma omp threadprivate (thr1, thr2)
+
+void
+foo (void)
+{
+#pragma omp task untied /* { dg-error "enclosing task" } */
+ {
+ thr1++; /* { dg-error "used in untied task" } */
+ thr2 |= 4; /* { dg-error "used in untied task" } */
+ }
+}
+
+void
+bar (void)
+{
+#pragma omp task
+ {
+ thr1++;
+ thr2 |= 4;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/pr43643.c b/gcc/testsuite/gcc.dg/pr43643.c
new file mode 100644
index 00000000000..7fbbfc255f3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr43643.c
@@ -0,0 +1,24 @@
+/* Contributed by Jürgen Keil <jrgn.keil@googlemail.com> */
+
+/* { dg-do run } */
+/* { dg-require-profiling "-pg" } */
+/* { dg-options "-O2 -pg" } */
+
+extern char *strdup (const char *);
+
+void
+func(char *a, char *b, char *c)
+{
+ strdup(a);
+ strdup(b);
+ strdup(c);
+}
+
+int
+main(void)
+{
+ func("a", "b", "c");
+ return 0;
+}
+
+/* { dg-final { cleanup-profile-file } } */
diff --git a/gcc/testsuite/gcc.dg/torture/pr43560.c b/gcc/testsuite/gcc.dg/torture/pr43560.c
new file mode 100644
index 00000000000..44abb80b193
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr43560.c
@@ -0,0 +1,34 @@
+/* { dg-do run } */
+/* { dg-require-weak "" } */
+
+int g_6[1][2] = {{1,1}};
+int g_34 = 0;
+int *const g_82 = &g_6[0][1];
+int *g_85[2][1] __attribute__((weak));
+
+void __attribute__((noinline))
+func_4 (int x)
+{
+ int i;
+ for (i = 0; i <= x; i++) {
+ if (g_6[0][1]) {
+ *g_82 = 1;
+ } else {
+ int **l_109 = &g_85[1][0];
+ if (&g_82 != l_109) {
+ } else {
+ *l_109 = &g_6[0][1];
+ }
+ *g_82 = 1;
+ }
+ }
+}
+
+int main (void)
+{
+ g_85[0][0] = &g_34;
+ g_85[1][0] = &g_34;
+ func_4(1);
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/pr43662.c b/gcc/testsuite/gcc.target/i386/pr43662.c
new file mode 100644
index 00000000000..246c8aafa6e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr43662.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O2" } */
+
+void __attribute__ ((ms_abi)) foo (void)
+{
+}
+
+typedef struct _IAVIStreamImpl
+{
+ int sInfo;
+ int has;
+} IAVIStreamImpl;
+
+extern int __attribute__ ((ms_abi)) aso (void *);
+extern int sre (void *);
+
+int AVIFILE_OpenCompressor (IAVIStreamImpl *This)
+{
+ if (This->has != 0)
+ aso (&This->has);
+ sre (&This->sInfo);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr43668.c b/gcc/testsuite/gcc.target/i386/pr43668.c
new file mode 100644
index 00000000000..b6c2114fd07
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr43668.c
@@ -0,0 +1,10 @@
+/* PR target/43668 */
+/* { dg-do run } */
+/* { dg-options "-fschedule-insns" } */
+
+int foo(int i, ...) {
+ return i;
+}
+int main() {
+ return foo(0, 0.0);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr43671.c b/gcc/testsuite/gcc.target/i386/pr43671.c
new file mode 100644
index 00000000000..958eaff4453
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr43671.c
@@ -0,0 +1,27 @@
+/* { dg-do run } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-mtune=i686 -O1 -fpeel-loops -fschedule-insns2 -ftree-vectorize -fsched2-use-superblocks" } */
+
+extern void abort ();
+
+int main ()
+{
+ struct {
+ char ca[16];
+ } s;
+ int i;
+
+ for (i = 0; i < 16; i++)
+ {
+ s.ca[i] = 5;
+ }
+
+
+ for (i = 0; i < 16; i++)
+ {
+ if (s.ca[i] != 5)
+ abort ();
+ }
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/sh/pr43417.c b/gcc/testsuite/gcc.target/sh/pr43417.c
new file mode 100644
index 00000000000..081ff46b998
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr43417.c
@@ -0,0 +1,36 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -m4" } */
+
+int pid_count = 0;
+main (int argc, char *argv[])
+{
+ unsigned int c;
+ unsigned long long maxbytes = 0;
+ extern char *optarg;
+ int i;
+ int pid_cntr;
+ int pid;
+ int pid_list[1000];
+ while ((c = getopt (argc, argv, "c:b:p:wvh")) != (-1))
+ {
+ switch ((char) c)
+ {
+ case 'b':
+ maxbytes = atoll (optarg);
+ }
+ }
+ pid = fork ();
+ while ((pid != 0) && (maxbytes > 1024 * 1024 * 1024))
+ {
+ maxbytes = maxbytes - (1024 * 1024 * 1024);
+ pid = fork ();
+ if (pid != 0)
+ pid_cntr++;
+ pid_list[i] = pid;
+ }
+ while ((pid_count < pid_cntr))
+ {
+ }
+ kill (pid_list[i], 9);
+}
+
diff --git a/gcc/testsuite/gfortran.dg/actual_array_interface_2.f90 b/gcc/testsuite/gfortran.dg/actual_array_interface_2.f90
new file mode 100644
index 00000000000..ae429b7d9a9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/actual_array_interface_2.f90
@@ -0,0 +1,13 @@
+! { dg-do compile }
+program gprogram
+ implicit none
+ real, dimension(-2:0) :: my_arr
+ call fill_array(my_arr)
+ contains
+ subroutine fill_array(arr)
+ implicit none
+ real, dimension(-2:0), intent(out) :: arr
+ arr = 42
+ end subroutine fill_array
+end program gprogram
+
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr43337.f90 b/gcc/testsuite/gfortran.dg/gomp/pr43337.f90
new file mode 100644
index 00000000000..f07ccb441be
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr43337.f90
@@ -0,0 +1,30 @@
+! PR middle-end/43337
+! { dg-do compile }
+! { dg-options "-fopenmp -O2 -g" }
+
+subroutine pr43337
+ integer :: a, b(10)
+ call foo (b)
+ call bar (b)
+contains
+ subroutine foo (b)
+ integer :: b(10)
+!$omp parallel if (.false.)
+!$omp task if (.false.) shared(b)
+ do a = 1, 10
+ b(a) = 1
+ end do
+!$omp end task
+!$omp end parallel
+ end subroutine foo
+ subroutine bar (b)
+ integer :: b(10)
+!$omp parallel if (.false.)
+!$omp parallel if (.false.)
+ do a = 1, 10
+ b(a) = 1
+ end do
+!$omp end parallel
+!$omp end parallel
+ end subroutine bar
+end subroutine pr43337
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr43836.f90 b/gcc/testsuite/gfortran.dg/gomp/pr43836.f90
new file mode 100644
index 00000000000..cf86523f52b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr43836.f90
@@ -0,0 +1,10 @@
+! PR fortran/43836
+! { dg-do compile }
+! { dg-options "-fopenmp -fexceptions -O2" }
+subroutine foo
+!$omp single
+!$omp parallel
+ call bar
+!$omp end parallel
+!$omp end single
+end subroutine foo
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90 b/gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90
new file mode 100644
index 00000000000..a4633a3e9c0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90
@@ -0,0 +1,24 @@
+! PR fortran/44036
+! { dg-do compile }
+! { dg-options "-fopenmp" }
+subroutine foo(a, b)
+ integer, external :: a
+ integer, external, pointer :: b
+ integer, external :: c
+ integer, external, pointer :: d
+ integer :: x
+ x = 6
+!$omp parallel default(none) private (x)
+ x = a(4)
+!$omp end parallel
+!$omp parallel default(none) private (x) ! { dg-error "enclosing parallel" }
+ x = b(5) ! { dg-error "not specified in" }
+!$omp end parallel
+!$omp parallel default(none) private (x)
+ x = c(6)
+!$omp end parallel
+ d => a
+!$omp parallel default(none) private (x) ! { dg-error "enclosing parallel" }
+ x = d(7) ! { dg-error "not specified in" }
+!$omp end parallel
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr44036-2.f90 b/gcc/testsuite/gfortran.dg/gomp/pr44036-2.f90
new file mode 100644
index 00000000000..c9320f13912
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr44036-2.f90
@@ -0,0 +1,17 @@
+! PR fortran/44036
+! { dg-do compile }
+! { dg-options "-fopenmp" }
+subroutine foo(a, b)
+ integer, external :: a
+ integer, external, pointer :: b
+ integer, external :: c
+ integer, external, pointer :: d
+ integer :: x
+ d => a
+!$omp parallel default(none) private (x) firstprivate (b, d)
+ x = a(4)
+ x = b(5)
+ x = c(6)
+ x = d(7)
+!$omp end parallel
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr44036-3.f90 b/gcc/testsuite/gfortran.dg/gomp/pr44036-3.f90
new file mode 100644
index 00000000000..449cb9572d0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr44036-3.f90
@@ -0,0 +1,13 @@
+! PR fortran/44036
+! { dg-do compile }
+! { dg-options "-fopenmp" }
+subroutine foo(a)
+ integer, external :: a, c
+ integer :: x
+!$omp parallel default(none) private (x) shared (a) ! { dg-error "is not a variable" }
+ x = a(6)
+!$omp end parallel
+!$omp parallel default(none) private (x) shared (c) ! { dg-error "is not a variable" }
+ x = c(6)
+!$omp end parallel
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr44085.f90 b/gcc/testsuite/gfortran.dg/gomp/pr44085.f90
new file mode 100644
index 00000000000..db8fbbc9544
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr44085.f90
@@ -0,0 +1,25 @@
+! PR middle-end/44085
+! { dg-do compile }
+! { dg-require-effective-target tls_native }
+! { dg-options "-fopenmp" }
+
+ integer, save :: thr1, thr2
+ integer :: thr3, thr4
+ common /thrs/ thr3, thr4
+!$omp threadprivate (thr1, thr2, /thrs/)
+
+!$omp task untied ! { dg-error "enclosing task" }
+ thr1 = thr1 + 1 ! { dg-error "used in untied task" }
+ thr2 = thr2 + 2 ! { dg-error "used in untied task" }
+ thr3 = thr3 + 3 ! { dg-error "used in untied task" }
+ thr4 = thr4 + 4 ! { dg-error "used in untied task" }
+!$omp end task
+
+!$omp task
+ thr1 = thr1 + 1
+ thr2 = thr2 + 2
+ thr3 = thr3 + 3
+ thr4 = thr4 + 4
+!$omp end task
+
+ end
diff --git a/gcc/testsuite/gfortran.dg/gomp/sharing-2.f90 b/gcc/testsuite/gfortran.dg/gomp/sharing-2.f90
index aede06c9c0f..b7d7e072975 100644
--- a/gcc/testsuite/gfortran.dg/gomp/sharing-2.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/sharing-2.f90
@@ -28,10 +28,10 @@
end do
!$omp end single
!$omp end parallel
-!$omp parallel default (none) shared (a)
- i = 1
- j = 1
- k = 1
+!$omp parallel default (none) shared (a) ! { dg-error "enclosing parallel" }
+ i = 1 ! { dg-error "not specified in" }
+ j = 1 ! { dg-error "not specified in" }
+ k = 1 ! { dg-error "not specified in" }
!$omp parallel default (none) shared (a)
i = 1
j = 1
@@ -68,8 +68,8 @@
a(i, 1) = i + 1
end do
!$omp end parallel
-!$omp parallel default (none) shared (a)
- i = 1
+!$omp parallel default (none) shared (a) ! { dg-error "enclosing parallel" }
+ i = 1 ! { dg-error "not specified in" }
!$omp parallel default (none) shared (a, i)
i = 2
!$omp parallel default (none) shared (a)
diff --git a/gcc/testsuite/gnat.dg/rep_clause5.adb b/gcc/testsuite/gnat.dg/rep_clause5.adb
new file mode 100644
index 00000000000..7fdf264095a
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/rep_clause5.adb
@@ -0,0 +1,39 @@
+-- { dg-do compile }
+-- { dg-options "-O" }
+
+package body Rep_Clause5 is
+
+ function To_LNumber(S : String) return LNumber_Type is
+ V : VString;
+ LV : Long_Type;
+ LN : LNumber_Type;
+ begin
+ LV := To_Long(V, 10);
+ LN := LNumber_Type(LV);
+ return LN;
+ end;
+
+ procedure Merge_Numbered(LNodes : in out LNodes_Ptr) is
+ T1 : Token_Type;
+ LNO : LNumber_Type;
+ begin
+ for X in LNodes.all'Range loop
+ T1 := LNodes(X).Line(0);
+ if T1.Token /= LEX_LF then
+ declare
+ S : String := Element(T1.SID);
+ begin
+ begin
+ LNO := To_LNumber(S);
+ exception
+ when Bad_Number =>
+ LNO := 0;
+ when Too_Large =>
+ LNO := 0;
+ end;
+ end;
+ end if;
+ end loop;
+ end;
+
+end Rep_Clause5;
diff --git a/gcc/testsuite/gnat.dg/rep_clause5.ads b/gcc/testsuite/gnat.dg/rep_clause5.ads
new file mode 100644
index 00000000000..986f893ecbb
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/rep_clause5.ads
@@ -0,0 +1,12 @@
+with Rep_Clause5_Pkg; use Rep_Clause5_Pkg;
+
+package Rep_Clause5 is
+
+ Bad_Number : exception;
+ Too_Large : exception;
+
+ type LNumber_Type is range 0..99999;
+
+ procedure Merge_Numbered(LNodes : in out LNodes_Ptr);
+
+end Rep_Clause5;
diff --git a/gcc/testsuite/gnat.dg/rep_clause5_pkg.ads b/gcc/testsuite/gnat.dg/rep_clause5_pkg.ads
new file mode 100644
index 00000000000..e3496c4a2b7
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/rep_clause5_pkg.ads
@@ -0,0 +1,383 @@
+package Rep_Clause5_Pkg is
+
+ type ID_Type is mod 65536;
+ type String_ID is new ID_Type;
+ type LNumber_Type is range 0..99999;
+ subtype Long_Type is Integer;
+
+ type Func_ID is (No_Func, FUN_SGN, FUN_EXP, FUN_LOG, FUN_LOG10);
+
+ type Token_Kind is (
+ No_Token,
+ LEX_BINARY,
+ LEX_SECTION,
+ LEX_003,
+ LEX_004,
+ LEX_005,
+ LEX_006,
+ LEX_007,
+ LEX_008,
+ LEX_009,
+ LEX_LF,
+ LEX_011,
+ LEX_012,
+ LEX_013,
+ LEX_014,
+ LEX_015,
+ LEX_016,
+ LEX_017,
+ LEX_018,
+ LEX_019,
+ LEX_020,
+ LEX_021,
+ LEX_022,
+ LEX_023,
+ LEX_024,
+ LEX_025,
+ LEX_026,
+ LEX_027,
+ LEX_028,
+ LEX_029,
+ LEX_030,
+ LEX_031,
+ LEX_032,
+ '!',
+ '"',
+ '#',
+ '$',
+ '%',
+ '&',
+ ''',
+ '(',
+ ')',
+ '*',
+ '+',
+ ',',
+ '-',
+ '.',
+ '/',
+ '0',
+ '1',
+ '2',
+ '3',
+ '4',
+ '5',
+ '6',
+ '7',
+ '8',
+ '9',
+ ':',
+ ';',
+ '<',
+ '=',
+ '>',
+ '?',
+ '@',
+ 'A',
+ 'B',
+ 'C',
+ 'D',
+ 'E',
+ 'F',
+ 'G',
+ 'H',
+ 'I',
+ 'J',
+ 'K',
+ 'L',
+ 'M',
+ 'N',
+ 'O',
+ 'P',
+ 'Q',
+ 'R',
+ 'S',
+ 'T',
+ 'U',
+ 'V',
+ 'W',
+ 'X',
+ 'Y',
+ 'Z',
+ '[',
+ '\',
+ ']',
+ '^',
+ '_',
+ '`',
+ 'a',
+ 'b',
+ 'c',
+ 'd',
+ 'e',
+ 'f',
+ 'g',
+ 'h',
+ 'i',
+ 'j',
+ 'k',
+ 'l',
+ 'm',
+ 'n',
+ 'o',
+ LEX_SFUN3,
+ LEX_SFUN2,
+ LEX_SFUN1,
+ LEX_SFUNN,
+ LEX_FUN3,
+ LEX_FUN2,
+ LEX_FUN1,
+ LEX_FUNN,
+ 'x',
+ 'y',
+ 'z',
+ '{',
+ '|',
+ '}',
+ '~',
+ LEX_CRTA,
+ LEX_ISNULL,
+ LEX_USING,
+ LEX_HANDLE,
+ LEX_CALLX,
+ LEX_COMPLEX,
+ LEX_FIXED,
+ LEX_ENV,
+ LEX_SPARSE,
+ LEX_SUBROUTINE,
+ LEX_CALL,
+ LEX_BOX,
+ LEX_VLINE,
+ LEX_HLINE,
+ LEX_MAXLENGTH,
+ LEX_DLENGTH,
+ LEX_INPUT,
+ LEX_INITIALIZE,
+ LEX_OUTPUT,
+ LEX_UNLINK,
+ LEX_SEEK,
+ LEX_EXIT,
+ LEX_NOT,
+ LEX_COMMON,
+ LEX_CHAIN,
+ LEX_DEF,
+ LEX_ARITY,
+ LEX_RESUME,
+ LEX_PIC_S,
+ LEX_BG,
+ LEX_FG,
+ LEX_PC,
+ LEX_CRT,
+ LEX_ENUM,
+ LEX_DECLARE,
+ LEX_CURSOR,
+ LEX_DROP,
+ LEX_CURRENT,
+ LEX_ISOLATION,
+ LEX_SET,
+ LEX_TRANSACTION,
+ LEX_COMMIT,
+ LEX_ABORT,
+ LEX_BEGIN,
+ LEX_PREVIOUS,
+ LEX_LAST,
+ LEX_FIRST,
+ LEX_KEY,
+ LEX_START,
+ LEX_REWRITE,
+ LEX_INDEX,
+ LEX_SECONDARY,
+ LEX_PRIMARY,
+ LEX_COLUMN,
+ LEX_TEMP,
+ LEX_TABLE,
+ LEX_CREATE,
+ LEX_HASH,
+ LEX_BTREE,
+ LEX_UPDATE,
+ LEX_ERROR,
+ LEX_ACCEPT,
+ LEX_AVG,
+ LEX_MAX,
+ LEX_MIN,
+ LEX_FIELD,
+ LEX_RESTORE,
+ LEX_END,
+ LEX_STEP,
+ LEX_NEXT,
+ LEX_FOR,
+ LEX_RETURN,
+ LEX_GOSUB,
+ LEX_RANGE,
+ LEX_EXPON,
+ LEX_XOR,
+ LEX_OR,
+ LEX_AND,
+ LEX_SHIFTR,
+ LEX_GE,
+ LEX_NE,
+ LEX_SHIFTL,
+ LEX_LE,
+ LEX_VARYING,
+ LEX_LENGTH,
+ LEX_PRINT,
+ LEX_IF,
+ LEX_GOTO,
+ LEX_ON,
+ LEX_THEN,
+ LEX_DELETE,
+ LEX_TO,
+ LEX_SEQUENCE,
+ LEX_NONUNIQUE,
+ LEX_UNIQUE,
+ LEX_FILE,
+ LEX_CLOSE,
+ LEX_OPEN,
+ LEX_DATABASE,
+ LEX_RECORD,
+ LEX_DATA,
+ LEX_WRITE,
+ LEX_READ,
+ LEX_STOP,
+ LEX_LET,
+ LEX_MOD,
+ LEX_LONG,
+ LEX_DIM,
+ LEX_SHORT,
+ LEX_REM,
+ LEX_SHELL,
+ LEX_TOKEN,
+ LEX_FLOAT,
+ LEX_SIDENT,
+ LEX_INLREM,
+ LEX_ENDLIT,
+ LEX_STRLIT,
+ LEX_IDENT,
+ LEX_LNUMBER,
+ LEX_HEX,
+ LEX_NUMBER,
+ LEX_EOF,
+ LEX_QUIT,
+ LEX_LIST,
+ LEX_REMOVE,
+ LEX_RENUMBER,
+ LEX_CONTINUE,
+ LEX_RUN,
+ LEX_MERGE,
+ LEX_ENTER,
+ LEX_NEW,
+ LEX_RESET,
+ LEX_SYMTAB,
+ LEX_CLS,
+ LEX_EDIT,
+ LEX_SAVE,
+ LEX_RESAVE,
+ LEX_LOAD,
+ LEX_NAME,
+ LEX_LISTP,
+ LEX_SHOW,
+ LEX_STACK,
+ LEX_STATUS,
+ LEX_CACHE,
+ LEX_INSPECT,
+ LEX_STOW,
+ LEX_PKGRUN,
+ LEX_POP,
+ LEX_CHECK,
+ LEX_INSERT,
+ LEX_INTO,
+ LEX_VALUES,
+ LEX_NULL,
+ LEX_WHERE,
+ LEX_FROM,
+ LEX_EXEC,
+ LEX_SELECT,
+ LEX_AS,
+ LEX_ALL,
+ LEX_BY,
+ LEX_CROSS,
+ LEX_DESC,
+ LEX_FULL,
+ LEX_GROUP,
+ LEX_INNER,
+ LEX_JOIN,
+ LEX_LEFT,
+ LEX_LIMIT,
+ LEX_NATURAL,
+ LEX_OFFSET,
+ LEX_ORDER,
+ LEX_OUTER,
+ LEX_RIGHT,
+ LEX_FETCH,
+ LEX_DISTINCT,
+ LEX_DEFAULT,
+ LEX_RETURNING,
+ LEX_LEVEL,
+ LEX_COMMITTED,
+ LEX_SERIALIZABLE,
+ LEX_ONLY,
+ LEX_HOLD,
+ LEX_FORWARD,
+ LEX_WITH,
+ LEX_PRIOR,
+ LEX_RELATIVE,
+ LEX_BACKWARD,
+ LEX_OF,
+ LEX_SCROLL,
+ LEX_NOWAIT,
+ LEX_HAVING,
+ LEX_END_TOKENS
+ );
+
+ type Aux_Kind is (No_Aux, SID_Aux, FID_Aux, LNO_Aux);
+
+ type Token_Type(Aux : Aux_Kind := No_Aux) is
+ record
+ Token : Token_Kind := No_Token;
+ case Aux is
+ when SID_Aux =>
+ SID : String_ID;
+ when FID_Aux =>
+ FID : Func_ID;
+ when LNO_Aux =>
+ LNO : LNumber_Type;
+ when No_Aux =>
+ null;
+ end case;
+ end record;
+
+ for Token_Type use
+ record
+ Aux at 0 range 0..2;
+ Token at 0 range 3..12;
+ SID at 0 range 16..31;
+ FID at 0 range 16..31;
+ LNO at 0 range 13..31;
+ end record;
+
+ type Tokens_Index is range 0..999999;
+ type Token_Array is array(Tokens_Index range <>) of Token_Type;
+ type Token_Line is access all Token_Array;
+
+ type Line_Node is
+ record
+ Line : Token_Line;
+ LNO : LNumber_Type := 0;
+ Numbered : Boolean := False;
+ end record;
+
+ type Nodes_Index is range 0..999999;
+ type LNodes_Array is array(Nodes_Index range <>) of Line_Node;
+ type LNodes_Ptr is access all LNodes_Array;
+
+ type VString is
+ record
+ Max_Length : Natural := 0;
+ Fixed : Boolean := False;
+ end record;
+
+ function To_Long(Object : VString; Radix : Natural) return Long_Type;
+
+ function Element (V : String_ID) return String;
+
+end Rep_Clause5_Pkg;