This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] Fix PR43464: update loop closed SSA form once copy prop is done
- From: Sebastian Pop <sebpop at gmail dot com>
- To: Richard Guenther <rguenther at suse dot de>
- Cc: Kenneth dot Zadeck at naturalbridge dot com, stevenb dot gcc at gmail dot com, gcc-patches at gcc dot gnu dot org
- Date: Thu, 1 Apr 2010 08:42:32 -0600
- Subject: Re: [patch] Fix PR43464: update loop closed SSA form once copy prop is done
- References: <571f6b511003231519y368f13c4xe611d9c0b6395707@mail.gmail.com> <87mxxywfog.fsf@moria.site> <cb9d34b21003241316o75198cb5n148f788a14125fa6@mail.gmail.com> <alpine.LNX.2.00.1003261048500.5522@zhemvz.fhfr.qr> <cb9d34b21003290926k7f14b0beyfbabe0bed5c2e015@mail.gmail.com> <k2lcb9d34b21003311146sc9225138t9891d4ca2d59905@mail.gmail.com> <alpine.LNX.2.00.1004011359230.5522@zhemvz.fhfr.qr>
On Thu, Apr 1, 2010 at 06:00, Richard Guenther <rguenther@suse.de> wrote:
> On Wed, 31 Mar 2010, Sebastian Pop wrote:
>
>> On Mon, Mar 29, 2010 at 10:26, Sebastian Pop <sebpop@gmail.com> wrote:
>> > PS: to reproduce the errors described here you would need the attached
>> > patches.
>>
>> The attached patch systematically adds a TODO_verify_loops to all the
>> passes that work at the LNO level. ?Would this be ok for trunk after
>> testing and bootstrap?
>
> It would probably be better to automatically schedule this from
> the pass manager if current_loops != NULL. ?Anyway, this looks like
> stage1 material to me.
You mean a patch like this?
Ok for 4.6 if it passes regstrap?
Thanks,
Sebastian
From 1e72253c4fe58037a3887a3d633bb80bbef52fe8 Mon Sep 17 00:00:00 2001
From: Sebastian Pop <sebpop@gmail.com>
Date: Thu, 1 Apr 2010 09:38:57 -0500
Subject: [PATCH] Always execute verify_loop_closed_ssa at LNO level.
---
gcc/passes.c | 2 +-
gcc/tree-if-conv.c | 2 +-
gcc/tree-loop-distribution.c | 2 +-
gcc/tree-pass.h | 1 -
gcc/tree-ssa-loop.c | 28 +++++++++++++---------------
5 files changed, 16 insertions(+), 19 deletions(-)
diff --git a/gcc/passes.c b/gcc/passes.c
index 1ac8694..4ed4c47 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -1262,7 +1262,7 @@ execute_function_todo (void *data)
verify_flow_info ();
if (flags & TODO_verify_stmts)
verify_stmts ();
- if (flags & TODO_verify_loops)
+ if (current_loops)
verify_loop_closed_ssa ();
if (flags & TODO_verify_rtl_sharing)
verify_rtl_sharing ();
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c
index 7f193ec..a008384 100644
--- a/gcc/tree-if-conv.c
+++ b/gcc/tree-if-conv.c
@@ -1180,7 +1180,7 @@ struct gimple_opt_pass pass_if_conversion =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops | TODO_verify_stmts | TODO_verify_flow
+ TODO_dump_func | TODO_verify_stmts | TODO_verify_flow
/* todo_flags_finish */
}
};
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c
index 74120c6..cb0c6b1 100644
--- a/gcc/tree-loop-distribution.c
+++ b/gcc/tree-loop-distribution.c
@@ -1242,6 +1242,6 @@ struct gimple_opt_pass pass_loop_distribution =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops /* todo_flags_finish */
+ TODO_dump_func /* todo_flags_finish */
}
};
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index 383a164..81889e4 100644
--- a/gcc/tree-pass.h
+++ b/gcc/tree-pass.h
@@ -238,7 +238,6 @@ struct dump_file_info
#define TODO_verify_flow (1 << 3)
#define TODO_verify_stmts (1 << 4)
#define TODO_cleanup_cfg (1 << 5)
-#define TODO_verify_loops (1 << 6)
#define TODO_dump_cgraph (1 << 7)
#define TODO_remove_functions (1 << 8)
#define TODO_rebuild_frequencies (1 << 9)
diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c
index 591890c..fbf8d59 100644
--- a/gcc/tree-ssa-loop.c
+++ b/gcc/tree-ssa-loop.c
@@ -97,7 +97,7 @@ struct gimple_opt_pass pass_tree_loop_init =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops /* todo_flags_finish */
+ TODO_dump_func /* todo_flags_finish */
}
};
@@ -134,7 +134,7 @@ struct gimple_opt_pass pass_lim =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops /* todo_flags_finish */
+ TODO_dump_func /* todo_flags_finish */
}
};
@@ -170,8 +170,7 @@ struct gimple_opt_pass pass_tree_unswitch =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_ggc_collect | TODO_dump_func
- | TODO_verify_loops /* todo_flags_finish */
+ TODO_ggc_collect | TODO_dump_func /* todo_flags_finish */
}
};
@@ -208,7 +207,7 @@ struct gimple_opt_pass pass_predcom =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops
+ TODO_dump_func
| TODO_update_ssa_only_virtuals /* todo_flags_finish */
}
};
@@ -244,7 +243,7 @@ struct gimple_opt_pass pass_vectorize =
PROP_cfg | PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
- TODO_verify_loops, /* todo_flags_start */
+ 0, /* todo_flags_start */
TODO_dump_func | TODO_update_ssa
| TODO_ggc_collect /* todo_flags_finish */
}
@@ -283,7 +282,7 @@ struct gimple_opt_pass pass_linear_transform =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops
+ TODO_dump_func
| TODO_update_ssa_only_virtuals
| TODO_ggc_collect /* todo_flags_finish */
}
@@ -329,7 +328,7 @@ struct gimple_opt_pass pass_graphite_transforms =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_verify_loops /* todo_flags_finish */
+ 0 /* todo_flags_finish */
}
};
@@ -402,7 +401,7 @@ struct gimple_opt_pass pass_iv_canon =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops /* todo_flags_finish */
+ TODO_dump_func /* todo_flags_finish */
}
};
@@ -501,7 +500,7 @@ struct gimple_opt_pass pass_complete_unroll =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops
+ TODO_dump_func
| TODO_ggc_collect /* todo_flags_finish */
}
};
@@ -548,7 +547,7 @@ struct gimple_opt_pass pass_complete_unrolli =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops
+ TODO_dump_func
| TODO_ggc_collect /* todo_flags_finish */
}
};
@@ -587,7 +586,7 @@ struct gimple_opt_pass pass_parallelize_loops =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops /* todo_flags_finish */
+ TODO_dump_func /* todo_flags_finish */
}
};
@@ -623,7 +622,7 @@ struct gimple_opt_pass pass_loop_prefetch =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops /* todo_flags_finish */
+ TODO_dump_func /* todo_flags_finish */
}
};
@@ -660,8 +659,7 @@ struct gimple_opt_pass pass_iv_optimize =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_loops
- | TODO_update_ssa | TODO_ggc_collect /* todo_flags_finish */
+ TODO_dump_func | TODO_update_ssa | TODO_ggc_collect /* todo_flags_finish */
}
};
--
1.6.3.3