* options for the hook_merge_nodes hook
*/
typedef enum {
+ HOOK_OPT_DEAD_BLOCK, /**< a block was removed because it's dead */
HOOK_OPT_STG, /**< straightening optimization */
HOOK_OPT_IFSIM, /**< if simplification */
HOOK_OPT_CONST_EVAL, /**< constant evaluation */
HOOK_OPT_POLY_CALL, /**< polymorphic call optimization */
HOOK_OPT_IF_CONV, /**< an if conversion was tried */
HOOK_OPT_FUNC_CALL, /**< a real function call was removed */
+ HOOK_OPT_CONFIRM, /**< a value was substituted by another due to a Confirm */
+ HOOK_OPT_CONFIRM_C, /**< a value was substituted by a const due to a Confirm */
+ HOOK_OPT_CONFIRM_E, /**< a value was evaluated due to a Confirm */
HOOK_LOWERED, /**< lowered */
HOOK_OPT_LAST
} hook_opt_kind;
void (*_hook_arch_dep_replace_div_by_const)(void *context, ir_node *irn);
void (*_hook_arch_dep_replace_mod_by_const)(void *context, ir_node *irn);
void (*_hook_arch_dep_replace_DivMod_by_const)(void *context, ir_node *irn);
+ void (*_hook_new_mode)(void *context, const ir_mode *tmpl, ir_mode *mode);
} hook;
/** the context for every hook */
hook_arch_dep_replace_div_by_const,
hook_arch_dep_replace_mod_by_const,
hook_arch_dep_replace_DivMod_by_const,
+ hook_new_mode,
hook_last,
} hook_type_t;
* register the hook entry.
*
* @param hook the hook type
- * @rapam entry the hook entry
+ * @param entry the hook entry
*/
void register_hook(hook_type_t hook, hook_entry_t *entry);
hook_exec(hook_arch_dep_replace_mod_by_const, (ctx, irn))
#define hook_arch_dep_replace_DivMod_by_const(irn) \
hook_exec(hook_arch_dep_replace_DivMod_by_const, (ctx, irn))
+#define hook_new_mode(tmpl, mode) hook_exec(hook_new_mode, (ctx, tmpl, mode))
/* the initializer, move to hooks_t.h some day */
int init_hooks(void);