From 3198835b85b9a35906bf93ba8f510762e8e017b9 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
Date: Wed, 31 Jul 2013 14:20:07 -0400
Subject: [PATCH 04/15] Zero-initialize pass_manager
Ensure that pass_manager instances are fully zero-initialized, by
providing an operator new, implemented using xcalloc.
gcc/
* passes.c (pass_manager::operator new): New.
---
gcc/pass_manager.h | 2 ++
gcc/passes.c | 7 +++++++
2 files changed, 9 insertions(+)
@@ -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);
@@ -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),
--
1.7.11.7