aboutsummaryrefslogtreecommitdiff
path: root/libgomp
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2018-01-24 13:52:12 +0000
committerTom de Vries <vries@gcc.gnu.org>2018-01-24 13:52:12 +0000
commit3dede32b88100a88ff442c6228dddc989a8f407b (patch)
treeeb27b1c0bbca40f1fd3c04b8cda1fff577c383d1 /libgomp
parentbe606483c9fc0c79ffb671238404203e01288b00 (diff)
downloadgcc-3dede32b88100a88ff442c6228dddc989a8f407b.zip
gcc-3dede32b88100a88ff442c6228dddc989a8f407b.tar.gz
gcc-3dede32b88100a88ff442c6228dddc989a8f407b.tar.bz2
[nvptx, PR83589] Workaround for branch-around-nothing JIT bug
2018-01-24 Tom de Vries <tom@codesourcery.com> PR target/83589 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1. (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c. Add strict parameter. (prevent_branch_around_nothing): Insert dummy insn between branch to label and label with no ptx insn inbetween. * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn. * testsuite/libgomp.oacc-c-c++-common/pr83589.c: New test. From-SVN: r257016
Diffstat (limited to 'libgomp')
-rw-r--r--libgomp/ChangeLog5
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/pr83589.c21
2 files changed, 26 insertions, 0 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 11cda22..a064863 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,5 +1,10 @@
2018-01-24 Tom de Vries <tom@codesourcery.com>
+ PR target/83589
+ * testsuite/libgomp.oacc-c-c++-common/pr83589.c: New test.
+
+2018-01-24 Tom de Vries <tom@codesourcery.com>
+
PR target/81352
* testsuite/libgomp.oacc-fortran/pr81352.f90: New test.
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/pr83589.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr83589.c
new file mode 100644
index 0000000..a6ed5cf
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr83589.c
@@ -0,0 +1,21 @@
+/* { dg-do run } */
+/* { dg-set-target-env-var GOMP_NVPTX_JIT "-O0" } */
+
+#define n 32
+
+int
+main (void)
+{
+ int arr_a[n];
+
+#pragma acc parallel copyout(arr_a) num_gangs(1) num_workers(1) vector_length(32)
+ {
+ #pragma acc loop vector
+ for (int m = 0; m < 32; m++)
+ ;
+
+ #pragma acc loop vector
+ for (int m = 0; m < 32; m++)
+ arr_a[m] = 0;
+ }
+}