libFirm
|
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. | |
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_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. |
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 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.
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 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_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)