aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2021-12-01 23:56:28 +0100
committerIain Buclaw <ibuclaw@gdcproject.org>2021-12-02 01:46:07 +0100
commitfa10faa72d8e9e97b6e564f8b0a7b602538d0da0 (patch)
treeec8bbec2cec218e2f906408392754d7c110bca3d
parent12421a364548323df7126c6e3e2d0f82ad8fe53a (diff)
downloadgcc-fa10faa72d8e9e97b6e564f8b0a7b602538d0da0.zip
gcc-fa10faa72d8e9e97b6e564f8b0a7b602538d0da0.tar.gz
gcc-fa10faa72d8e9e97b6e564f8b0a7b602538d0da0.tar.bz2
d: Disable the D runtime garbage collector after initializing (PR103520)
Not all targets that support building libdruntime have a stable garbage collector, so to avoid running into problems where live memory allocated by the D GC is freed, disable all in-flight collections until a time when scanning is more reliably implemented everywhere. PR d/103520 gcc/d/ChangeLog: * d-frontend.h (gc_disable): Declare. * d-lang.cc (d_init_options): Disable the D runtime garbage collector after initializing.
-rw-r--r--gcc/d/d-frontend.h2
-rw-r--r--gcc/d/d-lang.cc2
2 files changed, 2 insertions, 2 deletions
diff --git a/gcc/d/d-frontend.h b/gcc/d/d-frontend.h
index 3edf812..e7695d5 100644
--- a/gcc/d/d-frontend.h
+++ b/gcc/d/d-frontend.h
@@ -21,7 +21,7 @@ along with GCC; see the file COPYING3. If not see
/* These functions are defined in D runtime. */
extern "C" int rt_init (void);
extern "C" int rt_term (void);
-//extern "C" void gc_disable (void);
+extern "C" void gc_disable (void);
extern "C" void *gc_malloc (size_t sz, unsigned ba = 0, const void *ti = NULL);
extern "C" void gc_free (void *);
extern "C" void gc_collect (void);
diff --git a/gcc/d/d-lang.cc b/gcc/d/d-lang.cc
index d20370e..dbf7a8b 100644
--- a/gcc/d/d-lang.cc
+++ b/gcc/d/d-lang.cc
@@ -288,7 +288,7 @@ d_init_options (unsigned int, cl_decoded_option *decoded_options)
{
/* Initialize the D runtime. */
rt_init ();
-// gc_disable ();
+ gc_disable ();
/* Set default values. */
global._init ();