From 1f00098bf3a107ecf463cd31fc1ff50f960e1013 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Tue, 10 Apr 2012 18:03:36 +0200 Subject: [PATCH] cgraph.h: Remove misledaing comment on ipa-ref.h. * cgraph.h: Remove misledaing comment on ipa-ref.h. (symtab_type): New enum. (symtab_node): New structure. (cgraph_node, varpool_node): Add symbol base type. (cgraph, varpool): New accestor functions. * cgraph.c (cgraph_create_node_1): Set symbol type. * varpool.c (varpool_node): Set symbol type. From-SVN: r186284 --- gcc/ChangeLog | 10 ++++++++++ gcc/cgraph.c | 1 + gcc/cgraph.h | 37 ++++++++++++++++++++++++++++++++++++- gcc/varpool.c | 1 + 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bd7a2c7377d..d346e435a24 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2012-04-10 Jan Hubicka + + * cgraph.h: Remove misledaing comment on ipa-ref.h. + (symtab_type): New enum. + (symtab_node): New structure. + (cgraph_node, varpool_node): Add symbol base type. + (cgraph, varpool): New accestor functions. + * cgraph.c (cgraph_create_node_1): Set symbol type. + * varpool.c (varpool_node): Set symbol type. + 2012-04-10 Ulrich Weigand Richard Sandiford diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 6c315072d9f..61a8e235fe3 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -473,6 +473,7 @@ cgraph_create_node_1 (void) { struct cgraph_node *node = cgraph_allocate_node (); + node->symbol.type = SYMTAB_FUNCTION; node->next = cgraph_nodes; node->order = cgraph_order++; if (cgraph_nodes) diff --git a/gcc/cgraph.h b/gcc/cgraph.h index dc085e181d0..8740fba7c47 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -27,7 +27,23 @@ along with GCC; see the file COPYING3. If not see #include "tree.h" #include "basic-block.h" #include "function.h" -#include "ipa-ref.h" /* FIXME: inappropriate dependency of cgraph on IPA. */ +#include "ipa-ref.h" + +/* Symbol table consists of functions and variables. + TODO: add labels, constant pool and aliases. */ +enum symtab_type +{ + SYMTAB_FUNCTION, + SYMTAB_VARIABLE +}; + +/* Base of all entries in the symbol table. + The symtab_node is inherited by cgraph and varpol nodes. */ +struct GTY(()) symtab_node +{ + /* Type of the symbol. */ + enum symtab_type type; +}; enum availability { @@ -150,6 +166,7 @@ struct GTY(()) cgraph_clone_info Each function decl has assigned cgraph_node listing callees and callers. */ struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) cgraph_node { + struct symtab_node symbol; tree decl; struct cgraph_edge *callees; struct cgraph_edge *callers; @@ -387,6 +404,7 @@ DEF_VEC_ALLOC_P(cgraph_edge_p,heap); Each static variable decl has assigned varpool_node. */ struct GTY((chain_next ("%h.next"), chain_prev ("%h.prev"))) varpool_node { + struct symtab_node symbol; tree decl; /* For aliases points to declaration DECL is alias of. */ tree alias_of; @@ -689,6 +707,23 @@ void varpool_add_new_variable (tree); #define FOR_EACH_STATIC_VARIABLE(node) \ for ((node) = varpool_nodes_queue; (node); (node) = (node)->next_needed) +/* Return callgraph node for given symbol and check it is a function. */ +static inline struct cgraph_node * +cgraph (struct symtab_node *node) +{ + gcc_checking_assert (node->type == SYMTAB_FUNCTION); + return (struct cgraph_node *)node; +} + +/* Return varpool node for given symbol and check it is a variable. */ +static inline struct varpool_node * +varpool (struct symtab_node *node) +{ + gcc_checking_assert (node->type == SYMTAB_FUNCTION); + return (struct varpool_node *)node; +} + + /* Return first reachable static variable with initializer. */ static inline struct varpool_node * varpool_first_static_initializer (void) diff --git a/gcc/varpool.c b/gcc/varpool.c index e064f7bd648..043de4c607b 100644 --- a/gcc/varpool.c +++ b/gcc/varpool.c @@ -142,6 +142,7 @@ varpool_node (tree decl) if (*slot) return *slot; node = ggc_alloc_cleared_varpool_node (); + node->symbol.type = SYMTAB_VARIABLE; node->decl = decl; node->order = cgraph_order++; node->next = varpool_nodes; -- 2.11.4.GIT