changed file names and name prefix
authorGötz Lindenmaier <goetz@ipd.info.uni-karlsruhe.de>
Mon, 22 Apr 2002 14:54:16 +0000 (14:54 +0000)
committerGötz Lindenmaier <goetz@ipd.info.uni-karlsruhe.de>
Mon, 22 Apr 2002 14:54:16 +0000 (14:54 +0000)
[r363]

ir/debug/dbginfo.h [new file with mode: 0644]

diff --git a/ir/debug/dbginfo.h b/ir/debug/dbginfo.h
new file mode 100644 (file)
index 0000000..dd94c18
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+**  Copyright (C) 2001 by Universitaet Karlsruhe
+**  All rights reserved.
+**
+**  Authors: Goetz Lindenmaier
+**
+**  dbginfo: This is the Firm interface to debugging support.  Firm requires
+**  a debugging module fulfilling this interface.
+**  The interface requires a datatype representing the debugging information.
+**  Firm supports administrating a reference to the debug information
+**  in every firm node.  Further Firm optimizations call routines to
+**  propagate debug information from old nodes to new nodes if the optimization
+**  replaces the old ones by the new ones.
+**
+**  This file does not belong to the interface of the firm library.
+*/
+
+/* $Id$ */
+
+# ifndef _DBGINFO_H_
+# define _DBGINFO_H_
+
+#include "irnode.h"
+#include "ident.h"
+
+/* A datastructure containing information for debugging.  */
+typedef struct dbg_info dbg_info;
+/* Every Firm node contains a reference to a dbg_info struct. This reference
+   can be accessed by the debug support module by
+   dbg_info *get_irn_dbg_info(irnode *n);
+   void      set_irn_dbg_info(irnode *n, dbg_info *d);.
+   The module may not touch or change anything else in the Firm data structure.
+*/
+
+/** The following routines are called by firm optmizations.  The optimization
+    passes an ident representing a string that describes the optimization
+    performed.  **/
+/* dbg_info_copy() is called in the following situation:
+   The optimization replaced the old node by the new one.  The new node
+   might be a recent allocated node not containing any debug information,
+   or just another node from somewhere in the graph with the same
+   semantics. */
+void dbg_info_copy(ir_node *new, ir_node *old, ident *info);
+
+/* dbg_info_merge() is called in the following situation:
+   The optimization replaced a subgraph by another subgraph.  There is no
+   obviouse mapping between single nodes in both subgraphs.  The optimization
+   simply passes two lists to the debug module, one containing the nodes in
+   the old subgraph, the other containing the nodes in the new subgraph.  */
+void dbg_info_merge(ir_node **new_nodes, ir_node **old_nodes, ident *info);
+
+
+#endif /* _DBGINFO_H_ */