I just noticed we have a spare flag bit in gimple_statement_base
which causes subcode to start at bit 15 with consequences for
code-generation on the very frequent accesses to this field.  Oops.

This is a regression from 4.6 which has

  /* Padding to get subcode to 16 bit alignment.  */
  unsigned pad                  : 1;

eeeh ...

This is caused by improper reversion of

2012-02-28  Aldy Hernandez  <al...@redhat.com>

        PR middle-end/51752
        * gimple.h (gimple_in_transaction): New.
        (gimple_set_in_transaction): New.
        (struct gimple_statement_base): Add in_transaction field.

Committed to all affected branches as obvious.

Richard.

2014-04-01  Richard Biener  <rguent...@suse.de>

        * gimple.h (struct gimple_statement_base): Align subcode to
        16 bits.

Index: gcc/gimple.h
===================================================================
--- gcc/gimple.h        (revision 208975)
+++ gcc/gimple.h        (working copy)
@@ -166,6 +166,9 @@ struct GTY((desc ("gimple_statement_stru
   /* Nonzero if this statement contains volatile operands.  */
   unsigned has_volatile_ops    : 1;
 
+  /* Unused.  Make sure to align subcode to 16 bits.  */
+  unsigned pad                 : 1;
+
   /* The SUBCODE field can be used for tuple-specific flags for tuples
      that do not require subcodes.  Note that SUBCODE should be at
      least as wide as tree codes, as several tuples store tree codes

Reply via email to