libFirm 1.20
|
ir_prog keeps information about a program: More...
Typedefs | |
typedef struct ir_prog | ir_prog |
Program. | |
Enumerations | |
enum | ir_segment_t { IR_SEGMENT_FIRST, IR_SEGMENT_GLOBAL = IR_SEGMENT_FIRST, IR_SEGMENT_THREAD_LOCAL, IR_SEGMENT_CONSTRUCTORS, IR_SEGMENT_DESTRUCTORS, IR_SEGMENT_LAST = IR_SEGMENT_DESTRUCTORS } |
Segment. More... | |
enum | irp_resources_t { IRP_RESOURCE_NONE = 0, IRP_RESOURCE_IRG_LINK = 1 << 0, IRP_RESOURCE_ENTITY_LINK = 1 << 1, IRP_RESOURCE_TYPE_VISITED = 1 << 2, IRP_RESOURCE_TYPE_LINK = 1 << 3 } |
Resources usable by algorithms modifying the program. More... | |
Functions | |
void | irp_reserve_resources (ir_prog *irp, irp_resources_t resources) |
Reserve resources available for a whole program. | |
void | irp_free_resources (ir_prog *irp, irp_resources_t resources) |
Frees resources availabel for a whole program. | |
irp_resources_t | irp_resources_reserved (const ir_prog *irp) |
Returns currently reserved whole program resources. | |
ir_prog * | get_irp (void) |
Returns the current irp from where everything in the current module can be accessed. | |
void | set_irp (ir_prog *irp) |
Sets current irp. | |
ir_prog * | new_ir_prog (const char *name) |
Creates a new ir_prog (a module or compilation unit). | |
void | free_ir_prog (void) |
Frees all memory used by irp. | |
void | set_irp_prog_name (ident *name) |
Sets the file name / executable name or the like. | |
int | irp_prog_name_is_set (void) |
Returns true if the user ever set a program name. | |
ident * | get_irp_ident (void) |
Returns the name of the current irp. | |
const char * | get_irp_name (void) |
Returns the name of the current irp. | |
ir_graph * | get_irp_main_irg (void) |
Returns the main routine of the compiled program. | |
void | set_irp_main_irg (ir_graph *main_irg) |
Sets the main routine of the compiled program. | |
void | add_irp_irg (ir_graph *irg) |
Adds irg to the list of ir graphs in the current irp. | |
void | remove_irp_irg_from_list (ir_graph *irg) |
Removes irg from the list of irgs and shrinks the list by one. | |
void | remove_irp_irg (ir_graph *irg) |
Removes irg from the list of irgs, deallocates it and shrinks the list by one. | |
size_t | get_irp_last_idx (void) |
returns the biggest not used irg index number | |
size_t | get_irp_n_irgs (void) |
Returns the number of ir graphs in the irp. | |
ir_graph * | get_irp_irg (size_t pos) |
Returns the ir graph at position pos in the irp. | |
void | set_irp_irg (size_t pos, ir_graph *irg) |
Sets the ir graph at position pos. | |
ir_type * | get_segment_type (ir_segment_t segment) |
Returns the type containing the entities for a segment. | |
void | set_segment_type (ir_segment_t segment, ir_type *new_type) |
Changes a segment segment type for the program. | |
ir_type * | get_glob_type (void) |
Returns the "global" type of the irp. | |
ir_type * | get_tls_type (void) |
Returns the "thread local storage" type of the irp. | |
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. | |
void | set_irp_type (size_t pos, ir_type *typ) |
Overwrites the type at position pos with another type. | |
ir_graph * | get_const_code_irg (void) |
Returns the graph for global constants of the current irp. | |
irg_phase_state | get_irp_phase_state (void) |
The phase state for the program. | |
void | set_irp_phase_state (irg_phase_state s) |
Sets the phase state of the program. | |
ir_prog_pass_t * | set_irp_phase_state_pass (const char *name, irg_phase_state state) |
Creates an ir_prog pass for set_irp_phase_state(). | |
irg_callee_info_state | get_irp_callee_info_state (void) |
Returns callee info state for the whole program. | |
void | set_irp_callee_info_state (irg_callee_info_state s) |
Sets callee info state for the whole program. | |
ir_label_t | get_irp_next_label_nr (void) |
Returns a new, unique label number. | |
void | add_irp_asm (ident *asm_string) |
Add a new global asm include. | |
size_t | get_irp_n_asms (void) |
Returns the number of global asm includes. | |
ident * | get_irp_asm (size_t pos) |
Returns the global asm include at position pos. | |
int | get_irp_optimization_dumps (void) |
Returns whether optimization dump vcg graphs. | |
void | enable_irp_optimization_dumps (void) |
Enable vcg dumping of optimization. | |
Variables | |
ir_prog * | irp |
A variable pointing to the current irp (program or module). |
ir_prog keeps information about a program:
Program.
Definition at line 90 of file firm_types.h.
enum ir_segment_t |
Segment.
A progrom has a number of special segments at the toplevel which modify the behaviour of the entities in them.
enum irp_resources_t |
Resources usable by algorithms modifying the program.
IRP_RESOURCE_NONE |
no resource |
IRP_RESOURCE_IRG_LINK |
irg link field
|
IRP_RESOURCE_ENTITY_LINK |
entity link field
|
IRP_RESOURCE_TYPE_VISITED |
type visited field |
IRP_RESOURCE_TYPE_LINK |
type link field
|
void add_irp_asm | ( | ident * | asm_string | ) |
Add a new global asm include.
void add_irp_irg | ( | ir_graph * | irg | ) |
Adds irg to the list of ir graphs in the current irp.
void enable_irp_optimization_dumps | ( | void | ) |
Enable vcg dumping of optimization.
void free_ir_prog | ( | void | ) |
Frees all memory used by irp.
Types in type list and irgs in irg list must be freed by hand before.
ir_graph* get_const_code_irg | ( | void | ) |
Returns the graph for global constants of the current irp.
Returns an irgraph that only contains constant expressions for constant entities. Do not use any access function for this graph, do not generate code for this graph. This graph contains only one block. The constant expressions may not contain control flow. Walking the graph starting from any node will not reach the block or any controlflow. See also copy_const_code() in entity.h.
ir_type* get_glob_type | ( | void | ) |
Returns the "global" type of the irp.
Upon creation this is an empty class type. This is a convenience function for get_segment_type(IR_SEGMENT_GLOBAL)
ir_prog* get_irp | ( | void | ) |
Returns the current irp from where everything in the current module can be accessed.
ident* get_irp_asm | ( | size_t | pos | ) |
Returns the global asm include at position pos.
irg_callee_info_state get_irp_callee_info_state | ( | void | ) |
Returns callee info state for the whole program.
ident* get_irp_ident | ( | void | ) |
Returns the name of the current irp.
ir_graph* get_irp_irg | ( | size_t | pos | ) |
Returns the ir graph at position pos in the irp.
size_t get_irp_last_idx | ( | void | ) |
returns the biggest not used irg index number
ir_graph* get_irp_main_irg | ( | void | ) |
Returns the main routine of the compiled program.
size_t get_irp_n_asms | ( | void | ) |
Returns the number of global asm includes.
size_t get_irp_n_irgs | ( | void | ) |
Returns the number of ir graphs in the irp.
size_t get_irp_n_types | ( | void | ) |
Returns the number of all types in the irp.
const char* get_irp_name | ( | void | ) |
Returns the name of the current irp.
ir_label_t get_irp_next_label_nr | ( | void | ) |
Returns a new, unique label number.
int get_irp_optimization_dumps | ( | void | ) |
Returns whether optimization dump vcg graphs.
irg_phase_state get_irp_phase_state | ( | void | ) |
The phase state for the program.
The phase state of the whole program is building: if at least one graph is state_building or one type is incomplete. high: all graphs are in state high or low, all types are constructed. low: all graphs are in state low, all types are in state layout fixed.
ir_type* get_irp_type | ( | size_t | pos | ) |
Returns the type at position pos in the irp.
ir_type* get_segment_type | ( | ir_segment_t | segment | ) |
Returns the type containing the entities for a segment.
segment | the segment |
ir_type* get_tls_type | ( | void | ) |
Returns the "thread local storage" type of the irp.
Upon creation this is an empty struct type. This is a convenience function for get_segment_type(IR_SEGMENT_THREAD_LOCAL)
void irp_free_resources | ( | ir_prog * | irp, |
irp_resources_t | resources | ||
) |
Frees resources availabel for a whole program.
int irp_prog_name_is_set | ( | void | ) |
Returns true if the user ever set a program name.
void irp_reserve_resources | ( | ir_prog * | irp, |
irp_resources_t | resources | ||
) |
Reserve resources available for a whole program.
This is a debug tool: All code should properly allocate the resources it uses so if two interlocked algorithms use the same resources that bug will get detected.
irp_resources_t irp_resources_reserved | ( | const ir_prog * | irp | ) |
Returns currently reserved whole program resources.
ir_prog* new_ir_prog | ( | const char * | name | ) |
Creates a new ir_prog (a module or compilation unit).
Note: This does not set irp to the newly created ir_prog
name | the name of this irp (module) |
void remove_irp_irg | ( | ir_graph * | irg | ) |
Removes irg from the list of irgs, deallocates it and shrinks the list by one.
void remove_irp_irg_from_list | ( | ir_graph * | irg | ) |
Removes irg from the list of irgs and shrinks the list by one.
void set_irp | ( | ir_prog * | irp | ) |
Sets current irp.
void set_irp_callee_info_state | ( | irg_callee_info_state | s | ) |
Sets callee info state for the whole program.
void set_irp_irg | ( | size_t | pos, |
ir_graph * | irg | ||
) |
Sets the ir graph at position pos.
void set_irp_main_irg | ( | ir_graph * | main_irg | ) |
Sets the main routine of the compiled program.
void set_irp_phase_state | ( | irg_phase_state | s | ) |
Sets the phase state of the program.
ir_prog_pass_t* set_irp_phase_state_pass | ( | const char * | name, |
irg_phase_state | state | ||
) |
Creates an ir_prog pass for set_irp_phase_state().
name | the name of this pass or NULL |
state | the state to set |
void set_irp_prog_name | ( | ident * | name | ) |
Sets the file name / executable name or the like.
Initially the ident 'no_name_set'.
void set_irp_type | ( | size_t | pos, |
ir_type * | typ | ||
) |
Overwrites the type at position pos with another type.
void set_segment_type | ( | ir_segment_t | segment, |
ir_type * | new_type | ||
) |
Changes a segment segment type for the program.
(use with care)