https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108086

--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #12)
> A regression from GCC 10 which compiles this in 90s at -O1.
> 
> Richard?  Can you please look at this special-case of BB0 insn_info?

The following might be one way to "fix" it (until we do a bigger testcase)

diff --git a/gcc/rtl-ssa/insns.h b/gcc/rtl-ssa/insns.h
index f7215972845..b0144f258b2 100644
--- a/gcc/rtl-ssa/insns.h
+++ b/gcc/rtl-ssa/insns.h
@@ -403,8 +403,7 @@ private:
   // MAX_RECOG_OPERANDS is the maximum number of pseudos that can be
   // defined by an instruction, so the number of definitions should fit
   // easily in 16 bits.
-  unsigned int m_num_uses;
-  unsigned int m_num_defs : 16;
+  unsigned int m_num_uses : 24;

   // Flags returned by the accessors above.
   unsigned int m_is_debug_insn : 1;
@@ -412,9 +411,13 @@ private:
   unsigned int m_is_asm : 1;
   unsigned int m_has_pre_post_modify : 1;
   unsigned int m_has_volatile_refs : 1;
+  // For future expansion.
+  unsigned int m_spare : 3;

+  // Keep 32bit aligned
+  unsigned int m_num_defs : 24;
   // For future expansion.
-  unsigned int m_spare : 11;
+  unsigned int m_spare : 8;

   // The program point at which the instruction occurs.
   //

Reply via email to