X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeflags.h;h=b05f9de53379a0ce489332b87be8ea51df095dba;hb=0e4318adc38a54110c1b1f7f1d5edc0ee2c78170;hp=04a12ce2d89544a985bacc3d18ba82ae9f61746a;hpb=65a52a96e8ab7ed601d7f98c516d37c46b674b4a;p=libfirm diff --git a/ir/be/beflags.h b/ir/be/beflags.h index 04a12ce2d..b05f9de53 100644 --- a/ir/be/beflags.h +++ b/ir/be/beflags.h @@ -29,14 +29,25 @@ #include "bearch.h" #include "beirg.h" +/** + * Callback which rematerializes (=duplicates) a machine node. + */ typedef ir_node * (*func_rematerialize) (ir_node *node, ir_node *after); +/** + * Callback function that checks whether a node modifies the flags + */ +typedef bool (*check_modifies_flags) (const ir_node *node); + /** * Walks the schedule and ensures that flags aren't destroyed between producer * and consumer of flags. It does so by moving down/rematerialising of the * nodes. This does not work across blocks. + * The callback functions may be NULL if you want to use default + * implementations. */ void be_sched_fix_flags(ir_graph *irg, const arch_register_class_t *flag_cls, - func_rematerialize remat_func); + func_rematerialize remat_func, + check_modifies_flags check_modifies_flags_func); #endif