Zero-initialize pass_manager
authorDavid Malcolm <dmalcolm@redhat.com>
Mon, 5 Aug 2013 20:04:02 +0000 (20:04 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Mon, 5 Aug 2013 20:04:02 +0000 (20:04 +0000)
gcc/

* passes.c (pass_manager::operator new): New.

From-SVN: r201506

gcc/ChangeLog
gcc/pass_manager.h
gcc/passes.c

index ffa880bac65be067ef173815d117acadbafd68d7..b985e37aec35a12273f40a07a5d1d9bda7741fc4 100644 (file)
@@ -1,3 +1,7 @@
+2013-08-05  David Malcolm  <dmalcolm@redhat.com>
+
+       * passes.c (pass_manager::operator new): New.
+
 2013-08-05  David Malcolm  <dmalcolm@redhat.com>
 
        Handwritten part of conversion of passes to C++ classes.
index ea078a5eb66d612ff0f4146978f3c319c287f6b5..00f0b1c50f4f53b094ee7f39a057b4279dc9d942 100644 (file)
@@ -47,6 +47,8 @@ class context;
 class pass_manager
 {
 public:
+  void *operator new (size_t sz);
+
   pass_manager(context *ctxt);
 
   void register_pass (struct register_pass_info *pass_info);
index fcbd630dd8811023deb23707c8bb8d53ebe3864b..8efce30b6e6ebf59b22b884ceb763471b4c4dcd9 100644 (file)
@@ -1339,6 +1339,13 @@ pass_manager::register_pass (struct register_pass_info *pass_info)
                                        -> all_passes
 */
 
+void *
+pass_manager::operator new (size_t sz)
+{
+  /* Ensure that all fields of the pass manager are zero-initialized.  */
+  return xcalloc (1, sz);
+}
+
 pass_manager::pass_manager (context *ctxt)
 : all_passes(NULL), all_small_ipa_passes(NULL), all_lowering_passes(NULL),
   all_regular_ipa_passes(NULL), all_lto_gen_passes(NULL),