X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firprog.c;h=92b93f75174c8fae1fc2eefb72b06f7c1a4e0136;hb=26baaebd4406b34b8b04ef441d4e45e23c10a747;hp=bdcdae2c237fb0493e098c9e17238287801bb967;hpb=795490b811a500c73a408d3e5bf68fdeaa8a15ae;p=libfirm diff --git a/ir/ir/irprog.c b/ir/ir/irprog.c index bdcdae2c2..92b93f751 100644 --- a/ir/ir/irprog.c +++ b/ir/ir/irprog.c @@ -63,6 +63,7 @@ static ir_prog *new_incomplete_ir_prog(void) { res->types = NEW_ARR_F(ir_type *, 0); res->modes = NEW_ARR_F(ir_mode *, 0); res->opcodes = NEW_ARR_F(ir_op *, 0); + res->global_asms = NEW_ARR_F(ident *, 0); res->last_region_nr = 0; res->last_label_nr = 1; /* 0 is reserved as non-label */ res->max_irg_idx = 0; @@ -127,7 +128,7 @@ void init_irprog_2(void) { /* Create a new ir prog. Automatically called by init_firm through init_irprog. */ -ir_prog *new_ir_prog (void) { +ir_prog *new_ir_prog(void) { return complete_ir_prog(new_incomplete_ir_prog()); } @@ -147,6 +148,7 @@ void free_ir_prog(void) { finish_op(); DEL_ARR_F(irp->opcodes); + DEL_ARR_F(irp->global_asms); irp->name = NULL; irp->const_code_irg = NULL; @@ -163,7 +165,7 @@ ir_graph *get_irp_main_irg(void) { } void set_irp_main_irg(ir_graph *main_irg) { - assert (irp); + assert(irp); irp->main_irg = main_irg; } @@ -399,7 +401,6 @@ ir_node** get_irp_ip_outedges(void) { return irp->ip_outedges; } - irg_callee_info_state get_irp_callee_info_state(void) { return irp->callee_info_state; } @@ -417,3 +418,19 @@ ir_exc_region_t (get_irp_next_region_nr)(void) { ir_label_t (get_irp_next_label_nr)(void) { return _get_irp_next_label_nr(); } + +/* Add a new global asm include */ +void add_irp_asm(ident *asm_string) { + ARR_APP1(ident *, irp->global_asms, asm_string); +} + +/* Return the number of global asm includes. */ +int get_irp_n_asms(void) { + return ARR_LEN(irp->global_asms); +} + +/* Return the global asm include at position pos. */ +ident *get_irp_asm(int pos) { + assert(pos <= 0 && pos < get_irp_n_asms()); + return irp->global_asms[pos]; +}