X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Firmemory.h;h=0518d772609cd0705dc3be369cd8795490c26887;hb=74d5a9023b48f346eead323a74e28297659e34b7;hp=62e19dce5490bf004cf5d4e37ad57b11ad65c640;hpb=acbdf295cc01d5b69b1cb8ea2c7764dca1e7b8ac;p=libfirm diff --git a/include/libfirm/irmemory.h b/include/libfirm/irmemory.h index 62e19dce5..0518d7726 100644 --- a/include/libfirm/irmemory.h +++ b/include/libfirm/irmemory.h @@ -28,6 +28,7 @@ #define FIRM_ANA_IRMEMORY_H #include "firm_types.h" +#include "begin.h" /** The alias relation of two memory addresses. */ typedef enum { @@ -91,12 +92,14 @@ typedef ir_alias_relation (*DISAMBIGUATOR_FUNC)( * @param irn the node representing the base address * @param ent the base entity of the base address iff any */ -ir_storage_class_class_t classify_pointer(const ir_graph *irg, const ir_node *irn, const ir_entity *ent); +FIRM_API ir_storage_class_class_t classify_pointer(const ir_graph *irg, + const ir_node *irn, + const ir_entity *ent); /** * Returns a human readable name for an alias relation. */ -const char *get_ir_alias_relation_name(ir_alias_relation rel); +FIRM_API const char *get_ir_alias_relation_name(ir_alias_relation rel); /** * Determine the alias relation between two addresses. @@ -132,7 +135,7 @@ const char *get_ir_alias_relation_name(ir_alias_relation rel); * If none of these rules apply, the points-to framework must be * interrogated to detect the alias relation. */ -ir_alias_relation get_alias_relation( +FIRM_API ir_alias_relation get_alias_relation( const ir_graph *irg, const ir_node *adr1, const ir_mode *mode1, const ir_node *adr2, const ir_mode *mode2); @@ -142,12 +145,12 @@ ir_alias_relation get_alias_relation( * * @param func The callback. */ -void set_language_memory_disambiguator(DISAMBIGUATOR_FUNC func); +FIRM_API void set_language_memory_disambiguator(DISAMBIGUATOR_FUNC func); /** * Initialize the relation cache. */ -void mem_disambig_init(void); +FIRM_API void mem_disambig_init(void); /* * Determine the alias relation between two addresses and @@ -161,7 +164,7 @@ void mem_disambig_init(void); * * @see get_alias_relation() */ -ir_alias_relation get_alias_relation_ex( +FIRM_API ir_alias_relation get_alias_relation_ex( const ir_graph *irg, const ir_node *adr1, const ir_mode *mode1, const ir_node *adr2, const ir_mode *mode2); @@ -169,11 +172,12 @@ ir_alias_relation get_alias_relation_ex( /** * Free the relation cache. */ -void mem_disambig_term(void); +FIRM_API void mem_disambig_term(void); -ir_entity_usage_computed_state get_irg_entity_usage_state(const ir_graph *irg); +FIRM_API ir_entity_usage_computed_state get_irg_entity_usage_state(const ir_graph *irg); -void set_irg_entity_usage_state(ir_graph *irg, ir_entity_usage_computed_state state); +FIRM_API void set_irg_entity_usage_state(ir_graph *irg, + ir_entity_usage_computed_state state); /** * Assure that the entity usage flags have been computed for the given graph. @@ -187,19 +191,19 @@ void set_irg_entity_usage_state(ir_graph *irg, ir_entity_usage_computed_state st * Even then the information is not cleaned from the variables, call * assure_irg_entity_usage_computed() again for recomputation. */ -void assure_irg_entity_usage_computed(ir_graph *irg); +FIRM_API void assure_irg_entity_usage_computed(ir_graph *irg); /** * Returns the current address taken state of the globals. */ -ir_entity_usage_computed_state get_irp_globals_entity_usage_state(void); +FIRM_API ir_entity_usage_computed_state get_irp_globals_entity_usage_state(void); /** * Sets the current address taken state of the globals. * * @param state the new state */ -void set_irp_globals_entity_usage_state(ir_entity_usage_computed_state state); +FIRM_API void set_irp_globals_entity_usage_state(ir_entity_usage_computed_state state); /** * Assure that the address taken flag is computed for the global and TLS entities (variables). @@ -213,14 +217,14 @@ void set_irp_globals_entity_usage_state(ir_entity_usage_computed_state state); * Even then the information is not cleaned from the variables, call * assure_irp_globals_entity_usage_computed() again for recomputation. */ -void assure_irp_globals_entity_usage_computed(void); +FIRM_API void assure_irp_globals_entity_usage_computed(void); /** * Get the memory disambiguator options for a graph. * * @param irg the graph */ -unsigned get_irg_memory_disambiguator_options(const ir_graph *irg); +FIRM_API unsigned get_irg_memory_disambiguator_options(const ir_graph *irg); /** * Set the memory disambiguator options for a graph. @@ -228,21 +232,22 @@ unsigned get_irg_memory_disambiguator_options(const ir_graph *irg); * @param irg the graph * @param options a set of options */ -void set_irg_memory_disambiguator_options(ir_graph *irg, unsigned options); +FIRM_API void set_irg_memory_disambiguator_options(ir_graph *irg, + unsigned options); /** * Set the global disambiguator options for all graphs not having local options. * * @param options a set of options */ -void set_irp_memory_disambiguator_options(unsigned options); +FIRM_API void set_irp_memory_disambiguator_options(unsigned options); /** * Mark all private methods, i.e. those of which all call sites are known. * We use a very convervative estimation yet: If the address of a method is * never taken AND its visibility is visibility_local, then it's private. */ -void mark_private_methods(void); +FIRM_API void mark_private_methods(void); /** * Creates an ir_prog pass for mark_private_methods(). @@ -251,6 +256,8 @@ void mark_private_methods(void); * * @return the newly created ir_prog pass */ -ir_prog_pass_t *mark_private_methods_pass(const char *name); +FIRM_API ir_prog_pass_t *mark_private_methods_pass(const char *name); -#endif /* FIRM_ANA_IRMEMORY_H */ +#include "end.h" + +#endif