From 278bf466e18d80d0b734081b1579bbe6987f0449 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Fri, 15 Apr 2016 12:09:29 +0200 Subject: [PATCH] add PetScan::set_array_size This allows the size expression computed by PetScan::get_array_size to be overridden. In particular, this will be used to replace the size expression of an array by one with substituted size parameters. Signed-off-by: Sven Verdoolaege --- scan.cc | 8 ++++++++ scan.h | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/scan.cc b/scan.cc index 02cd5d3..bf82c9a 100644 --- a/scan.cc +++ b/scan.cc @@ -2663,6 +2663,14 @@ __isl_give pet_expr *PetScan::get_array_size(__isl_keep isl_id *id) return expr; } +/* Set the array size of the array identified by "id" to "size", + * replacing any previously stored value. + */ +void PetScan::set_array_size(__isl_take isl_id *id, __isl_take pet_expr *size) +{ + id_size = isl_id_to_pet_expr_set(id_size, id, size); +} + /* Does "expr" represent the "integer" infinity? */ static int is_infty(__isl_keep pet_expr *expr) diff --git a/scan.h b/scan.h index b532e4a..bb91b60 100644 --- a/scan.h +++ b/scan.h @@ -101,7 +101,7 @@ struct PetScan { bool partial; /* A cache of size expressions for array identifiers as computed - * by PetScan::get_array_size. + * by PetScan::get_array_size, or set by PetScan::set_array_size. */ isl_id_to_pet_expr *id_size; /* A cache of size expressions for array types as computed @@ -165,6 +165,7 @@ struct PetScan { static __isl_give isl_val *extract_int(isl_ctx *ctx, clang::IntegerLiteral *expr); __isl_give pet_expr *get_array_size(__isl_keep isl_id *id); + void set_array_size(__isl_take isl_id *id, __isl_take pet_expr *size); struct pet_array *extract_array(__isl_keep isl_id *id, PetTypes *types, __isl_keep pet_context *pc); private: -- 2.11.4.GIT