X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=include%2Flibfirm%2Firprog.h;h=01aefdbbcb0d5e1ebadf55a94aa3a6423576a43c;hb=a6a29ed6f300163d4008ec8fe43ef4d78631096b;hp=394df4d296e2d8e4454e452f91cf69bdacae7255;hpb=1ce363f80e6a204d4011f85813362d9bd1d0e7e4;p=libfirm diff --git a/include/libfirm/irprog.h b/include/libfirm/irprog.h index 394df4d29..01aefdbbc 100644 --- a/include/libfirm/irprog.h +++ b/include/libfirm/irprog.h @@ -46,6 +46,23 @@ #include "firm_types.h" #include "irgraph.h" +typedef enum ir_segment_t { + /** "normal" global data */ + IR_SEGMENT_GLOBAL, + /** thread local storage segment */ + IR_SEGMENT_THREAD_LOCAL, + /** + * the constructors segment. Contains pointers to functions which are + * executed on module initialization (program start or when a library is + * dynamically loaded) + */ + IR_SEGMENT_CONSTRUCTORS, + /** like constructors, but functions are executed on module exit */ + IR_SEGMENT_DESTRUCTORS, + + IR_SEGMENT_COUNT +} ir_segment_t; + /** * Datastructure that holds central information about a program * @@ -140,9 +157,15 @@ int get_irp_n_allirgs(void); pseudo graphs). Visits first graphs, then pseudo graphs. */ ir_graph *get_irp_allirg(int pos); +/** + * returns the type containing the entities for a segment + */ +ir_type *get_segment_type(ir_segment_t segment); + /** * 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_type *get_glob_type(void); @@ -229,4 +252,13 @@ ir_exc_region_t get_irp_next_region_nr(void); /** Returns a new, unique label number. */ ir_label_t get_irp_next_label_nr(void); +/** Add a new global asm include. */ +void add_irp_asm(ident *asm_string); + +/** Return the number of global asm includes. */ +int get_irp_n_asms(void); + +/** Return the global asm include at position pos. */ +ident *get_irp_asm(int pos); + #endif