X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Fexecution_frequency.h;h=445dedbf077120aa3aedeb53bd0c3df27d8c7f9e;hb=ff0e8d7fcb34481652f0bf521ba04b1eca5e2106;hp=d20b433d0d60f799e7f49f7fa452f252711bb010;hpb=c19953ed6384686c23fb9d720a7cfdda3d443d19;p=libfirm diff --git a/ir/ana/execution_frequency.h b/ir/ana/execution_frequency.h index d20b433d0..445dedbf0 100644 --- a/ir/ana/execution_frequency.h +++ b/ir/ana/execution_frequency.h @@ -59,8 +59,31 @@ void compute_execution_frequency(ir_graph *irg, int default_loop_weight, double */ void compute_execution_frequencies(int default_loop_weight, double exception_probability); -/** Free occupied memory, reset. */ +/** Free occupied memory, reset for all graphs. */ void free_execution_frequency(void); +/** State of execution freqencies for graphs and the whole program. + * + * The exec_freq_state in irp is consistent, if the state of all graphs is consistent. + * It is none, if the state of all graphs is none. Else it is inconsistent. */ +typedef enum { + exec_freq_none, /**< Execution frequencies are not computed, no memory is + allocated, access fails. */ + exec_freq_consistent, /**< Execution frequency information is computed and correct. */ + exec_freq_inconsistent /**< Execution frequency is computed but the graph has been + changed since. */ +} exec_freq_state; + +exec_freq_state get_irg_exec_freq_state(ir_graph *irg); +void set_irg_exec_freq_state(ir_graph *irg, exec_freq_state s); +/* Sets irg and irp exec freq state to inconsistent if it is set to consistent. */ +void set_irg_exec_freq_state_inconsistent(ir_graph *irg); + +exec_freq_state get_irp_exec_freq_state(void); +/* Sets irp and all irg exec freq states to inconsistent if it is set to consistent. */ +void set_irp_exec_freq_state_inconsistent(void); + + + #endif /* _EXECUTION_FREQUENCY_H_ */