X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ir%2Fbe%2Fbeflags.h;h=6c5eb9260cce7dc317c0d032c376ac4ac3d8afbb;hb=df2faee01a5832057bb3ca0ba5f67e979c916e19;hp=04a12ce2d89544a985bacc3d18ba82ae9f61746a;hpb=65a52a96e8ab7ed601d7f98c516d37c46b674b4a;p=libfirm diff --git a/ir/be/beflags.h b/ir/be/beflags.h index 04a12ce2d..6c5eb9260 100644 --- a/ir/be/beflags.h +++ b/ir/be/beflags.h @@ -21,22 +21,31 @@ * @file * @brief modifies schedule so flags dependencies are respected. * @author Matthias Braun, Christoph Mallon - * @version $Id: besched.h 14693 2007-06-21 15:35:49Z beck $ */ #ifndef FIRM_BE_BEFLAGS_H #define FIRM_BE_BEFLAGS_H #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