From f77f4797010736d9fea7b313b52267d643ebcff7 Mon Sep 17 00:00:00 2001 From: zhaozhou Date: Mon, 10 Nov 2025 15:38:26 +0800 Subject: [PATCH] LoongArch: Fix issue where data marked as GTY is cleaned up by ggc. 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 | 1 + gcc/config/loongarch/loongarch-builtins.cc | 2 ++ 2 files changed, 3 insertions(+) diff --git a/gcc/config.gcc b/gcc/config.gcc index d2770ea556b..fa3ce390f70 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -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*) diff --git a/gcc/config/loongarch/loongarch-builtins.cc b/gcc/config/loongarch/loongarch-builtins.cc index 312d87626a4..6c914c07d29 100644 --- a/gcc/config/loongarch/loongarch-builtins.cc +++ b/gcc/config/loongarch/loongarch-builtins.cc @@ -3259,3 +3259,5 @@ loongarch_build_builtin_va_list (void) { return ptr_type_node; } + +#include "gt-loongarch-builtins.h" -- 2.47.3