From: Manuel López-Ibáñez Date: Tue, 22 Jan 2008 13:27:52 +0000 (+0000) Subject: re PR tree-optimization/33092 (Using -O1 -fno-tree-salias results in ICE) X-Git-Tag: releases/gcc-4.3.0~486 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f9d023841c0b0c0575823540c9c87c8c8bcae2d4;p=thirdparty%2Fgcc.git re PR tree-optimization/33092 (Using -O1 -fno-tree-salias results in ICE) 2008-01-22 Manuel Lopez-Ibanez PR middle-end/33092 * tree-pass.h (pass_build_alias): New pass. * tree-ssa-alias.c (gate_build_alias): New. (pass_build_alias): New. * passes.c (init_optimization_passes): Add pass_build_alias after pass_create_structure_vars. testsuite/ * gcc.dg/pr33092.c: New. From-SVN: r131717 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fe329dffbd1d..1da929ce7273 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2008-01-22 Manuel Lopez-Ibanez + + PR middle-end/33092 + * tree-pass.h (pass_build_alias): New pass. + * tree-ssa-alias.c (gate_build_alias): New. + (pass_build_alias): New. + * passes.c (init_optimization_passes): Add pass_build_alias after + pass_create_structure_vars. + 2008-01-22 Wolfgang Gellerich * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER): diff --git a/gcc/passes.c b/gcc/passes.c index 48f78b42be8d..2614c90b3ca8 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -557,6 +557,10 @@ init_optimization_passes (void) { struct tree_opt_pass **p = &pass_all_optimizations.sub; NEXT_PASS (pass_create_structure_vars); + /* ??? pass_build_alias is a dummy pass that ensures that we + execute TODO_rebuild_alias at this point even if + pass_create_structure_vars was disabled. */ + NEXT_PASS (pass_build_alias); NEXT_PASS (pass_return_slot); NEXT_PASS (pass_rename_ssa_copies); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e73eae9c736f..1c9c54c9b967 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-01-22 Manuel Lopez-Ibanez + + PR middle-end/33092 + * gcc.dg/pr33092.c: New. + 2008-01-22 Andreas Krebbel * gcc.target/s390/20020926-1.c: Add -m31 option. diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index 3eda29ec44d1..fe73332dee1b 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -278,6 +278,7 @@ extern struct tree_opt_pass pass_ccp; extern struct tree_opt_pass pass_phi_only_cprop; extern struct tree_opt_pass pass_build_ssa; extern struct tree_opt_pass pass_del_ssa; +extern struct tree_opt_pass pass_build_alias; extern struct tree_opt_pass pass_dominator; extern struct tree_opt_pass pass_dce; extern struct tree_opt_pass pass_dce_loop; diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 13ec95b9e9d0..7ab2f6b5473e 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -4252,3 +4252,27 @@ struct tree_opt_pass pass_reset_cc_flags = 0, /* todo_flags_finish */ 0 /* letter */ }; + +static bool +gate_build_alias (void) +{ + return !gate_structure_vars(); +} + + +struct tree_opt_pass pass_build_alias = +{ + "build_alias", /* name */ + gate_build_alias, /* gate */ + NULL, /* execute */ + NULL, /* sub */ + NULL, /* next */ + 0, /* static_pass_number */ + 0, /* tv_id */ + PROP_cfg | PROP_ssa, /* properties_required */ + PROP_alias, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_rebuild_alias, /* todo_flags_finish */ + 0 /* letter */ +};