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.
This commit is contained in:
Iain Buclaw 2021-12-01 23:56:28 +01:00
parent 12421a3645
commit fa10faa72d
2 changed files with 2 additions and 2 deletions

View file

@ -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);

View file

@ -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 ();