#include "ipa-reference.h"
#include "tree-ssa-alias.h"
-struct static_var_ann_d;
-
/* Gimple dataflow datastructure. All publicly available fields shall have
gimple_ accessor defined in tree-flow-inline.h, all publicly modifiable
expansion (see gimple_to_tree). */
int rn;
- /* Auxiliary info specific to a pass. At all times, this
- should either point to valid data or be NULL. */
- PTR GTY ((skip (""))) aux;
-
- /* The value handle for this expression. Used by GVN-PRE. */
- tree GTY((skip)) value_handle;
-
/* Pointer to original GIMPLE statement. Used during RTL expansion
(see gimple_to_tree). */
gimple stmt;
struct GTY(()) var_ann_d {
struct tree_ann_common_d common;
- /* Used by the out of SSA pass to determine whether this variable has
- been seen yet or not. */
- unsigned out_of_ssa_tag : 1;
-
/* Used when building base variable structures in a var_map. */
unsigned base_var_processed : 1;
information on each attribute. */
ENUM_BITFIELD (noalias_state) noalias_state : 2;
- /* Used when going out of SSA form to indicate which partition this
- variable represents storage for. */
- unsigned partition;
-
/* Used by var_map for the base index of ssa base variables. */
unsigned base_index;
tree current_def;
};
-/* Container for variable annotation used by hashtable for annotations for
- static variables. */
-struct GTY(()) static_var_ann_d {
- struct var_ann_d ann;
- unsigned int uid;
-};
-
-struct GTY(()) function_ann_d {
- struct tree_ann_common_d common;
-};
-
/* Immediate use lists are used to directly access all uses for an SSA
name and get pointers to the statement for each use.
union GTY((desc ("ann_type ((tree_ann_t)&%h)"))) tree_ann_d {
struct tree_ann_common_d GTY((tag ("TREE_ANN_COMMON"))) common;
struct var_ann_d GTY((tag ("VAR_ANN"))) vdecl;
- struct function_ann_d GTY((tag ("FUNCTION_ANN"))) fdecl;
};
typedef union tree_ann_d *tree_ann_t;
typedef struct var_ann_d *var_ann_t;
-typedef struct function_ann_d *function_ann_t;
typedef struct tree_ann_common_d *tree_ann_common_t;
static inline tree_ann_common_t tree_common_ann (const_tree);
static inline tree_ann_common_t get_tree_common_ann (tree);
static inline var_ann_t var_ann (const_tree);
static inline var_ann_t get_var_ann (tree);
-static inline function_ann_t function_ann (const_tree);
-static inline function_ann_t get_function_ann (tree);
static inline enum tree_ann_type ann_type (tree_ann_t);
static inline void update_stmt (gimple);
static inline int get_lineno (const_gimple);
/* In tree-dfa.c */
extern var_ann_t create_var_ann (tree);
-extern function_ann_t create_function_ann (tree);
extern void renumber_gimple_stmt_uids (void);
extern tree_ann_common_t create_tree_common_ann (tree);
extern void dump_dfa_stats (FILE *);
void mark_virtual_ops_for_renaming (gimple);
/* In tree-ssa-threadedge.c */
+extern void threadedge_initialize_values (void);
+extern void threadedge_finalize_values (void);
+extern VEC(tree,heap) *ssa_name_values;
+#define SSA_NAME_VALUE(x) \
+ (SSA_NAME_VERSION(x) < VEC_length(tree, ssa_name_values) \
+ ? VEC_index(tree, ssa_name_values, SSA_NAME_VERSION(x)) \
+ : NULL_TREE)
+extern void set_ssa_name_value (tree, tree);
extern bool potentially_threadable_block (basic_block);
extern void thread_across_edge (gimple, edge, bool,
VEC(tree, heap) **, tree (*) (gimple, gimple));
void get_address_description (tree, struct mem_address *);
tree maybe_fold_tmr (tree);
+unsigned int execute_free_datastructures (void);
unsigned int execute_fixup_cfg (void);
#include "tree-flow-inline.h"