diff options
author | Richard Biener <rguenther@suse.de> | 2013-04-17 12:01:46 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-04-17 12:01:46 +0000 |
commit | ef23e6a2d730a0f57afa958768dba05d0ee36d10 (patch) | |
tree | 6f5974270d53a9f59def50d3f7b035dafa24e645 /gcc/loop-iv.c | |
parent | fc6f94f567e2a982dcba31dab027a49c196febf3 (diff) | |
download | gcc-ef23e6a2d730a0f57afa958768dba05d0ee36d10.zip gcc-ef23e6a2d730a0f57afa958768dba05d0ee36d10.tar.gz gcc-ef23e6a2d730a0f57afa958768dba05d0ee36d10.tar.bz2 |
re PR rtl-optimization/56921 (ICE in rtx_cost called by doloop_optimize_loops for PPC)
2013-04-17 Richard Biener <rguenther@suse.de>
PR rtl-optimization/56921
* cfgloop.h (struct loop): Add simple_loop_desc member.
(struct niter_desc): Mark with GTY(()).
(simple_loop_desc): Do not use aux field but simple_loop_desc.
* loop-iv.c (get_simple_loop_desc): Likewise.
(free_simple_loop_desc): Likewise.
Revert
2013-04-16 Richard Biener <rguenther@suse.de>
PR rtl-optimization/56921
* loop-init.c (pass_rtl_move_loop_invariants): Add
TODO_do_not_ggc_collect to todo_flags_finish.
(pass_rtl_unswitch): Same.
(pass_rtl_unroll_and_peel_loops): Same.
(pass_rtl_doloop): Same.
From-SVN: r198025
Diffstat (limited to 'gcc/loop-iv.c')
-rw-r--r-- | gcc/loop-iv.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/loop-iv.c b/gcc/loop-iv.c index 0847307..5695e29 100644 --- a/gcc/loop-iv.c +++ b/gcc/loop-iv.c @@ -3016,10 +3016,10 @@ get_simple_loop_desc (struct loop *loop) /* At least desc->infinite is not always initialized by find_simple_loop_exit. */ - desc = XCNEW (struct niter_desc); + desc = ggc_alloc_cleared_niter_desc (); iv_analysis_loop_init (loop); find_simple_exit (loop, desc); - loop->aux = desc; + loop->simple_loop_desc = desc; if (desc->simple_p && (desc->assumptions || desc->infinite)) { @@ -3069,6 +3069,6 @@ free_simple_loop_desc (struct loop *loop) if (!desc) return; - free (desc); - loop->aux = NULL; + ggc_free (desc); + loop->simple_loop_desc = NULL; } |