]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
LoongArch: Fix issue where data marked as GTY is cleaned up by ggc.
authorzhaozhou <zhaozhou@loongson.cn>
Mon, 10 Nov 2025 07:38:26 +0000 (15:38 +0800)
committerLulu Cheng <chenglulu@loongson.cn>
Fri, 14 Nov 2025 01:15:16 +0000 (09:15 +0800)
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.

gcc/config.gcc
gcc/config/loongarch/loongarch-builtins.cc

index d2770ea556b2e4dd8ece4a691f9fac6e45da0f1a..fa3ce390f700d342d0532ce95131563387392eca 100644 (file)
@@ -502,6 +502,7 @@ loongarch*-*-*)
        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*)
index 312d87626a4b5649ee5afcae054d240e01d32423..6c914c07d2998cfe2751021e855cf2b283ad82cd 100644 (file)
@@ -3259,3 +3259,5 @@ loongarch_build_builtin_va_list (void)
 {
   return ptr_type_node;
 }
+
+#include "gt-loongarch-builtins.h"