From bb0ec9cffb1d0a3326d8c4ed197717fc08eeec37 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 4 Mar 2020 10:40:32 +0100 Subject: [PATCH] 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 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 dca54007ebb5d49c3d6cea63ee87fd8f3ccb9ca5) --- 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(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/pr93964.c diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c index 40d1e8de6ae9..556264dc0d30 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 4534d43721f4..d6e804b2ddfd 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -1103,7 +1103,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 000000000000..80fc523b8556 --- /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; + } +} -- 2.43.5