Kaiweng's patch to stop freeing riscv_arch_string was correct, but
incomplete as there's another path that was freeing that node, which is
just plain wrong for a node allocated by the GC system.
This patch removes that call to free() which fixes the test. I've spun
it in my tester and will obviously wait for the pre-commit system to
render a verdict before moving forward.
Jeff
PR target/119865
gcc/
* config/riscv/riscv.cc (parse_features_for_version): Do not
explicitly free the architecture string.
diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
index d3656a7a430..bad59e248d0 100644
--- a/gcc/config/riscv/riscv.cc
+++ b/gcc/config/riscv/riscv.cc
@@ -13136,9 +13136,6 @@ parse_features_for_version (tree decl,
DECL_SOURCE_LOCATION (decl));
gcc_assert (parse_res);
- if (arch_string != default_opts->x_riscv_arch_string)
- free (CONST_CAST (void *, (const void *) arch_string));
-
cl_target_option_restore (&global_options, &global_options_set,
&cur_target);
}