diff options
author | David Malcolm <dmalcolm@redhat.com> | 2013-08-20 00:54:49 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2013-08-20 00:54:49 +0000 |
commit | e42c64cb6dca35a4979db08706033d89b94f196f (patch) | |
tree | 05efba88a6ac6bfe88226db36b3f7150d78b74bb /gcc/context.c | |
parent | 910c02a071adeae2000fedcfeba2172154f52c0d (diff) | |
download | gcc-e42c64cb6dca35a4979db08706033d89b94f196f.zip gcc-e42c64cb6dca35a4979db08706033d89b94f196f.tar.gz gcc-e42c64cb6dca35a4979db08706033d89b94f196f.tar.bz2 |
Make opt_pass and gcc::pass_manager be GC-managed
2013-08-20 David Malcolm <dmalcolm@redhat.com>
Make opt_pass and gcc::pass_manager be GC-managed, so that pass
instances can own GC refs.
* Makefile.in (GTFILES): Add pass_manager.h and tree-pass.h.
* context.c (gcc::context::gt_ggc_mx): Traverse passes_.
(gcc::context::gt_pch_nx): Likewise.
(gcc::context::gt_pch_nx): Likewise.
* ggc.h (gt_ggc_mx <T>): New.
(gt_pch_nx_with_op <T>): New.
(gt_pch_nx <T>): New.
* passes.c (opt_pass::gt_ggc_mx): New.
(opt_pass::gt_pch_nx): New.
(opt_pass::gt_pch_nx_with_op): New.
(pass_manager::gt_ggc_mx): New.
(pass_manager::gt_pch_nx): New.
(pass_manager::gt_pch_nx_with_op): New.
(pass_manager::operator new): Use
ggc_internal_cleared_alloc_stat rather than xcalloc.
* pass_manager.h (class pass_manager): Add GTY((user)) marking.
(pass_manager::gt_ggc_mx): New.
(pass_manager::gt_pch_nx): New.
(pass_manager::gt_pch_nx_with_op): New.
* tree-pass.h (class opt_pass): Add GTY((user)) marking.
(opt_pass::operator new): New.
(opt_pass::gt_ggc_mx): New.
(opt_pass::gt_pch_nx): New.
(opt_pass::gt_pch_nx_with_op): New.
From-SVN: r201865
Diffstat (limited to 'gcc/context.c')
-rw-r--r-- | gcc/context.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/context.c b/gcc/context.c index ba6f335..698cc57 100644 --- a/gcc/context.c +++ b/gcc/context.c @@ -42,18 +42,18 @@ gcc::context::context() void gcc::context::gt_ggc_mx () { - /* Currently a no-op. */ + ::gt_ggc_mx (passes_); } void gcc::context::gt_pch_nx () { - /* Currently a no-op. */ + ::gt_pch_nx (passes_); } void gcc::context::gt_pch_nx (gt_pointer_operator op ATTRIBUTE_UNUSED, void *cookie ATTRIBUTE_UNUSED) { - /* Currently a no-op. */ + op (&passes_, cookie); } |