/* Data and Control Flow Analysis for Trees.
- Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
Contributed by Diego Novillo <dnovillo@redhat.com>
This file is part of GCC.
/* Nonzero if this pointer points to a global variable. */
unsigned int pt_global_mem : 1;
+ /* Nonzero if this pointer points to NULL. */
+ unsigned int pt_null : 1;
+
/* Set of variables that this pointer may point to. */
bitmap pt_vars;
states. */
ENUM_BITFIELD (need_phi_state) need_phi_state : 2;
+ /* Used during operand processing to determine if this variable is already
+ in the vuse list. */
+ unsigned in_vuse_list : 1;
+
+ /* Used during operand processing to determine if this variable is already
+ in the v_may_def list. */
+ unsigned in_v_may_def_list : 1;
+
/* An artificial variable representing the memory location pointed-to by
all the pointers that TBAA (type-based alias analysis) considers
to be aliased. If the variable is not a pointer or if it is never
struct stmt_ann_d GTY((tag ("STMT_ANN"))) stmt;
};
+extern GTY(()) VEC(tree) *modified_noreturn_calls;
+
typedef union tree_ann_d *tree_ann_t;
typedef struct var_ann_d *var_ann_t;
typedef struct stmt_ann_d *stmt_ann_t;
static inline enum tree_ann_type ann_type (tree_ann_t);
static inline basic_block bb_for_stmt (tree);
extern void set_bb_for_stmt (tree, basic_block);
+static inline bool noreturn_call_p (tree);
static inline void modify_stmt (tree);
static inline void unmodify_stmt (tree);
static inline bool stmt_modified_p (tree);
/* Chain of PHI nodes for this block. */
tree phi_nodes;
- /* Nonzero if this block is forwardable during cfg cleanups. This is also
- used to detect loops during cfg cleanups. */
- unsigned forwardable: 1;
-
/* Nonzero if this block contains an escape point (see is_escape_site). */
unsigned has_escape_site : 1;
extern var_ann_t create_var_ann (tree);
extern stmt_ann_t create_stmt_ann (tree);
extern tree_ann_t create_tree_ann (tree);
+extern void reserve_phi_args_for_new_edge (basic_block);
extern tree create_phi_node (tree, basic_block);
-extern void add_phi_arg (tree *, tree, edge);
+extern void add_phi_arg (tree, tree, edge);
extern void remove_phi_args (edge);
extern void remove_phi_node (tree, tree, basic_block);
extern void remove_all_phi_nodes_for (bitmap);
extern void add_referenced_tmp_var (tree);
extern void mark_new_vars_to_rename (tree, bitmap);
extern void find_new_referenced_vars (tree *);
+void mark_call_clobbered_vars_to_rename (void);
extern void redirect_immediate_uses (tree, tree);
extern tree make_rename_temp (tree, const char *);
/* In tree-ssa.c */
extern void init_tree_ssa (void);
-extern void debug_reaching_defs (void);
extern void dump_tree_ssa (FILE *);
extern void debug_tree_ssa (void);
extern void debug_def_blocks (void);
struct tree_niter_desc *);
bool number_of_iterations_exit (struct loop *, edge,
struct tree_niter_desc *niter);
+tree find_loop_niter (struct loop *, edge *);
tree loop_niter_by_eval (struct loop *, edge);
tree find_loop_niter_by_eval (struct loop *, edge *);
void estimate_numbers_of_iterations (struct loops *);
extern enum move_pos movement_possibility (tree);
/* In tree-flow-inline.h */
-static inline int phi_arg_from_edge (tree, edge);
static inline bool is_call_clobbered (tree);
static inline void mark_call_clobbered (tree);
static inline void set_is_used (tree);