diff mbox

[gomp4,committed] Handle ptr iterator in acc loop

Message ID 5668644A.9070200@mentor.com
State New
Headers show

Commit Message

Tom de Vries Dec. 9, 2015, 5:26 p.m. UTC
Hi,

this patch ensures that the &b[0][0][0] initializer of the acc loop in 
the testcase is properly compiled.

Committed to gomp-4_0-branch.

Thanks,
- Tom
diff mbox

Patch

Handle ptr iterator in acc loop

2015-12-09  Tom de Vries  <tom@codesourcery.com>

	* omp-low.c (expand_omp_for_generic): Gimplify seq_loop loop start and
	limit.

	* c-c++-common/goacc/kernels-loop-acc-loop-ptr-it.c: New test.

---
 gcc/omp-low.c                                              |  5 +++++
 .../c-c++-common/goacc/kernels-loop-acc-loop-ptr-it.c      | 14 ++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 9ef7161..b8399ae 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -8522,6 +8522,11 @@  expand_omp_for_generic (struct omp_region *region,
       tree n1 = fold_convert (fd->iter_type, fd->loop.n1);
       tree n2 = fold_convert (fd->iter_type, fd->loop.n2);
 
+      n1 = force_gimple_operand_gsi_1 (&gsi, n1, is_gimple_reg, NULL_TREE, true,
+				       GSI_SAME_STMT);
+      n2 = force_gimple_operand_gsi_1 (&gsi, n2, is_gimple_reg, NULL_TREE, true,
+				       GSI_SAME_STMT);
+
       assign_stmt = gimple_build_assign (istart0, n1);
       gsi_insert_before (&gsi, assign_stmt, GSI_SAME_STMT);
 
diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-loop-acc-loop-ptr-it.c b/gcc/testsuite/c-c++-common/goacc/kernels-loop-acc-loop-ptr-it.c
new file mode 100644
index 0000000..d806a01
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/goacc/kernels-loop-acc-loop-ptr-it.c
@@ -0,0 +1,14 @@ 
+float b[10][15][10];
+
+void
+foo (void)
+{
+  float *i;
+
+#pragma acc kernels
+  {
+#pragma acc loop
+    for (i = &b[0][0][0]; i < &b[0][0][10]; i++)
+      ;
+  }
+}