diff options
author | David Malcolm <dmalcolm@redhat.com> | 2014-12-01 17:22:19 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2014-12-01 17:22:19 +0000 |
commit | c8d19a69348ddcf0e539022fe89b1dcea3835a59 (patch) | |
tree | 990760a012debff08c2e3175f91ef5fd8c611529 /gcc/jit | |
parent | 9370adeb9da5071af3685adbd697784bdd349cc9 (diff) | |
download | gcc-c8d19a69348ddcf0e539022fe89b1dcea3835a59.zip gcc-c8d19a69348ddcf0e539022fe89b1dcea3835a59.tar.gz gcc-c8d19a69348ddcf0e539022fe89b1dcea3835a59.tar.bz2 |
PR jit/63854: Fix leak within jit-builtins.c
gcc/jit/ChangeLog:
PR jit/63854
* jit-builtins.c
(gcc::jit::recording::builtins_manager::make_fn_type): Call the
context's new_function_type method, rather than directly creating
a function_type instance.
* jit-recording.c
(gcc::jit::recording::context::new_function_type): New method,
adapted from part of...
(gcc::jit::recording::context::new_function_ptr_type): ...this.
Update to call new_function_type.
* jit-recording.h
(gcc::jit::recording::context::new_function_type): New method.
From-SVN: r218231
Diffstat (limited to 'gcc/jit')
-rw-r--r-- | gcc/jit/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/jit/jit-builtins.c | 9 | ||||
-rw-r--r-- | gcc/jit/jit-recording.c | 33 | ||||
-rw-r--r-- | gcc/jit/jit-recording.h | 6 |
4 files changed, 51 insertions, 12 deletions
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog index 9555e72..c103eb2 100644 --- a/gcc/jit/ChangeLog +++ b/gcc/jit/ChangeLog @@ -1,5 +1,20 @@ 2014-12-01 David Malcolm <dmalcolm@redhat.com> + PR jit/63854 + * jit-builtins.c + (gcc::jit::recording::builtins_manager::make_fn_type): Call the + context's new_function_type method, rather than directly creating + a function_type instance. + * jit-recording.c + (gcc::jit::recording::context::new_function_type): New method, + adapted from part of... + (gcc::jit::recording::context::new_function_ptr_type): ...this. + Update to call new_function_type. + * jit-recording.h + (gcc::jit::recording::context::new_function_type): New method. + +2014-12-01 David Malcolm <dmalcolm@redhat.com> + PR jit/63969 * jit-playback.c: Ensure that ctxt_progname is non-NULL. diff --git a/gcc/jit/jit-builtins.c b/gcc/jit/jit-builtins.c index 07902e8..49d37d8 100644 --- a/gcc/jit/jit-builtins.c +++ b/gcc/jit/jit-builtins.c @@ -398,11 +398,10 @@ builtins_manager::make_fn_type (enum jit_builtin_type, if (!return_type) goto error; - result = new function_type (m_ctxt, - return_type, - num_args, - param_types, - is_variadic); + result = m_ctxt->new_function_type (return_type, + num_args, + param_types, + is_variadic); error: delete[] param_types; diff --git a/gcc/jit/jit-recording.c b/gcc/jit/jit-recording.c index 8069afc..32bf034 100644 --- a/gcc/jit/jit-recording.c +++ b/gcc/jit/jit-recording.c @@ -492,6 +492,27 @@ recording::context::new_union_type (recording::location *loc, return result; } +/* Create a recording::function_type instance and add it to this context's + list of mementos. + + Used by new_function_ptr_type and by builtins_manager::make_fn_type. */ + +recording::function_type * +recording::context::new_function_type (recording::type *return_type, + int num_params, + recording::type **param_types, + int is_variadic) +{ + recording::function_type *fn_type + = new function_type (this, + return_type, + num_params, + param_types, + is_variadic); + record (fn_type); + return fn_type; +} + /* Create a recording::type instance and add it to this context's list of mementos. @@ -505,13 +526,11 @@ recording::context::new_function_ptr_type (recording::location *, /* unused loc recording::type **param_types, int is_variadic) { - recording::function_type *fn_type = - new function_type (this, - return_type, - num_params, - param_types, - is_variadic); - record (fn_type); + recording::function_type *fn_type + = new_function_type (return_type, + num_params, + param_types, + is_variadic); /* Return a pointer-type to the the function type. */ return fn_type->get_pointer (); diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h index 4ea8ef1..9b2cfc6 100644 --- a/gcc/jit/jit-recording.h +++ b/gcc/jit/jit-recording.h @@ -88,6 +88,12 @@ public: new_union_type (location *loc, const char *name); + function_type * + new_function_type (type *return_type, + int num_params, + type **param_types, + int is_variadic); + type * new_function_ptr_type (location *loc, type *return_type, |