aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop-iv.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2013-04-17 12:01:46 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2013-04-17 12:01:46 +0000
commitef23e6a2d730a0f57afa958768dba05d0ee36d10 (patch)
tree6f5974270d53a9f59def50d3f7b035dafa24e645 /gcc/loop-iv.c
parentfc6f94f567e2a982dcba31dab027a49c196febf3 (diff)
downloadgcc-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.c8
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;
}