From 2b3ac48e4c3fb903960e61024f4de57697eedbf7 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Wed, 20 May 2015 10:36:30 -0600 Subject: [PATCH] tree-ssa-threadupdate.c (mark_threaded_blocks): Properly dispose of the jump thread path when... * tree-ssa-threadupdate.c (mark_threaded_blocks): Properly dispose of the jump thread path when the jump threading opportunity is cancelled. From-SVN: r223448 --- gcc/ChangeLog | 6 ++++++ gcc/tree-ssa-threadupdate.c | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fe4dfc45e5c..27435c675c5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-05-20 Jeff Law + + * tree-ssa-threadupdate.c (mark_threaded_blocks): Properly + dispose of the jump thread path when the jump threading + opportunity is cancelled. + 2015-05-20 Manuel López-Ibáñez * diagnostic.c (diagnostic_print_caret_line): Fix off-by-one error diff --git a/gcc/tree-ssa-threadupdate.c b/gcc/tree-ssa-threadupdate.c index c5b78a4629a..4bccad0156a 100644 --- a/gcc/tree-ssa-threadupdate.c +++ b/gcc/tree-ssa-threadupdate.c @@ -2159,9 +2159,16 @@ mark_threaded_blocks (bitmap threaded_blocks) { /* Attach the path to the starting edge if none is yet recorded. */ if ((*path)[0]->e->aux == NULL) - (*path)[0]->e->aux = path; - else if (dump_file && (dump_flags & TDF_DETAILS)) - dump_jump_thread_path (dump_file, *path, false); + { + (*path)[0]->e->aux = path; + } + else + { + paths.unordered_remove (i); + if (dump_file && (dump_flags & TDF_DETAILS)) + dump_jump_thread_path (dump_file, *path, false); + delete_jump_thread_path (path); + } } } /* Second, look for paths that have any other jump thread attached to @@ -2185,8 +2192,10 @@ mark_threaded_blocks (bitmap threaded_blocks) else { e->aux = NULL; + paths.unordered_remove (i); if (dump_file && (dump_flags & TDF_DETAILS)) dump_jump_thread_path (dump_file, *path, false); + delete_jump_thread_path (path); } } } -- 2.30.2