Make opt_pass and gcc::pass_manager be GC-managed
commitcb9c5e769eec31b44e05ff8a5b3bbd975781b5ae
authordmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Aug 2013 00:54:49 +0000 (20 00:54 +0000)
committerdmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Aug 2013 00:54:49 +0000 (20 00:54 +0000)
tree05efba88a6ac6bfe88226db36b3f7150d78b74bb
parent9e1adc64622ceef35e977961aa107816c89c904b
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
gcc/ChangeLog
gcc/Makefile.in
gcc/context.c
gcc/ggc.h
gcc/pass_manager.h
gcc/passes.c
gcc/tree-pass.h