derive access relations of call expressions from function summary
[pet.git] / summary.h
blob16e1057b5987a3fb9cec087476dba0d74df378ff
1 #ifndef PET_SUMMARY_H
2 #define PET_SUMMARY_H
4 #include <isl/map.h>
6 #include "expr_access_type.h"
8 #if defined(__cplusplus)
9 extern "C" {
10 #endif
12 enum pet_arg_type {
13 pet_arg_int,
14 pet_arg_array,
15 pet_arg_other
18 struct pet_function_summary;
19 typedef struct pet_function_summary pet_function_summary;
21 __isl_give pet_function_summary *pet_function_summary_alloc(isl_ctx *ctx,
22 unsigned n_arg);
23 __isl_give pet_function_summary *pet_function_summary_copy(
24 __isl_keep pet_function_summary *summary);
25 __isl_null pet_function_summary *pet_function_summary_free(
26 __isl_take pet_function_summary *summary);
28 int pet_function_summary_get_n_arg(__isl_keep pet_function_summary *summary);
30 __isl_give pet_function_summary *pet_function_summary_set_int(
31 __isl_take pet_function_summary *summary, int pos,
32 __isl_take isl_id *id);
33 __isl_give pet_function_summary *pet_function_summary_set_array(
34 __isl_take pet_function_summary *summary, int pos,
35 __isl_take isl_union_set *may_read, __isl_take isl_union_set *may_write,
36 __isl_take isl_union_set *must_write);
38 int pet_function_summary_arg_is_int(__isl_keep pet_function_summary *summary,
39 int pos);
40 int pet_function_summary_arg_is_array(__isl_keep pet_function_summary *summary,
41 int pos);
42 __isl_give isl_union_map *pet_function_summary_arg_get_access(
43 __isl_keep pet_function_summary *summary, int pos,
44 enum pet_expr_access_type type);
46 void pet_function_summary_dump_with_indent(
47 __isl_keep pet_function_summary *summary, int indent);
48 void pet_function_summary_dump(__isl_keep pet_function_summary *summary);
50 #if defined(__cplusplus)
52 #endif
54 #endif