GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING. If not, write to
-the Free Software Foundation, 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA. */
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
#ifndef GCC_TREE_PASS_H
extern int dump_initialized_p (enum tree_dump_index);
extern FILE *dump_begin (enum tree_dump_index, int *);
extern void dump_end (enum tree_dump_index, FILE *);
-extern void dump_node (tree, int, FILE *);
+extern void dump_node (const_tree, int, FILE *);
extern int dump_switch_p (const char *);
extern const char *dump_flag_name (enum tree_dump_index);
#define PROP_gimple_leh (1 << 2) /* lowered eh */
#define PROP_cfg (1 << 3)
#define PROP_referenced_vars (1 << 4)
-#define PROP_pta (1 << 5)
-#define PROP_ssa (1 << 6)
-#define PROP_no_crit_edges (1 << 7)
-#define PROP_rtl (1 << 8)
-#define PROP_alias (1 << 9)
-#define PROP_gimple_lomp (1 << 10) /* lowered OpenMP directives */
+#define PROP_ssa (1 << 5)
+#define PROP_no_crit_edges (1 << 6)
+#define PROP_rtl (1 << 7)
+#define PROP_alias (1 << 8)
+#define PROP_gimple_lomp (1 << 9) /* lowered OpenMP directives */
#define PROP_trees \
(PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh | PROP_gimple_lomp)
#define TODO_dump_cgraph (1 << 7)
#define TODO_remove_functions (1 << 8)
#define TODO_rebuild_frequencies (1 << 9)
+#define TODO_verify_rtl_sharing (1 << 10)
/* To-do flags for calls to update_ssa. */
in blocks that have one or more edges with no incoming definition
for O_j. This would lead to uninitialized warnings for O_j's
symbol. */
-#define TODO_update_ssa (1 << 10)
+#define TODO_update_ssa (1 << 11)
/* Update the SSA form without inserting any new PHI nodes at all.
This is used by passes that have either inserted all the PHI nodes
themselves or passes that need only to patch use-def and def-def
chains for virtuals (e.g., DCE). */
-#define TODO_update_ssa_no_phi (1 << 11)
+#define TODO_update_ssa_no_phi (1 << 12)
/* Insert PHI nodes everywhere they are needed. No pruning of the
IDF is done. This is used by passes that need the PHI nodes for
may be doing something wrong. Inserting PHI nodes for an old name
where not all edges carry a new replacement may lead to silent
codegen errors or spurious uninitialized warnings. */
-#define TODO_update_ssa_full_phi (1 << 12)
+#define TODO_update_ssa_full_phi (1 << 13)
/* Passes that update the SSA form on their own may want to delegate
the updating of virtual names to the generic updater. Since FUD
to do. NOTE: If this flag is used, any OLD->NEW mappings for real
names are explicitly destroyed and only the symbols marked for
renaming are processed. */
-#define TODO_update_ssa_only_virtuals (1 << 13)
+#define TODO_update_ssa_only_virtuals (1 << 14)
/* Some passes leave unused local variables that can be removed from
cfun->unexpanded_var_list. This reduces the size of dump files and
the memory footprint for VAR_DECLs. */
-#define TODO_remove_unused_locals (1 << 14)
+#define TODO_remove_unused_locals (1 << 15)
/* Internally used for the first in a sequence of passes. It is set
for the passes that are handed to register_dump_files. */
-#define TODO_set_props (1 << 15)
+#define TODO_set_props (1 << 16)
/* Call df_finish at the end of the pass. This is done after all of
the dumpers have been allowed to run so that they have access to
the instance before it is destroyed. */
-#define TODO_df_finish (1 << 16)
+#define TODO_df_finish (1 << 17)
+
+/* Call df_verify at the end of the pass if checking is enabled. */
+#define TODO_df_verify (1 << 18)
/* Internally used for the first instance of a pass. */
-#define TODO_mark_first_instance (1 << 17)
+#define TODO_mark_first_instance (1 << 19)
+
+/* Rebuild aliasing info. */
+#define TODO_rebuild_alias (1 << 20)
#define TODO_update_ssa_any \
(TODO_update_ssa \
extern struct tree_opt_pass pass_dce_loop;
extern struct tree_opt_pass pass_cd_dce;
extern struct tree_opt_pass pass_merge_phi;
-extern struct tree_opt_pass pass_may_alias;
extern struct tree_opt_pass pass_split_crit_edges;
extern struct tree_opt_pass pass_pre;
extern struct tree_opt_pass pass_profile;
extern struct tree_opt_pass pass_lower_vector_ssa;
extern struct tree_opt_pass pass_lower_omp;
extern struct tree_opt_pass pass_expand_omp;
+extern struct tree_opt_pass pass_expand_omp_ssa;
extern struct tree_opt_pass pass_object_sizes;
extern struct tree_opt_pass pass_fold_builtins;
extern struct tree_opt_pass pass_stdarg;
extern struct tree_opt_pass pass_phiprop;
extern struct tree_opt_pass pass_tree_ifcombine;
extern struct tree_opt_pass pass_dse;
+extern struct tree_opt_pass pass_simple_dse;
extern struct tree_opt_pass pass_nrv;
extern struct tree_opt_pass pass_mark_used_blocks;
extern struct tree_opt_pass pass_rename_ssa_copies;
extern struct tree_opt_pass pass_subregs_of_mode_init;
extern struct tree_opt_pass pass_subregs_of_mode_finish;
extern struct tree_opt_pass pass_inc_dec;
-extern struct tree_opt_pass pass_no_new_pseudos;
extern struct tree_opt_pass pass_stack_ptr_mod;
extern struct tree_opt_pass pass_initialize_regs;
extern struct tree_opt_pass pass_combine;
extern struct tree_opt_pass pass_inline_parameters;
extern struct tree_opt_pass pass_apply_inline;
extern struct tree_opt_pass pass_all_early_optimizations;
+extern struct tree_opt_pass pass_update_address_taken;
/* The root of the compilation pass tree, once constructed. */
extern struct tree_opt_pass *all_passes, *all_ipa_passes, *all_lowering_passes;