re PR middle-end/56525 (Access to ggc_freed memory in flow_loops_find)
2013-03-05 Richard Biener <rguenther@suse.de> PR middle-end/56525 * loop-init.c (fix_loop_structure): Remove loops in two stages, not freeing them until the end. From-SVN: r196462
This commit is contained in:
parent
f276b762ec
commit
5e7f1aefc8
@ -1,3 +1,9 @@
|
||||
2013-03-05 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR middle-end/56525
|
||||
* loop-init.c (fix_loop_structure): Remove loops in two stages,
|
||||
not freeing them until the end.
|
||||
|
||||
2013-03-05 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||
|
||||
* config/s390/s390.h: Define DWARF2_ASM_LINE_DEBUG_INFO.
|
||||
|
@ -186,7 +186,7 @@ fix_loop_structure (bitmap changed_bbs)
|
||||
int record_exits = 0;
|
||||
loop_iterator li;
|
||||
struct loop *loop;
|
||||
unsigned old_nloops;
|
||||
unsigned old_nloops, i;
|
||||
|
||||
timevar_push (TV_LOOP_INIT);
|
||||
|
||||
@ -230,8 +230,9 @@ fix_loop_structure (bitmap changed_bbs)
|
||||
flow_loop_tree_node_add (loop_outer (loop), ploop);
|
||||
}
|
||||
|
||||
/* Remove the loop and free its data. */
|
||||
delete_loop (loop);
|
||||
/* Remove the loop. */
|
||||
loop->header = NULL;
|
||||
flow_loop_tree_node_remove (loop);
|
||||
}
|
||||
|
||||
/* Remember the number of loops so we can return how many new loops
|
||||
@ -253,6 +254,14 @@ fix_loop_structure (bitmap changed_bbs)
|
||||
}
|
||||
}
|
||||
|
||||
/* Finally free deleted loops. */
|
||||
FOR_EACH_VEC_ELT (*get_loops (), i, loop)
|
||||
if (loop && loop->header == NULL)
|
||||
{
|
||||
(*get_loops ())[i] = NULL;
|
||||
flow_loop_free (loop);
|
||||
}
|
||||
|
||||
loops_state_clear (LOOPS_NEED_FIXUP);
|
||||
|
||||
/* Apply flags to loops. */
|
||||
|
Loading…
Reference in New Issue
Block a user