]> git.ipfire.org Git - thirdparty/gcc.git/blob - libbanshee/points-to/andersen_terms.h
Merge tree-ssa-20020619-branch into mainline.
[thirdparty/gcc.git] / libbanshee / points-to / andersen_terms.h
1 /*
2
3 DO NOT edit this file
4
5 */
6 #ifndef ANDERSEN_TERMS_H
7 #define ANDERSEN_TERMS_H
8 #include <engine/list.h>
9 #include <stdio.h>
10 #include <engine/bool.h>
11
12
13 typedef struct label_term_* label_term;
14 typedef struct argterm_* argterm;
15 typedef struct argterm_field_* argterm_field;
16 typedef struct aterm_* aterm;
17
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) ;
31
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) ;
47
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) ;
59
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);
63 struct ref_decon
64 {
65 label_term f0;
66 aterm f1;
67 aterm f2;
68 };
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);
78 struct lam_decon
79 {
80 label_term f0;
81 argterm f1;
82 aterm f2;
83 };
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) ;
91 /*
92
93 Init/reset engine, print constraint graphs
94
95 */
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);
100 #endif