X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firop_t.h;h=92f0402278e906e8402e703726c160439f0c4f6a;hb=346dfddce9be4420855b06ea40d2bf21dad9bc88;hp=b5e5c702a34694ead2d7a08bd5f88c777502308c;hpb=ae298d4a4c367832cdfaac98464ce341f30f6f4f;p=libfirm diff --git a/ir/ir/irop_t.h b/ir/ir/irop_t.h index b5e5c702a..92f040227 100644 --- a/ir/ir/irop_t.h +++ b/ir/ir/irop_t.h @@ -79,6 +79,13 @@ typedef ir_node *(*transform_node_func)(ir_node *n); */ typedef int (*node_cmp_attr_func)(ir_node *a, ir_node *b); +/** + * The reassociation operation. + * Called from a walker. Returns non-zero if + * a reassociation rule was applied. + */ +typedef int (*reassociate_func)(ir_node *n); + /** The type of an ir_op. */ struct ir_op { opcode code; /**< the unique opcode of the op */ @@ -94,6 +101,7 @@ struct ir_op { equivalent_node_func equivalent_node; /**< optimizes the node by returning an equivalent one. */ transform_node_func transform_node; /**< optimizes the node by transforming it. */ node_cmp_attr_func node_cmp_attr; /**< compares two node attributes. */ + reassociate_func reassociate; /**< reassociate a tree */ }; /**