/* DDG - Data Dependence Graph - interface.
- Copyright (C) 2004
+ Copyright (C) 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Ayal Zaks and Mustafa Hagog <zaks,mustafa@il.ibm.com>
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
+Software Foundation; either version 3, or (at your option) any later
version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
for more details.
You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING. If not, write to the Free
-Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
#ifndef GCC_DDG_H
#define GCC_DDG_H
+/* For sbitmap. */
+#include "sbitmap.h"
+/* For basic_block. */
+#include "basic-block.h"
+#include "df.h"
typedef struct ddg_node *ddg_node_ptr;
typedef struct ddg_edge *ddg_edge_ptr;
/* The insn represented by the node. */
rtx insn;
- /* A note preceeding INSN (or INSN itself), such that all insns linked
+ /* A note preceding INSN (or INSN itself), such that all insns linked
from FIRST_NOTE until INSN (inclusive of both) are moved together
when reordering the insns. This takes care of notes that should
- continue to preceed INSN. */
+ continue to precede INSN. */
rtx first_note;
/* Incoming and outgoing dependency edges. */
/* REG or MEM dependency. */
dep_data_type data_type;
- /* Latency of the depedency. */
+ /* Latency of the dependency. */
int latency;
/* The distance: number of loop iterations the dependency crosses. */
int num_loads;
int num_stores;
+ /* Number of debug instructions in the BB. */
+ int num_debug;
+
/* This array holds the nodes in the graph; it is indexed by the node
cuid, which follows the order of the instructions in the BB. */
ddg_node_ptr nodes;
int closing_branch_deps;
/* Array and number of backarcs (edges with distance > 0) in the DDG. */
- ddg_edge_ptr *backarcs;
int num_backarcs;
+ ddg_edge_ptr *backarcs;
};
\f
};
\f
-ddg_ptr create_ddg (basic_block, struct df *, int closing_branch_deps);
+ddg_ptr create_ddg (basic_block, int closing_branch_deps);
void free_ddg (ddg_ptr);
void print_ddg (FILE *, ddg_ptr);
void vcg_print_ddg (FILE *, ddg_ptr);
void print_ddg_edge (FILE *, ddg_edge_ptr);
+void print_sccs (FILE *, ddg_all_sccs_ptr, ddg_ptr);
ddg_node_ptr get_node_of_insn (ddg_ptr, rtx);
int find_nodes_on_paths (sbitmap result, ddg_ptr, sbitmap from, sbitmap to);
int longest_simple_path (ddg_ptr, int from, int to, sbitmap via);
+bool autoinc_var_is_used_p (rtx, rtx);
+
#endif /* GCC_DDG_H */