As for GGC(GCC Garbage Collection), it's use gengtype tool to scan all
source files contain the GTY mark, and generate gt-*.h files. GGC
traversal these file to find gt_root node and marks these objects that
directly or indirectly reference this node as active, then clean up
unmarked object's memory.
For the loongarch-builtins.cc file, it is necessary to add
target_gtfiles in config.gcc to generate gt-loongarch-builtins.h, and
include this header file in the .cc file, prevented the data marked
with GTY in this `.cc` file cleaned up by ggc.
gcc/ChangeLog:
* config.gcc: Add target_gtfiles.
* config/loongarch/loongarch-builtins.cc: Add header file.
extra_headers="larchintrin.h lsxintrin.h lasxintrin.h"
extra_objs="loongarch-c.o loongarch-builtins.o loongarch-cpu.o loongarch-opts.o loongarch-def.o loongarch-evolution.o loongarch-target-attr.o"
extra_gcc_objs="loongarch-driver.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
+ target_gtfiles="\$(srcdir)/config/loongarch/loongarch-builtins.cc"
extra_options="${extra_options} g.opt fused-madd.opt"
;;
nds32*)
{
return ptr_type_node;
}
+
+#include "gt-loongarch-builtins.h"