From e845b564fe8c58a350f7e7e4ceaaeed0ae28db93 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Wed, 13 Apr 2016 10:59:37 -0400 Subject: [PATCH 75/91] FIXME: make rtx_reader instance survive init_rtx_reader_args[_cb] --- gcc/gensupport.c | 16 +++++++++++----- gcc/gensupport.h | 6 +++--- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/gcc/gensupport.c b/gcc/gensupport.c index b68010e..c60364b 100644 --- a/gcc/gensupport.c +++ b/gcc/gensupport.c @@ -2507,7 +2507,7 @@ check_define_attr_duplicates () /* The entry point for initializing the reader. */ -bool +rtx_reader * init_rtx_reader_args_cb (int argc, const char **argv, bool (*parse_opt) (const char *)) { @@ -2525,8 +2525,8 @@ init_rtx_reader_args_cb (int argc, const char **argv, line_maps *line_table = XCNEW (struct line_maps); generator_linemap_init (line_table); - gen_reader reader (line_table); - reader.read_md_files (argc, argv, parse_opt); + gen_reader *reader = new gen_reader (line_table); + reader->read_md_files (argc, argv, parse_opt); if (define_attr_queue != NULL) check_define_attr_duplicates (); @@ -2542,12 +2542,18 @@ init_rtx_reader_args_cb (int argc, const char **argv, if (define_attr_queue != NULL) gen_mnemonic_attr (); - return !have_error; + if (have_error) + { + delete reader; + return NULL; + } + + return reader; } /* Programs that don't have their own options can use this entry point instead. */ -bool +rtx_reader * init_rtx_reader_args (int argc, const char **argv) { return init_rtx_reader_args_cb (argc, argv, 0); diff --git a/gcc/gensupport.h b/gcc/gensupport.h index 645512c..618359d 100644 --- a/gcc/gensupport.h +++ b/gcc/gensupport.h @@ -125,9 +125,9 @@ struct optab_pattern }; extern rtx add_implicit_parallel (rtvec); -extern bool init_rtx_reader_args_cb (int, const char **, - bool (*)(const char *)); -extern bool init_rtx_reader_args (int, const char **); +extern rtx_reader *init_rtx_reader_args_cb (int, const char **, + bool (*)(const char *)); +extern rtx_reader *init_rtx_reader_args (int, const char **); extern bool read_md_rtx (md_rtx_info *); extern unsigned int get_num_insn_codes (); -- 1.8.5.3