From a3ee90fd3dc5d5c98f63a16f9cdd788c5d5c3335 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Fri, 31 Oct 2025 14:35:41 -0700 Subject: [PATCH] ipa: Fix pritting of symtab_node type [PR122512] The problem here r16-4747-g529c25ed6e0a06 changed symtab_type to toplevel_type and then added 2 types at the begining but didn't update symtab_type_names. This obvious patch changes symtab_type_names to toplevel_type_names, adds a _MAX type to toplevel_type and a comment about keeping them in sync. Also adds an static assert to make sure if someone adds a toplevel_type that toplevel_type_names get updated too. Pushed as obvious after a build and test. PR ipa/122512 gcc/ChangeLog: * cgraph.h (enum toplevel_type): Add TOPLEVEL_MAX. Add comment about keeping toplevel_type_names in sync. * symtab.cc (symtab_type_names): Rename to ... (toplevel_type_names): Add new types and add an assert about the size. (symtab_node::get_symtab_type_string): Use toplevel_type_names instead of symtab_type_names. (symtab_node::dump_base): Likewise. Signed-off-by: Andrew Pinski --- gcc/cgraph.h | 5 ++++- gcc/symtab.cc | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/gcc/cgraph.h b/gcc/cgraph.h index a937d0a574a..aa2207b1dd2 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -38,6 +38,8 @@ class ipa_opt_pass_d; typedef ipa_opt_pass_d *ipa_opt_pass; /* Toplevel consists of functions, variables and assembly. + Make sure toplevel_type_names in symtab.cc is kept in sync + with this. TODO: add labels and CONST_DECLs. */ enum toplevel_type { @@ -45,7 +47,8 @@ enum toplevel_type TOPLEVEL_ASM, SYMTAB_SYMBOL, SYMTAB_FUNCTION, - SYMTAB_VARIABLE + SYMTAB_VARIABLE, + TOPLEVEL_MAX }; /* Section names are stored as reference counted strings in GGC safe hashtable diff --git a/gcc/symtab.cc b/gcc/symtab.cc index 20dfe09ec2f..fb2aca5f4f7 100644 --- a/gcc/symtab.cc +++ b/gcc/symtab.cc @@ -873,7 +873,16 @@ symtab_node::dump_referring (FILE *file) fprintf (file, "\n"); } -static const char * const symtab_type_names[] = {"symbol", "function", "variable"}; +static const char * const toplevel_type_names[] = +{ + "base", + "asm", + "symbol", + "function", + "variable", +}; + +static_assert (ARRAY_SIZE(toplevel_type_names)==TOPLEVEL_MAX); /* Dump the visibility of the symbol. */ @@ -889,7 +898,7 @@ symtab_node::get_visibility_string () const const char * symtab_node::get_symtab_type_string () const { - return symtab_type_names[type]; + return toplevel_type_names[type]; } /* Dump base fields of symtab nodes to F. Not to be used directly. */ @@ -904,7 +913,7 @@ symtab_node::dump_base (FILE *f) fprintf (f, "%s (%s)", dump_asm_name (), name ()); if (dump_flags & TDF_ADDRESS) dump_addr (f, " @", (void *)this); - fprintf (f, "\n Type: %s", symtab_type_names[type]); + fprintf (f, "\n Type: %s", toplevel_type_names[type]); if (definition) fprintf (f, " definition"); -- 2.47.3