]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libbanshee/points-to/andersen_terms.h
6 #ifndef ANDERSEN_TERMS_H
7 #define ANDERSEN_TERMS_H
8 #include <engine/list.h>
10 #include <engine/bool.h>
13 typedef struct label_term_
* label_term
;
14 typedef struct argterm_
* argterm
;
15 typedef struct argterm_field_
* argterm_field
;
16 typedef struct aterm_
* aterm
;
18 extern bool flag_merge_projections
;
19 extern bool flag_eliminate_cycles
;
20 DECLARE_LIST(label_term_list
,label_term
)
21 label_term
label_term_zero(void);
22 label_term
label_term_one(void);
23 label_term
label_term_fresh(const char *name
);
24 label_term
label_term_union(label_term_list exprs
) ;
25 label_term
label_term_inter(label_term_list exprs
) ;
26 label_term
label_term_constant(const char *name
) ;
27 bool label_term_is_constant(label_term e
,const char *name
);
28 void label_term_inclusion(label_term e1
,label_term e2
) ;
29 void label_term_unify(label_term e1
,label_term e2
) ;
30 label_term_list
label_term_tlb(label_term e
) ;
32 void label_term_print(FILE* arg1
,label_term arg2
) ;
33 DECLARE_LIST(argterm_map
,argterm_field
)
34 argterm_field
argterm_make_field(const char *label
,aterm expr
);
35 argterm
argterm_zero(void);
36 argterm
argterm_one(void);
37 argterm
argterm_abs(void);
38 argterm
argterm_wild(void);
39 argterm
argterm_fresh(const char *name
);
40 argterm
argterm_row(argterm_map fields
,argterm rest
) ;
41 aterm
argterm_extract_field(const char *field_name
,argterm row
);
42 argterm
argterm_extract_rest(argterm row
);
43 argterm_map
argterm_extract_fields(argterm row
);
44 void argterm_inclusion(argterm row1
,argterm row2
) ;
45 void argterm_unify(argterm row1
,argterm row2
) ;
46 void argterm_print(FILE *f
,argterm row
) ;
48 DECLARE_LIST(aterm_list
,aterm
)
49 aterm
aterm_zero(void);
50 aterm
aterm_one(void);
51 aterm
aterm_fresh(const char *name
);
52 aterm
aterm_union(aterm_list exprs
) ;
53 aterm
aterm_inter(aterm_list exprs
) ;
54 aterm
aterm_constant(const char *name
) ;
55 bool aterm_is_constant(aterm e
,const char *name
);
56 void aterm_inclusion(aterm e1
,aterm e2
) ;
57 void aterm_unify(aterm e1
,aterm e2
) ;
58 aterm_list
aterm_tlb(aterm e
) ;
60 bool aterm_is_ref(aterm e
);
61 aterm
ref(label_term arg1
,aterm arg2
,aterm arg3
) ;
62 struct ref_decon
ref_decon(aterm arg1
);
69 label_term
ref_proj0(aterm arg1
) ;
70 aterm
ref_pat0(label_term arg1
) ;
71 aterm
ref_proj1(aterm arg1
) ;
72 aterm
ref_pat1(aterm arg1
) ;
73 aterm
ref_proj2(aterm arg1
) ;
74 aterm
ref_pat2(aterm arg1
) ;
75 bool aterm_is_lam(aterm e
);
76 aterm
lam(label_term arg1
,argterm arg2
,aterm arg3
) ;
77 struct lam_decon
lam_decon(aterm arg1
);
84 label_term
lam_proj0(aterm arg1
) ;
85 aterm
lam_pat0(label_term arg1
) ;
86 argterm
lam_proj1(aterm arg1
) ;
87 aterm
lam_pat1(argterm arg1
) ;
88 aterm
lam_proj2(aterm arg1
) ;
89 aterm
lam_pat2(aterm arg1
) ;
90 void aterm_print(FILE* arg1
,aterm arg2
) ;
93 Init/reset engine, print constraint graphs
96 void andersen_terms_init(void);
97 void andersen_terms_reset(void) ;
98 void andersen_terms_stats(FILE * arg1
);
99 void andersen_terms_print_graph(FILE * arg1
);