+} /* dbg_action_2_str */
+
+
+void default_dbg_info_merge_pair(ir_node *nw, ir_node *old, dbg_action info) {
+ dbg_info *new_db = get_irn_dbg_info(nw);
+ (void) info;
+ if (new_db == NULL)
+ set_irn_dbg_info(nw, get_irn_dbg_info(old));
+} /* default_dbg_info_merge_pair */
+
+void default_dbg_info_merge_sets(ir_node **new_nodes, int n_new_nodes,
+ ir_node **old_nodes, int n_old_nodes,
+ dbg_action info) {
+ (void) info;
+ if (n_old_nodes == 1) {
+ dbg_info *old_db = get_irn_dbg_info(old_nodes[0]);
+ int i;
+
+ for (i = 0; i < n_new_nodes; ++i)
+ if (get_irn_dbg_info(new_nodes[i]) == NULL)
+ set_irn_dbg_info(new_nodes[i], old_db);
+ }
+} /* default_dbg_info_merge_sets */
+
+/** The debug info retriever function. */
+static retrieve_dbg_func retrieve_dbg = NULL;
+
+/* Sets a debug info retriever. */
+void ir_set_debug_retrieve(retrieve_dbg_func func) {
+ retrieve_dbg = func;
+}
+
+/* Retrieve the debug info. */
+const char *ir_retrieve_dbg_info(const dbg_info *dbg, unsigned *line) {
+ if (retrieve_dbg)
+ return retrieve_dbg(dbg, line);
+
+ *line = 0;
+ return NULL;