[committed] d: Disable the D runtime garbage collector after initializing (PR103520)
Commit Message
Hi,
This patch disables the D runtime garbage collector after initializing.
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.
Bootstrapped and regression tested on aarch64-linux-gnu, and committed
to mainline.
Regards,
Iain.
---
gcc/d/ChangeLog:
PR d/103520
* d-frontend.h (gc_disable): Declare.
* d-lang.cc (d_init_options): Disable the D runtime garbage collector
after initializing.
---
gcc/d/d-frontend.h | 2 +-
gcc/d/d-lang.cc | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
@@ -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);
@@ -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 ();