diff options
author | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-08-20 00:54:49 +0000 |
---|---|---|
committer | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-08-20 00:54:49 +0000 |
commit | cb9c5e769eec31b44e05ff8a5b3bbd975781b5ae (patch) | |
tree | 05efba88a6ac6bfe88226db36b3f7150d78b74bb /gcc/pass_manager.h | |
parent | 9e1adc64622ceef35e977961aa107816c89c904b (diff) | |
download | gcc-cb9c5e769eec31b44e05ff8a5b3bbd975781b5ae.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201865 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/pass_manager.h')
-rw-r--r-- | gcc/pass_manager.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/pass_manager.h b/gcc/pass_manager.h index 41d2c7605d2..a442bf1868a 100644 --- a/gcc/pass_manager.h +++ b/gcc/pass_manager.h @@ -44,13 +44,19 @@ namespace gcc { class context; -class pass_manager +class GTY((user)) pass_manager { public: + /* Ensure that instances are allocated in the GC-managed heap. */ void *operator new (size_t sz); pass_manager(context *ctxt); + /* GTY((user)) methods. */ + void gt_ggc_mx (); + void gt_pch_nx (); + void gt_pch_nx_with_op (gt_pointer_operator op, void *cookie); + void register_pass (struct register_pass_info *pass_info); void register_one_dump_file (struct opt_pass *pass); @@ -134,4 +140,3 @@ private: } // namespace gcc #endif /* ! GCC_PASS_MANAGER_H */ - |