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(+)
@@ -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);
new file mode 100644
@@ -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++)
+ ;
+ }
+}