libFirm
Loading...
Searching...
No Matches
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
66ENUM_COUNTABLE(ir_segment_t)
67
68
75FIRM_API ir_prog *irp;
76
92ENUM_BITSET(irp_resources_t)
93
94
106
113FIRM_API ir_prog *get_irp(void);
114
116FIRM_API void set_irp(ir_prog *irp);
117
124FIRM_API ir_prog *new_ir_prog(const char *name);
125
128FIRM_API void free_ir_prog(void);
129
132FIRM_API void set_irp_prog_name(ident *name);
133
135FIRM_API int irp_prog_name_is_set(void);
136
138FIRM_API ident *get_irp_ident(void);
139
141FIRM_API const char *get_irp_name(void);
142
145
147FIRM_API void set_irp_main_irg(ir_graph *main_irg);
148
150FIRM_API size_t get_irp_last_idx(void);
151
153FIRM_API size_t get_irp_n_irgs(void);
154
156FIRM_API ir_graph *get_irp_irg(size_t pos);
157
159FIRM_API void set_irp_irg(size_t pos, ir_graph *irg);
160
167
172FIRM_API void set_segment_type(ir_segment_t segment, ir_type *new_type);
173
179FIRM_API ir_type *get_glob_type(void);
180
186FIRM_API ir_type *get_tls_type(void);
187
194
199FIRM_API size_t get_irp_n_types(void);
200
205FIRM_API ir_type *get_irp_type(size_t pos);
206
211FIRM_API void set_irp_type(size_t pos, ir_type *typ);
212
225
232
234FIRM_API ir_label_t get_irp_next_label_nr(void);
235
237FIRM_API void add_irp_asm(ident *asm_string);
238
240FIRM_API size_t get_irp_n_asms(void);
241
243FIRM_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_callee_info_state
state: callee_information_state Call nodes contain a list of possible callees.
Definition irgraph.h:225
struct ir_graph ir_graph
Procedure Graph.
Definition firm_types.h:74
int irp_prog_name_is_set(void)
Returns true if the user ever set a program name.
ir_label_t get_irp_next_label_nr(void)
Returns a new, unique label number.
irg_callee_info_state get_irp_callee_info_state(void)
Returns callee info state for the whole program.
void irp_reserve_resources(ir_prog *irp, irp_resources_t resources)
Reserve resources available for a whole program.
irp_resources_t irp_resources_reserved(const ir_prog *irp)
Returns currently reserved whole program resources.
const char * get_irp_name(void)
Returns the name of the current irp.
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(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 add_irp_asm(ident *asm_string)
Add a new global asm include.
irp_resources_t
Resources usable by algorithms modifying the program.
Definition irprog.h:80
ident * get_irp_asm(size_t pos)
Returns the global asm include at position pos.
void set_irp_type(size_t pos, ir_type *typ)
Overwrites the type at position pos with another type.
ir_type * get_segment_type(ir_segment_t segment)
Returns the type containing the entities for a segment.
ir_prog * irp
A variable pointing to the current irp (program or module).
Definition irprog.h:75
ir_entity * ir_get_global(ident *name)
Returns global entity with name name.
ir_type * get_irp_type(size_t pos)
Returns the type at position pos in the irp.
void set_irp_callee_info_state(irg_callee_info_state s)
Sets callee info state for the whole program.
void free_ir_prog(void)
Frees all memory used by irp.
size_t get_irp_n_asms(void)
Returns the number of global asm includes.
void irp_free_resources(ir_prog *irp, irp_resources_t resources)
Frees resources available for a whole program.
void set_irp_prog_name(ident *name)
Sets the file name / executable name or the like.
size_t get_irp_last_idx(void)
returns the biggest not used irg index number
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.
void set_irp_main_irg(ir_graph *main_irg)
Sets the main routine of the compiled program.
ir_graph * get_const_code_irg(void)
Returns the graph for global constants of the current irp.
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.
ir_graph * get_irp_main_irg(void)
Returns the main routine of the compiled program.
ir_type * get_glob_type(void)
Returns the "global" type of the irp.
struct ir_prog ir_prog
Program.
Definition firm_types.h:77
void set_irp_irg(size_t pos, ir_graph *irg)
Sets the ir graph at position pos.
ident * get_irp_ident(void)
Returns the name of the current irp.
void set_segment_type(ir_segment_t segment, ir_type *new_type)
Changes a segment segment type for the program.
@ IRP_RESOURCE_ENTITY_LINK
entity link field
Definition irprog.h:85
@ IRP_RESOURCE_IRG_LINK
irg link field
Definition irprog.h:83
@ IRP_RESOURCE_NONE
no resource
Definition irprog.h:81
@ IRP_RESOURCE_TYPE_LINK
type link field
Definition irprog.h:90
@ IRP_RESOURCE_TYPE_VISITED
type visited field
Definition irprog.h:88
@ IR_SEGMENT_CONSTRUCTORS
the constructors segment.
Definition irprog.h:58
@ IR_SEGMENT_DESTRUCTORS
like constructors, but functions are executed on module exit
Definition irprog.h:60
@ IR_SEGMENT_JCR
java class registry
Definition irprog.h:62
@ IR_SEGMENT_LAST
Definition irprog.h:64
@ IR_SEGMENT_FIRST
Definition irprog.h:48
@ IR_SEGMENT_GLOBAL
"normal" global data
Definition irprog.h:50
@ IR_SEGMENT_THREAD_LOCAL
thread local storage segment
Definition irprog.h:52
struct ir_entity ir_entity
Entity.
Definition firm_types.h:83
struct ir_type ir_type
Type.
Definition firm_types.h:71