+ } while(0)
+
+/**
+ * Merge the debug info due to common-subexpression elimination.
+ *
+ * @param oldn the old node
+ * @param n the node that replaces oldn
+ */
+#define DBG_OPT_CSE(oldn, n) \
+ do { \
+ ir_node *ons[2]; \
+ ons[0] = oldn; \
+ ons[1] = n; \
+ hook_merge_nodes(&n, 1, ons, SIZ(ons), HOOK_OPT_CSE); \
+ __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_cse); \
+ } while(0)
+
+/**
+ * Merge the debug info due to polymorphic call optimization.
+ * A Sel node was replaced by a constant.
+ *
+ * @param sel the Sel node that will be replaced.
+ * @param c the constant node that replaces sel
+ */
+#define DBG_OPT_POLY(sel, c) \
+ do { \
+ ir_node *ons[3]; \
+ ons[0] = sel; \
+ ons[1] = skip_Proj(get_Sel_ptr(sel)); \
+ ons[2] = c; \
+ hook_merge_nodes(&c, 1, ons, SIZ(ons), HOOK_OPT_POLY_CALL); \
+ __dbg_info_merge_sets(&c, 1, ons, SIZ(ons), dbg_rem_poly_call); \
+ } while(0)
+
+/**
+ * A node was replaced by another node due to a Confirmation.
+ *
+ * @param oldn the old node
+ * @param n the new node
+ */
+#define DBG_OPT_CONFIRM(oldn, n) \
+ do { \
+ hook_merge_nodes(&n, 1, &oldn, 1, HOOK_OPT_CONFIRM); \
+ __dbg_info_merge_pair(n, oldn, dbg_opt_confirm); \
+ } while(0)
+
+/**
+ * A node was replaced by a constant due to a Confimation.
+ *
+ * @param oldn the old node
+ * @param c the new constant node
+ */
+#define DBG_OPT_CONFIRM_C(oldn, c) \
+ do { \
+ hook_merge_nodes(&c, 1, &oldn, 1, HOOK_OPT_CONFIRM_C); \
+ __dbg_info_merge_pair(c, oldn, dbg_opt_confirm); \
+ } while(0)
+
+/**
+ * A exception exdge was removed due to a Confirmation prove.
+ *
+ * @param oldn the old node
+ */
+#define DBG_OPT_EXC_REM(oldn) \
+ do { \
+ hook_merge_nodes(NULL, 0, &oldn, 1, HOOK_OPT_EXC_REM); \
+ } while(0)
+
+/**
+ * A node could be evaluated to a value due to a Confirm.
+ * This will lead to a constant evaluation.
+ *
+ * @param n the node that could be evaluated
+ */
+#define DBG_EVAL_CONFIRM(n) \
+ do { \
+ hook_merge_nodes(NULL, 0, &n, 1, HOOK_OPT_CONFIRM_E); \
+ } while(0)
+
+#endif /* _IROPT_DBG_H_ */