libFirm
irprog.h
1 /*
2  * This file is part of libFirm.
3  * Copyright (C) 2012 University of Karlsruhe.
4  */
5 
15 #ifndef FIRM_IR_IRPROG_H
16 #define FIRM_IR_IRPROG_H
17 
18 #include <stddef.h>
19 #include "firm_types.h"
20 #include "irgraph.h"
21 
22 #include "begin.h"
23 
47 typedef enum ir_segment_t {
63 
65 } ir_segment_t;
66 ENUM_COUNTABLE(ir_segment_t)
67 
68 
75 FIRM_API ir_prog *irp;
76 
80 typedef enum irp_resources_t {
92 ENUM_BITSET(irp_resources_t)
93 
94 
101 FIRM_API void irp_reserve_resources(ir_prog *irp, irp_resources_t resources);
103 FIRM_API void irp_free_resources(ir_prog *irp, irp_resources_t resources);
106 
113 FIRM_API ir_prog *get_irp(void);
114 
116 FIRM_API void set_irp(ir_prog *irp);
117 
124 FIRM_API ir_prog *new_ir_prog(const char *name);
125 
128 FIRM_API void free_ir_prog(void);
129 
132 FIRM_API void set_irp_prog_name(ident *name);
133 
135 FIRM_API int irp_prog_name_is_set(void);
136 
138 FIRM_API ident *get_irp_ident(void);
139 
141 FIRM_API const char *get_irp_name(void);
142 
144 FIRM_API ir_graph *get_irp_main_irg(void);
145 
147 FIRM_API void set_irp_main_irg(ir_graph *main_irg);
148 
150 FIRM_API size_t get_irp_last_idx(void);
151 
153 FIRM_API size_t get_irp_n_irgs(void);
154 
156 FIRM_API ir_graph *get_irp_irg(size_t pos);
157 
159 FIRM_API void set_irp_irg(size_t pos, ir_graph *irg);
160 
166 FIRM_API ir_type *get_segment_type(ir_segment_t segment);
167 
172 FIRM_API void set_segment_type(ir_segment_t segment, ir_type *new_type);
173 
179 FIRM_API ir_type *get_glob_type(void);
180 
186 FIRM_API ir_type *get_tls_type(void);
187 
193 FIRM_API ir_entity *ir_get_global(ident *name);
194 
199 FIRM_API size_t get_irp_n_types(void);
200 
205 FIRM_API ir_type *get_irp_type(size_t pos);
206 
211 FIRM_API void set_irp_type(size_t pos, ir_type *typ);
212 
224 FIRM_API ir_graph *get_const_code_irg(void);
225 
232 
234 FIRM_API ir_label_t get_irp_next_label_nr(void);
235 
237 FIRM_API void add_irp_asm(ident *asm_string);
238 
240 FIRM_API size_t get_irp_n_asms(void);
241 
243 FIRM_API ident *get_irp_asm(size_t pos);
244 
247 #include "end.h"
248 
249 #endif
const char ident
Identifier.
Definition: firm_types.h:50
irg link field
Definition: irprog.h:83
void set_irp_callee_info_state(irg_callee_info_state s)
Sets callee info state for the whole program.
ir_graph * get_irp_irg(size_t pos)
Returns the ir graph at position pos in the irp.
ident * get_irp_ident(void)
Returns the name of the current irp.
void set_irp(ir_prog *irp)
Sets current irp.
void set_irp_type(size_t pos, ir_type *typ)
Overwrites the type at position pos with another type.
type visited field
Definition: irprog.h:88
ir_entity * ir_get_global(ident *name)
Returns global entity with name name.
void irp_free_resources(ir_prog *irp, irp_resources_t resources)
Frees resources available for a whole program.
size_t get_irp_n_types(void)
Returns the number of all types in the irp.
ir_type * get_irp_type(size_t pos)
Returns the type at position pos in the irp.
like constructors, but functions are executed on module exit
Definition: irprog.h:60
ir_prog * irp
A variable pointing to the current irp (program or module).
Definition: irprog.h:75
irg_callee_info_state
state: callee_information_state Call nodes contain a list of possible callees.
Definition: irgraph.h:225
const char * get_irp_name(void)
Returns the name of the current irp.
void set_irp_irg(size_t pos, ir_graph *irg)
Sets the ir graph at position pos.
type link field
Definition: irprog.h:90
size_t get_irp_n_irgs(void)
Returns the number of ir graphs in the irp.
void irp_reserve_resources(ir_prog *irp, irp_resources_t resources)
Reserve resources available for a whole program.
struct ir_type ir_type
Type.
Definition: firm_types.h:71
ir_segment_t
Segment.
Definition: irprog.h:47
ir_prog * get_irp(void)
Returns the current irp from where everything in the current module can be accessed.
no resource
Definition: irprog.h:81
ir_type * get_glob_type(void)
Returns the "global" type of the irp.
void add_irp_asm(ident *asm_string)
Add a new global asm include.
size_t get_irp_last_idx(void)
returns the biggest not used irg index number
void set_segment_type(ir_segment_t segment, ir_type *new_type)
Changes a segment segment type for the program.
the constructors segment.
Definition: irprog.h:58
int irp_prog_name_is_set(void)
Returns true if the user ever set a program name.
"normal" global data
Definition: irprog.h:50
void free_ir_prog(void)
Frees all memory used by irp.
irg_callee_info_state get_irp_callee_info_state(void)
Returns callee info state for the whole program.
struct ir_prog ir_prog
Program.
Definition: firm_types.h:77
size_t get_irp_n_asms(void)
Returns the number of global asm includes.
entity link field
Definition: irprog.h:85
ir_graph * get_const_code_irg(void)
Returns the graph for global constants of the current irp.
thread local storage segment
Definition: irprog.h:52
void set_irp_prog_name(ident *name)
Sets the file name / executable name or the like.
ir_graph * get_irp_main_irg(void)
Returns the main routine of the compiled program.
ir_type * get_segment_type(ir_segment_t segment)
Returns the type containing the entities for a segment.
struct ir_entity ir_entity
Entity.
Definition: firm_types.h:83
ir_prog * new_ir_prog(const char *name)
Creates a new ir_prog (a module or compilation unit).
ir_type * get_tls_type(void)
Returns the "thread local storage" type of the irp.
irp_resources_t
Resources usable by algorithms modifying the program.
Definition: irprog.h:80
irp_resources_t irp_resources_reserved(const ir_prog *irp)
Returns currently reserved whole program resources.
ident * get_irp_asm(size_t pos)
Returns the global asm include at position pos.
struct ir_graph ir_graph
Procedure Graph.
Definition: firm_types.h:74
java class registry
Definition: irprog.h:62
void set_irp_main_irg(ir_graph *main_irg)
Sets the main routine of the compiled program.
ir_label_t get_irp_next_label_nr(void)
Returns a new, unique label number.