aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2014-11-19 19:08:29 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2014-11-19 19:08:29 +0000
commit0ef443cf01de9153f66d9327784c6137d387dade (patch)
tree3e05b6e27cfe2411e105ee9403deb3eeafd30ef0 /gcc
parent3bdf0a9ba51c25ab13d5f37e311d77c12aca55ae (diff)
downloadgcc-0ef443cf01de9153f66d9327784c6137d387dade.zip
gcc-0ef443cf01de9153f66d9327784c6137d387dade.tar.gz
gcc-0ef443cf01de9153f66d9327784c6137d387dade.tar.bz2
PR jit/63854: Fix memory leak within gcc_options
gcc/ChangeLog: PR jit/63854 * opts.c (finalize_options_struct): New. * opts.h (finalize_options_struct): New. * toplev.c (toplev::finalize): Call finalize_options_struct on global_options and global_options_set. From-SVN: r217791
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/opts.c8
-rw-r--r--gcc/opts.h1
-rw-r--r--gcc/toplev.c3
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 15010a0..90e86f6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2014-11-19 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/63854
+ * opts.c (finalize_options_struct): New.
+ * opts.h (finalize_options_struct): New.
+ * toplev.c (toplev::finalize): Call finalize_options_struct
+ on global_options and global_options_set.
+
2014-11-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/opts.c b/gcc/opts.c
index a83345b..f3deb40 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -307,6 +307,14 @@ init_options_struct (struct gcc_options *opts, struct gcc_options *opts_set)
targetm_common.option_init_struct (opts);
}
+/* Release any allocations owned by OPTS. */
+
+void
+finalize_options_struct (struct gcc_options *opts)
+{
+ XDELETEVEC (opts->x_param_values);
+}
+
/* If indicated by the optimization level LEVEL (-Os if SIZE is set,
-Ofast if FAST is set, -Og if DEBUG is set), apply the option DEFAULT_OPT
to OPTS and OPTS_SET, diagnostic context DC, location LOC, with language
diff --git a/gcc/opts.h b/gcc/opts.h
index f694082..c3ec942 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -325,6 +325,7 @@ extern void decode_cmdline_options_to_array (unsigned int argc,
extern void init_options_once (void);
extern void init_options_struct (struct gcc_options *opts,
struct gcc_options *opts_set);
+extern void finalize_options_struct (struct gcc_options *opts);
extern void decode_cmdline_options_to_array_default_mask (unsigned int argc,
const char **argv,
struct cl_decoded_option **decoded_options,
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 86c4b81..6021807 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -2170,4 +2170,7 @@ toplev::finalize (void)
ipa_cp_c_finalize ();
ipa_reference_c_finalize ();
params_c_finalize ();
+
+ finalize_options_struct (&global_options);
+ finalize_options_struct (&global_options_set);
}