|
libFirm 1.20
|
Generic hooks for various libFirm functions. More...
Go to the source code of this file.
Data Structures | |
| struct | hook_entry_t |
| a hook entry More... | |
Defines | |
| #define | hook_exec(what, args) |
Executes the hook what with the args args Do not use this macro directly. | |
| #define | hook_new_ir_op(op) hook_exec(hook_new_ir_op, (hook_ctx_, op)) |
| Called when a new node opcode has been created. | |
| #define | hook_free_ir_op(op) hook_exec(hook_free_ir_op, (hook_ctx_, op)) |
| Called when a node opcode has been freed. | |
| #define | hook_new_node(graph, node) hook_exec(hook_new_node, (hook_ctx_, graph, node)) |
| Called after a new node has been created. | |
| #define | hook_set_irn_n(src, pos, tgt, old_tgt) hook_exec(hook_set_irn_n, (hook_ctx_, src, pos, tgt, old_tgt)) |
| Called when a nodes input is changed. | |
| #define | hook_replace(old, nw) hook_exec(hook_replace, (hook_ctx_, old, nw)) |
| Called when a node is replaced. | |
| #define | hook_turn_into_id(node) hook_exec(hook_turn_into_id, (hook_ctx_, node)) |
| Called when a node is turned into an Id node. | |
| #define | hook_normalize(node) hook_exec(hook_normalize, (hook_ctx_, node)) |
| Called when a node is normalized. | |
| #define | hook_new_graph(irg, ent) hook_exec(hook_new_graph, (hook_ctx_, irg, ent)) |
| Called after a new graph has been created. | |
| #define | hook_free_graph(irg) hook_exec(hook_free_graph, (hook_ctx_, irg)) |
| Called after a graph has been freed. | |
| #define | hook_irg_walk(irg, pre, post) hook_exec(hook_irg_walk, (hook_ctx_, irg, pre, post)) |
| Called before a graph walk is started. | |
| #define | hook_irg_walk_blkwise(irg, pre, post) hook_exec(hook_irg_walk_blkwise, (hook_ctx_, irg, pre, post)) |
| Called before a blockwise graph walk is started. | |
| #define | hook_irg_block_walk(irg, node, pre, post) hook_exec(hook_irg_block_walk, (hook_ctx_, irg, node, pre, post)) |
| Called before a block walk is started. | |
| #define | hook_merge_nodes(new_node_array, new_num_entries, old_node_array, old_num_entries, opt) hook_exec(hook_merge_nodes, (hook_ctx_, new_node_array, new_num_entries, old_node_array, old_num_entries, opt)) |
| Called before 2 nodes get merged. | |
| #define | hook_reassociate(start) hook_exec(hook_reassociate, (hook_ctx_, start)) |
| Called before node inputs get reassociated. | |
| #define | hook_lower(node) hook_exec(hook_lower, (hook_ctx_, node)) |
| Called before a node gets lowered. | |
| #define | hook_inline(call, irg) hook_exec(hook_inline, (hook_ctx_, call, irg)) |
| Called before a graph is inlined. | |
| #define | hook_tail_rec(irg, n_calls) hook_exec(hook_tail_rec, (hook_ctx_, irg, n_calls)) |
| Called before tail recursion is performed. | |
| #define | hook_strength_red(irg, node) hook_exec(hook_strength_red, (hook_ctx_, irg, node)) |
| Called before strength reduction is performed. | |
| #define | hook_dead_node_elim(irg, start) hook_exec(hook_dead_node_elim, (hook_ctx_, irg, start)) |
| Called before dead node elimination is performed. | |
| #define | hook_dead_node_elim_subst(irg, old, nw) hook_exec(hook_dead_node_elim_subst, (hook_ctx_, irg, old, nw)) |
| Called when a node is substituted during dead code elimination. | |
| #define | hook_if_conversion(irg, phi, pos, mux, reason) hook_exec(hook_if_conversion, (hook_ctx_, irg, phi, pos, mux, reason)) |
| Called when if-conversion creates a Mux node. | |
| #define | hook_func_call(irg, call) hook_exec(hook_func_call, (hook_ctx_, irg, call)) |
| Called when a function call is optimized. | |
| #define | hook_arch_dep_replace_mul_with_shifts(irn) hook_exec(hook_arch_dep_replace_mul_with_shifts, (hook_ctx_, irn)) |
| Called when a mul is replaced with shifts. | |
| #define | hook_arch_dep_replace_division_by_const(irn) hook_exec(hook_arch_dep_replace_division_by_const, (hook_ctx_, irn)) |
| Called when a dvision by constant is replaced. | |
| #define | hook_new_mode(mode) hook_exec(hook_new_mode, (hook_ctx_, mode)) |
| Called when a new mode has been created. | |
| #define | hook_new_entity(ent) hook_exec(hook_new_entity, (hook_ctx_, ent)) |
| Called when a new entity has been created. | |
| #define | hook_new_type(tp) hook_exec(hook_new_type, (hook_ctx_, tp)) |
| Called when a new type has been created. | |
| #define | hook_node_info(F, node) hook_exec(hook_node_info, (hook_ctx_, F, node)) |
| Called at the end of the node info dumper to dump additional node info. | |
Typedefs | |
| typedef void( | generic_func )(void) |
| A generic function type. | |
Enumerations | |
| enum | hook_opt_kind { HOOK_OPT_DEAD_BLOCK, HOOK_OPT_STG, HOOK_OPT_IFSIM, HOOK_OPT_CONST_EVAL, HOOK_OPT_ALGSIM, HOOK_OPT_PHI, HOOK_OPT_SYNC, HOOK_OPT_WAW, HOOK_OPT_WAR, HOOK_OPT_RAW, HOOK_OPT_RAR, HOOK_OPT_RC, HOOK_OPT_TUPLE, HOOK_OPT_ID, HOOK_OPT_CSE, HOOK_OPT_STRENGTH_RED, HOOK_OPT_ARCH_DEP, HOOK_OPT_REASSOC, HOOK_OPT_POLY_CALL, HOOK_OPT_IF_CONV, HOOK_OPT_FUNC_CALL, HOOK_OPT_CONFIRM, HOOK_OPT_CONFIRM_C, HOOK_OPT_CONFIRM_E, HOOK_OPT_EXC_REM, HOOK_OPT_NORMALIZE, HOOK_LOWERED, HOOK_BACKEND, HOOK_OPT_LAST } |
| options for the hook_merge_nodes hook More... | |
| enum | if_result_t { IF_RESULT_SUCCESS = 0, IF_RESULT_SIDE_EFFECT = 1, IF_RESULT_SIDE_EFFECT_PHI = 2, IF_RESULT_TOO_DEEP = 3, IF_RESULT_BAD_CF = 4, IF_RESULT_DENIED = 5, IF_RESULT_LAST } |
| Result of an if-conversion attempt. More... | |
| enum | hook_type_t { hook_new_ir_op, hook_free_ir_op, hook_new_node, hook_set_irn_n, hook_replace, hook_turn_into_id, hook_normalize, hook_new_graph, hook_free_graph, hook_irg_walk, hook_irg_walk_blkwise, hook_irg_block_walk, hook_merge_nodes, hook_reassociate, hook_lower, hook_inline, hook_tail_rec, hook_strength_red, hook_dead_node_elim, hook_dead_node_elim_subst, hook_if_conversion, hook_func_call, hook_arch_dep_replace_mul_with_shifts, hook_arch_dep_replace_division_by_const, hook_new_mode, hook_new_entity, hook_new_type, hook_node_info, hook_last } |
| possible hooks More... | |
Functions | |
| void | register_hook (hook_type_t hook, hook_entry_t *entry) |
| register a hook entry. | |
| void | unregister_hook (hook_type_t hook, hook_entry_t *entry) |
| unregister a hook entry. | |
Variables | |
| hook_entry_t * | hooks [hook_last] |
| Global list of registerd hooks. | |
Generic hooks for various libFirm functions.
Definition in file irhooks.h.
| #define hook_arch_dep_replace_division_by_const | ( | irn | ) | hook_exec(hook_arch_dep_replace_division_by_const, (hook_ctx_, irn)) |
| #define hook_arch_dep_replace_mul_with_shifts | ( | irn | ) | hook_exec(hook_arch_dep_replace_mul_with_shifts, (hook_ctx_, irn)) |
| #define hook_dead_node_elim | ( | irg, | |
| start | |||
| ) | hook_exec(hook_dead_node_elim, (hook_ctx_, irg, start)) |
| #define hook_dead_node_elim_subst | ( | irg, | |
| old, | |||
| nw | |||
| ) | hook_exec(hook_dead_node_elim_subst, (hook_ctx_, irg, old, nw)) |
| #define hook_exec | ( | what, | |
| args | |||
| ) |
| #define hook_free_graph | ( | irg | ) | hook_exec(hook_free_graph, (hook_ctx_, irg)) |
| #define hook_free_ir_op | ( | op | ) | hook_exec(hook_free_ir_op, (hook_ctx_, op)) |
| #define hook_func_call | ( | irg, | |
| call | |||
| ) | hook_exec(hook_func_call, (hook_ctx_, irg, call)) |
| #define hook_if_conversion | ( | irg, | |
| phi, | |||
| pos, | |||
| mux, | |||
| reason | |||
| ) | hook_exec(hook_if_conversion, (hook_ctx_, irg, phi, pos, mux, reason)) |
| #define hook_inline | ( | call, | |
| irg | |||
| ) | hook_exec(hook_inline, (hook_ctx_, call, irg)) |
| #define hook_irg_block_walk | ( | irg, | |
| node, | |||
| pre, | |||
| post | |||
| ) | hook_exec(hook_irg_block_walk, (hook_ctx_, irg, node, pre, post)) |
| #define hook_irg_walk | ( | irg, | |
| pre, | |||
| post | |||
| ) | hook_exec(hook_irg_walk, (hook_ctx_, irg, pre, post)) |
| #define hook_irg_walk_blkwise | ( | irg, | |
| pre, | |||
| post | |||
| ) | hook_exec(hook_irg_walk_blkwise, (hook_ctx_, irg, pre, post)) |
| #define hook_lower | ( | node | ) | hook_exec(hook_lower, (hook_ctx_, node)) |
| #define hook_merge_nodes | ( | new_node_array, | |
| new_num_entries, | |||
| old_node_array, | |||
| old_num_entries, | |||
| opt | |||
| ) | hook_exec(hook_merge_nodes, (hook_ctx_, new_node_array, new_num_entries, old_node_array, old_num_entries, opt)) |
| #define hook_new_entity | ( | ent | ) | hook_exec(hook_new_entity, (hook_ctx_, ent)) |
| #define hook_new_graph | ( | irg, | |
| ent | |||
| ) | hook_exec(hook_new_graph, (hook_ctx_, irg, ent)) |
| #define hook_new_ir_op | ( | op | ) | hook_exec(hook_new_ir_op, (hook_ctx_, op)) |
| #define hook_new_mode | ( | mode | ) | hook_exec(hook_new_mode, (hook_ctx_, mode)) |
| #define hook_new_node | ( | graph, | |
| node | |||
| ) | hook_exec(hook_new_node, (hook_ctx_, graph, node)) |
| #define hook_new_type | ( | tp | ) | hook_exec(hook_new_type, (hook_ctx_, tp)) |
| #define hook_node_info | ( | F, | |
| node | |||
| ) | hook_exec(hook_node_info, (hook_ctx_, F, node)) |
| #define hook_normalize | ( | node | ) | hook_exec(hook_normalize, (hook_ctx_, node)) |
| #define hook_reassociate | ( | start | ) | hook_exec(hook_reassociate, (hook_ctx_, start)) |
| #define hook_replace | ( | old, | |
| nw | |||
| ) | hook_exec(hook_replace, (hook_ctx_, old, nw)) |
| #define hook_set_irn_n | ( | src, | |
| pos, | |||
| tgt, | |||
| old_tgt | |||
| ) | hook_exec(hook_set_irn_n, (hook_ctx_, src, pos, tgt, old_tgt)) |
| #define hook_strength_red | ( | irg, | |
| node | |||
| ) | hook_exec(hook_strength_red, (hook_ctx_, irg, node)) |
| #define hook_tail_rec | ( | irg, | |
| n_calls | |||
| ) | hook_exec(hook_tail_rec, (hook_ctx_, irg, n_calls)) |
| #define hook_turn_into_id | ( | node | ) | hook_exec(hook_turn_into_id, (hook_ctx_, node)) |
| typedef void( generic_func)(void) |
| enum hook_opt_kind |
options for the hook_merge_nodes hook
| enum hook_type_t |
possible hooks
| hook_new_ir_op |
type for hook_new_ir_op() hook |
| hook_free_ir_op |
type for hook_free_ir_op() hook |
| hook_new_node |
type for hook_new_node() hook |
| hook_set_irn_n |
type for hook_set_irn_n() hook |
| hook_replace |
type for hook_replace() hook |
| hook_turn_into_id |
type for hook_turn_into_id() hook |
| hook_normalize |
type for hook_normalize() hook |
| hook_new_graph |
type for hook_new_graph() hook |
| hook_free_graph |
type for hook_free_graph() hook |
| hook_irg_walk |
type for hook_irg_walk() hook |
| hook_irg_walk_blkwise |
type for hook_irg_walk_blkwise() hook |
| hook_irg_block_walk |
type for hook_irg_block_walk() hook |
| hook_merge_nodes |
type for hook_merge_nodes() hook |
| hook_reassociate |
type for hook_reassociate() hook |
| hook_lower |
type for hook_lower() hook |
| hook_inline |
type for hook_inline() hook |
| hook_tail_rec |
type for hook_tail_rec() hook |
| hook_strength_red |
type for hook_strength_red() hook |
| hook_dead_node_elim |
type for hook_dead_node_elim() hook |
| hook_dead_node_elim_subst |
type for hook_dead_node_elim_subst() hook |
| hook_if_conversion |
type for hook_if_conversion() hook |
| hook_func_call |
type for hook_func_call() hook |
| hook_arch_dep_replace_mul_with_shifts |
type for hook_arch_dep_replace_mul_with_shifts() hook |
| hook_arch_dep_replace_division_by_const |
type for hook_arch_dep_replace_division_by_const() hook |
| hook_new_mode |
type for hook_new_mode() hook |
| hook_new_entity |
type for hook_new_entity() hook |
| hook_new_type |
type for hook_new_type() hook |
| hook_node_info |
type for hook_node_info() hook |
| hook_last |
last hook type |
| enum if_result_t |
Result of an if-conversion attempt.
| void register_hook | ( | hook_type_t | hook, |
| hook_entry_t * | entry | ||
| ) |
register a hook entry.
| hook | the hook type |
| entry | the hook entry |
| void unregister_hook | ( | hook_type_t | hook, |
| hook_entry_t * | entry | ||
| ) |
unregister a hook entry.
| hook | the hook type |
| entry | the hook entry |
| hook_entry_t* hooks[hook_last] |