#ifndef GCC_CGRAPH_H
#define GCC_CGRAPH_H
-#include "hashtab.h"
+#include "tree.h"
/* Information about the function collected locally.
Available after function is analyzed. */
{
/* Size of the function before inlining. */
int self_insns;
+
/* Set when function function is visible in current compilation unit only
- and it's address is never taken. */
+ and its address is never taken. */
bool local;
+
/* Set once it has been finalized so we consider it to be output. */
bool finalized;
/* False when there something makes inlining impossible (such as va_arg). */
bool inlinable;
- /* True when function should be inlined independently on it's size. */
+
+ /* True when function should be inlined independently on its size. */
bool disregard_inline_limits;
+
/* True when the function has been originally extern inline, but it is
redefined now. */
bool redefined_extern_inline;
+
+ /* True if statics_read_for_function and
+ statics_written_for_function contain valid data. */
+ bool for_functions_valid;
};
/* Information about the function that needs to be computed globally
bool pure_function;
};
-
/* The cgraph data structure.
Each function decl has assigned cgraph_node listing callees and callers. */
struct cgraph_local_info local;
struct cgraph_global_info global;
struct cgraph_rtl_info rtl;
+
/* Unique id of the node. */
int uid;
/* Set when function must be output - it is externally visible
- or it's address is taken. */
+ or its address is taken. */
bool needed;
/* Set when function is reachable by call from other function
that is either reachable or needed. */
struct cgraph_varpool_node *next_needed;
/* Set when function must be output - it is externally visible
- or it's address is taken. */
+ or its address is taken. */
bool needed;
/* Set once it has been finalized so we consider it to be output. */
bool finalized;
extern GTY(()) int cgraph_max_uid;
extern bool cgraph_global_info_ready;
extern GTY(()) struct cgraph_node *cgraph_nodes_queue;
-extern FILE *cgraph_dump_file;
extern GTY(()) int cgraph_varpool_n_nodes;
extern GTY(()) struct cgraph_varpool_node *cgraph_varpool_nodes_queue;
tree);
struct cgraph_node *cgraph_node (tree decl);
struct cgraph_edge *cgraph_edge (struct cgraph_node *, tree call_expr);
-bool cgraph_calls_p (tree, tree);
struct cgraph_local_info *cgraph_local_info (tree);
struct cgraph_global_info *cgraph_global_info (tree);
struct cgraph_rtl_info *cgraph_rtl_info (tree);
void cgraph_redirect_edge_callee (struct cgraph_edge *, struct cgraph_node *);
bool cgraph_function_possibly_inlined_p (tree);
+void cgraph_unnest_node (struct cgraph_node *node);
/* In cgraphunit.c */
bool cgraph_assemble_pending_functions (void);
void verify_cgraph_node (struct cgraph_node *);
void cgraph_mark_inline_edge (struct cgraph_edge *e);
void cgraph_clone_inlined_nodes (struct cgraph_edge *e, bool duplicate);
+void cgraph_build_static_cdtor (char which, tree body, int priority);
+void cgraph_reset_static_var_maps (void);
+void init_cgraph (void);
#endif /* GCC_CGRAPH_H */