diff options
Diffstat (limited to 'gcc-4.9/libgomp')
-rw-r--r-- | gcc-4.9/libgomp/ChangeLog | 32 | ||||
-rw-r--r-- | gcc-4.9/libgomp/configure.tgt | 2 | ||||
-rw-r--r-- | gcc-4.9/libgomp/testsuite/libgomp.c++/pr63248.C | 62 | ||||
-rw-r--r-- | gcc-4.9/libgomp/testsuite/libgomp.c/pr61200.c | 87 | ||||
-rw-r--r-- | gcc-4.9/libgomp/testsuite/libgomp.c/pr64734.c | 55 | ||||
-rw-r--r-- | gcc-4.9/libgomp/testsuite/libgomp.fortran/pr63938-1.f90 | 14 | ||||
-rw-r--r-- | gcc-4.9/libgomp/testsuite/libgomp.fortran/pr63938-2.f90 | 18 |
7 files changed, 269 insertions, 1 deletions
diff --git a/gcc-4.9/libgomp/ChangeLog b/gcc-4.9/libgomp/ChangeLog index d9d5db7..81c62da 100644 --- a/gcc-4.9/libgomp/ChangeLog +++ b/gcc-4.9/libgomp/ChangeLog @@ -1,3 +1,35 @@ +2015-01-23 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/64734 + * libgomp.c/pr64734.c: New test. + +2014-12-03 Uros Bizjak <ubizjak@gmail.com> + + * configure.tgt (x86_64-*-linux*): Tune -m32 multilib to generic. + +2014-11-28 Jakub Jelinek <jakub@redhat.com> + + Backported from mainline + 2014-11-24 Jakub Jelinek <jakub@redhat.com> + + PR fortran/63938 + * libgomp.fortran/pr63938-1.f90: New test. + * libgomp.fortran/pr63938-2.f90: New test. + +2014-10-30 Release Manager + + * GCC 4.9.2 released. + +2014-10-03 Jakub Jelinek <jakub@redhat.com> + + PR libgomp/61200 + * testsuite/libgomp.c/pr61200.c: New test. + +2014-09-18 Jakub Jelinek <jakub@redhat.com> + + PR c++/63248 + * testsuite/libgomp.c++/pr63248.C: New test. + 2014-08-04 Jakub Jelinek <jakub@redhat.com> * task.c (GOMP_taskgroup_end): If taskgroup->num_children diff --git a/gcc-4.9/libgomp/configure.tgt b/gcc-4.9/libgomp/configure.tgt index f9aab70..e4721dd 100644 --- a/gcc-4.9/libgomp/configure.tgt +++ b/gcc-4.9/libgomp/configure.tgt @@ -83,7 +83,7 @@ if test $enable_linux_futex = yes; then config_path="linux/x86 linux posix" case " ${CC} ${CFLAGS} " in *" -m32 "*) - XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686" + XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" ;; esac ;; diff --git a/gcc-4.9/libgomp/testsuite/libgomp.c++/pr63248.C b/gcc-4.9/libgomp/testsuite/libgomp.c++/pr63248.C new file mode 100644 index 0000000..48d3f0a --- /dev/null +++ b/gcc-4.9/libgomp/testsuite/libgomp.c++/pr63248.C @@ -0,0 +1,62 @@ +// PR c++/63248 +// { dg-do run } + +int *v; + +template <typename T> +T +foo (T A, T B) +{ + T a = 2; + T b = 4; + +#pragma omp target map(v[a:b]) + v[a] = 1; + +#pragma omp target map(v[A:B]) + v[a] = 2; + +#pragma omp target map(A) + A = 19; + return A; +} + +template <int N> +int +bar (int A, int B) +{ +#pragma omp target map(A) + A = 8; + if (A != 8) + __builtin_abort (); +#pragma omp target map(A, B) + { + A = 1; + B = 2; + } + return A + B; +} + +int +baz (int A, int B) +{ +#pragma omp target map(A) + A = 8; + if (A != 8) + __builtin_abort (); +#pragma omp target map(A, B) + { + A = 1; + B = 2; + } + return A + B; +} + +int +main () +{ + int a[10] = { 0 }; + v = a; + if (foo (1, 5) != 19 || v[2] != 2 || bar<0> (5, 7) != 3 || baz (5, 7) != 3) + __builtin_abort (); +} diff --git a/gcc-4.9/libgomp/testsuite/libgomp.c/pr61200.c b/gcc-4.9/libgomp/testsuite/libgomp.c/pr61200.c new file mode 100644 index 0000000..ba3ed37 --- /dev/null +++ b/gcc-4.9/libgomp/testsuite/libgomp.c/pr61200.c @@ -0,0 +1,87 @@ +/* PR libgomp/61200 */ +/* { dg-do run } */ + +#include <omp.h> +#include <stdlib.h> +#include <unistd.h> + +volatile int x; + +void +foo () +{ + int var = 1; + int i; + + for (i = 0; i < 2; i++) + { + if (i == 1) + { + #pragma omp parallel num_threads(2) + if (x) + var++; + else + { + #pragma omp single + sleep (2); + } + } + else + { + #pragma omp task shared(var) + { + sleep (1); + var = 2; + } + } + } + #pragma omp taskwait + if (var != 2) + abort (); +} + +void +bar () +{ + int var = 1; + int i; + + for (i = 0; i < 2; i++) + { + if (i == 0) + { + #pragma omp task shared(var) + { + sleep (1); + var = 2; + } + } + else + { + #pragma omp parallel num_threads(2) + if (x) + var++; + else + { + #pragma omp single + sleep (2); + } + } + } + #pragma omp taskwait + if (var != 2) + abort (); +} + +int +main () +{ + omp_set_nested (1); + #pragma omp parallel num_threads(2) + #pragma omp single + foo (); + #pragma omp parallel num_threads(2) + #pragma omp single + bar (); + return 0; +} diff --git a/gcc-4.9/libgomp/testsuite/libgomp.c/pr64734.c b/gcc-4.9/libgomp/testsuite/libgomp.c/pr64734.c new file mode 100644 index 0000000..457f481 --- /dev/null +++ b/gcc-4.9/libgomp/testsuite/libgomp.c/pr64734.c @@ -0,0 +1,55 @@ +/* PR middle-end/64734 */ + +#include <stdlib.h> + +void +foo (int *x, int *y) +{ + #pragma omp target map (alloc:x[0]) map (alloc:y[0:8]) + { + int i; + for (i = 0; i < 8; i++) + if (y[i] != 2 + i) + break; + if (i != 8 || *x != 1) + *x = 6; + else + { + *x = 8; + for (i = 0; i < 8; i++) + y[i] = 9 + i; + } + } + #pragma omp target update from (y[0:8]) from (x[0]) +} + +void +bar (void) +{ + int x = 1, y[32] = { 0 }; + #pragma omp target data map (to:y[0:32]) map (to:x) + ; +} + +int +main () +{ + int x = 1, y[8] = { 2, 3, 4, 5, 6, 7, 8, 9 }, i; + #pragma omp target data map (to:y[0:8]) map (to:x) + ; + #pragma omp target data map (to:y[0:8]) map (to:x) + { + #pragma omp target update from (y[0:8]) from (x) + } + + #pragma omp target data map (to:y[0:8]) map (to:x) + foo (&x, &y[0]); + + if (x != 8) + abort (); + for (i = 0; i < 8; i++) + if (y[i] != 9 + i) + abort (); + + return 0; +} diff --git a/gcc-4.9/libgomp/testsuite/libgomp.fortran/pr63938-1.f90 b/gcc-4.9/libgomp/testsuite/libgomp.fortran/pr63938-1.f90 new file mode 100644 index 0000000..27501b2 --- /dev/null +++ b/gcc-4.9/libgomp/testsuite/libgomp.fortran/pr63938-1.f90 @@ -0,0 +1,14 @@ +! PR fortran/63938 +! { dg-do run } + +program pr63938_1 + integer :: i, x(1) + x(1) = 0 +!$omp parallel do + do i = 1, 1000 + !$omp atomic + x(1) = x(1) + 1 + end do +!$omp end parallel do + if (x(1) .ne. 1000) call abort +end program pr63938_1 diff --git a/gcc-4.9/libgomp/testsuite/libgomp.fortran/pr63938-2.f90 b/gcc-4.9/libgomp/testsuite/libgomp.fortran/pr63938-2.f90 new file mode 100644 index 0000000..e5f37ba --- /dev/null +++ b/gcc-4.9/libgomp/testsuite/libgomp.fortran/pr63938-2.f90 @@ -0,0 +1,18 @@ +! PR fortran/63938 +! { dg-do run } + +program pr63938_2 + type t + integer :: x + end type + integer :: i + type(t) :: x + x%x = 0 +!$omp parallel do + do i = 1, 1000 + !$omp atomic + x%x = x%x + 1 + end do +!$omp end parallel do + if (x%x .ne. 1000) call abort +end program pr63938_2 |