aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h32
1 files changed, 28 insertions, 4 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index 637fab7e1f7..4a7aa88a231 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -1334,6 +1334,21 @@ struct tree_exp GTY(())
struct ptr_info_def;
#endif
+
+
+/* Immediate use linking structure. THis structure is used for maintaining
+ a doubly linked list of uses of an SSA_NAME. */
+typedef struct ssa_imm_use_d GTY(())
+{
+ struct ssa_imm_use_d* GTY((skip(""))) prev;
+ struct ssa_imm_use_d* GTY((skip(""))) next;
+ tree GTY((skip(""))) stmt;
+ tree *GTY((skip(""))) use;
+} ssa_imm_use_t;
+
+/* Return the immediate_use information for an SSA_NAME. */
+#define SSA_NAME_IMM_USE_NODE(NODE) SSA_NAME_CHECK (NODE)->ssa_name.imm_uses
+
struct tree_ssa_name GTY(())
{
struct tree_common common;
@@ -1358,9 +1373,19 @@ struct tree_ssa_name GTY(())
/* Auxiliary information stored with the ssa name. */
PTR GTY((skip)) aux;
+
+ /* Immediate uses list for this SSA_NAME. */
+ struct ssa_imm_use_d imm_uses;
};
/* In a PHI_NODE node. */
+
+/* These 2 macros should be considered off limits for use by developers. If
+ you wish to access the use or def fields of a PHI_NODE in the SSA
+ optimizers, use the accessor macros found in tree-ssa-operands.h.
+ These two macros are to be used only by those accessor macros, and other
+ select places where we *absolutly* must take the address of the tree. */
+
#define PHI_RESULT_TREE(NODE) PHI_NODE_CHECK (NODE)->phi.result
#define PHI_ARG_DEF_TREE(NODE, I) PHI_NODE_ELT_CHECK (NODE, I).def
@@ -1378,12 +1403,13 @@ struct tree_ssa_name GTY(())
#define PHI_ARG_EDGE(NODE, I) PHI_NODE_ELT_CHECK (NODE, I).e
#define PHI_ARG_NONZERO(NODE, I) PHI_NODE_ELT_CHECK (NODE, I).nonzero
#define PHI_BB(NODE) PHI_NODE_CHECK (NODE)->phi.bb
-#define PHI_DF(NODE) PHI_NODE_CHECK (NODE)->phi.df
+#define PHI_ARG_IMM_USE_NODE(NODE, I) PHI_NODE_ELT_CHECK (NODE, I).imm_use
struct edge_def;
struct phi_arg_d GTY(())
{
+ struct ssa_imm_use_d imm_use; /* imm_use MUST be first element in struct. */
tree def;
struct edge_def * GTY((skip (""))) e;
bool nonzero;
@@ -1403,9 +1429,6 @@ struct tree_phi_node GTY(())
/* Basic block to that the phi node belongs. */
struct basic_block_def *bb;
- /* Dataflow information. */
- struct dataflow_d *df;
-
struct phi_arg_d GTY ((length ("((tree)&%h)->phi.capacity"))) a[1];
};
@@ -3876,6 +3899,7 @@ enum tree_dump_index
#define TDF_TREE (1 << 9) /* is a tree dump */
#define TDF_RTL (1 << 10) /* is a RTL dump */
#define TDF_IPA (1 << 11) /* is an IPA dump */
+#define TDF_STMTADDR (1 << 12) /* Address of stmt. */
typedef struct dump_info *dump_info_p;