aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorManuel López-Ibáñez <manu@gcc.gnu.org>2008-01-22 13:27:52 +0000
committerManuel López-Ibáñez <manu@gcc.gnu.org>2008-01-22 13:27:52 +0000
commitf9d023841c0b0c0575823540c9c87c8c8bcae2d4 (patch)
tree5253ca8e5d8e0bce15ed0eea3a4e13be1b76ea63 /gcc
parent80f4129beb0446158708648502e77ac1d1c3142d (diff)
downloadgcc-f9d023841c0b0c0575823540c9c87c8c8bcae2d4.zip
gcc-f9d023841c0b0c0575823540c9c87c8c8bcae2d4.tar.gz
gcc-f9d023841c0b0c0575823540c9c87c8c8bcae2d4.tar.bz2
re PR tree-optimization/33092 (Using -O1 -fno-tree-salias results in ICE)
2008-01-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/passes.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/tree-pass.h1
-rw-r--r--gcc/tree-ssa-alias.c24
5 files changed, 43 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fe329df..1da929c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2008-01-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ 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 <gellerich@de.ibm.com>
* config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
diff --git a/gcc/passes.c b/gcc/passes.c
index 48f78b4..2614c90 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 e73eae9..1c9c54c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ PR middle-end/33092
+ * gcc.dg/pr33092.c: New.
+
2008-01-22 Andreas Krebbel <krebbel1@de.ibm.com>
* gcc.target/s390/20020926-1.c: Add -m31 option.
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index 3eda29e..fe73332 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 13ec95b..7ab2f6b 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 */
+};