On Tue, Jan 10, 2017 at 3:38 AM, David Malcolm <dmalc...@redhat.com> wrote: > gcc/ChangeLog: > * cfg.c (original_copy_tables_initialized_p): New function. > * cfg.h (original_copy_tables_initialized_p): New decl. > * cfgrtl.c (relink_block_chain): Guard the call to > free_original_copy_tables with a call to > original_copy_tables_initialized_p.
Ok. Richard. > --- > gcc/cfg.c | 9 +++++++++ > gcc/cfg.h | 1 + > gcc/cfgrtl.c | 3 ++- > 3 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/gcc/cfg.c b/gcc/cfg.c > index 97cc755..f30b680 100644 > --- a/gcc/cfg.c > +++ b/gcc/cfg.c > @@ -1094,6 +1094,15 @@ free_original_copy_tables (void) > original_copy_bb_pool = NULL; > } > > +/* Return true iff we have had a call to initialize_original_copy_tables > + without a corresponding call to free_original_copy_tables. */ > + > +bool > +original_copy_tables_initialized_p (void) > +{ > + return original_copy_bb_pool != NULL; > +} > + > /* Removes the value associated with OBJ from table TAB. */ > > static void > diff --git a/gcc/cfg.h b/gcc/cfg.h > index d421d3b..b44f1e1 100644 > --- a/gcc/cfg.h > +++ b/gcc/cfg.h > @@ -110,6 +110,7 @@ extern void scale_bbs_frequencies_gcov_type (basic_block > *, int, gcov_type, > extern void initialize_original_copy_tables (void); > extern void reset_original_copy_tables (void); > extern void free_original_copy_tables (void); > +extern bool original_copy_tables_initialized_p (void); > extern void set_bb_original (basic_block, basic_block); > extern basic_block get_bb_original (basic_block); > extern void set_bb_copy (basic_block, basic_block); > diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c > index 7604346..b3b1146 100644 > --- a/gcc/cfgrtl.c > +++ b/gcc/cfgrtl.c > @@ -3646,7 +3646,8 @@ relink_block_chain (bool stay_in_cfglayout_mode) > /* Maybe reset the original copy tables, they are not valid anymore > when we renumber the basic blocks in compact_blocks. If we are > are going out of cfglayout mode, don't re-allocate the tables. */ > - free_original_copy_tables (); > + if (original_copy_tables_initialized_p ()) > + free_original_copy_tables (); > if (stay_in_cfglayout_mode) > initialize_original_copy_tables (); > > -- > 1.8.5.3 >