[gcc r8-10807] tree-optimization/93964 - adjust ISL code generation for pointer params
Richard Biener
rguenth@gcc.gnu.org
Wed Mar 17 12:05:07 GMT 2021
https://gcc.gnu.org/g:5fb76d406e75acc7223df06b66b95e70705e1185
commit r8-10807-g5fb76d406e75acc7223df06b66b95e70705e1185
Author: Richard Biener <rguenther@suse.de>
Date: Wed Mar 4 10:40:32 2020 +0100
tree-optimization/93964 - adjust ISL code generation for pointer params
Pointers eventually need intermediate conversions in code generation.
Allowing them is much easier than fending them off since niter
and scev expansion easily drag those in.
2020-02-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/93964
* graphite-isl-ast-to-gimple.c
(gcc_expression_from_isl_ast_expr_id): Add intermediate
conversion for pointer to integer converts.
* graphite-scop-detection.c (assign_parameter_index_in_region):
Relax assert.
* gcc.dg/graphite/pr93964.c: New testcase.
(cherry picked from commit bb0ec9cffb1d0a3326d8c4ed197717fc08eeec37)
Diff:
---
gcc/graphite-isl-ast-to-gimple.c | 3 +++
gcc/graphite-scop-detection.c | 1 -
gcc/testsuite/gcc.dg/graphite/pr93964.c | 19 +++++++++++++++++++
3 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c
index b607b12434d..6d576dcb850 100644
--- a/gcc/graphite-isl-ast-to-gimple.c
+++ b/gcc/graphite-isl-ast-to-gimple.c
@@ -266,6 +266,9 @@ gcc_expression_from_isl_ast_expr_id (tree type,
tree t = res->second;
if (useless_type_conversion_p (type, TREE_TYPE (t)))
return t;
+ if (POINTER_TYPE_P (TREE_TYPE (t))
+ && !POINTER_TYPE_P (type) && !ptrofftype_p (type))
+ t = fold_convert (sizetype, t);
return fold_convert (type, t);
}
diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c
index fc717c5b242..934a927fc34 100644
--- a/gcc/graphite-scop-detection.c
+++ b/gcc/graphite-scop-detection.c
@@ -1100,7 +1100,6 @@ static void
assign_parameter_index_in_region (tree name, sese_info_p region)
{
gcc_assert (TREE_CODE (name) == SSA_NAME
- && INTEGRAL_TYPE_P (TREE_TYPE (name))
&& ! defined_in_sese_p (name, region->region));
int i;
diff --git a/gcc/testsuite/gcc.dg/graphite/pr93964.c b/gcc/testsuite/gcc.dg/graphite/pr93964.c
new file mode 100644
index 00000000000..80fc523b855
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/pr93964.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O -floop-nest-optimize" } */
+
+int *
+eo (void);
+
+void
+g4 (int *nt)
+{
+ int dh, t2 = (__INTPTR_TYPE__)eo ();
+
+ for (dh = 0; dh < 2; ++dh)
+ {
+ int m7;
+
+ for (m7 = 0; m7 < t2; ++m7)
+ nt[m7] = 0;
+ }
+}
More information about the Gcc-cvs
mailing list