https://gcc.gnu.org/g:c8ddca48512179b58d32dde4fcfec1d131659526

commit r16-6148-gc8ddca48512179b58d32dde4fcfec1d131659526
Author: Martin Jambor <[email protected]>
Date:   Tue Dec 16 00:44:44 2025 +0100

    gengtype: Avoid Werror bootstrap fail when a subclass has no GTY fields
    
    In a follow-up patch, I have created a GTYed subclass which does not
    have any garbage collectible fields, just integers (a "sibling"
    subclass does).  This leads to gengtype outputting code like this to
    gtype-desc.cc:
    
       2722         case CIIK_SIMPLE:
       2723           {
       2724             cgraph_simple_indirect_info *sub = static_cast 
<cgraph_simple_indirect_info *> (x);
       2725           }
       2726           break;
    
    And because in stage2 of our bootstrap we compile the file with -Wall
    -Werror, this leads to a bootstrap failure because of
    -Werror=unused-variable.
    
    I have briefly looked into building that particular file with
    -Wno-error but did not found a simple way to do that, at least not
    yet.
    
    So instead this patch generates statement "(void) sub;" after each
    such static_assert to avoid the warning in the first place.
    
    gcc/ChangeLog:
    
    2025-10-17  Martin Jambor  <[email protected]>
    
            * gengtype.cc (walk_subclasses): Avoid generating code with unused
            variables.

Diff:
---
 gcc/gengtype.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gcc/gengtype.cc b/gcc/gengtype.cc
index 84c763620472..0f841fa2c2d9 100644
--- a/gcc/gengtype.cc
+++ b/gcc/gengtype.cc
@@ -2635,6 +2635,7 @@ walk_subclasses (type_p base, struct walk_type_data *d,
          d->indent += 2;
          oprintf (d->of, "%*s%s *sub = static_cast <%s *> (x);\n",
                   d->indent, "", sub->u.s.tag, sub->u.s.tag);
+         oprintf (d->of, "%*s(void) sub;\n", d->indent, "");
          const char *old_val = d->val;
          d->val = "(*sub)";
          walk_type (sub, d);

Reply via email to