libFirm
|
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... |
Macros | |
#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_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. |
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_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)) |
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_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] |