diff options
author | David Malcolm <dmalcolm@redhat.com> | 2014-11-19 19:08:29 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2014-11-19 19:08:29 +0000 |
commit | 0ef443cf01de9153f66d9327784c6137d387dade (patch) | |
tree | 3e05b6e27cfe2411e105ee9403deb3eeafd30ef0 /gcc | |
parent | 3bdf0a9ba51c25ab13d5f37e311d77c12aca55ae (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/opts.c | 8 | ||||
-rw-r--r-- | gcc/opts.h | 1 | ||||
-rw-r--r-- | gcc/toplev.c | 3 |
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> @@ -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 @@ -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); } |