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

--- Comment #16 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> 
---
(In reply to Richard Biener from comment #13)
> (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;
The problem is that:

  // The number of definitions and the number uses.  FIRST_PSEUDO_REGISTER + 1
  // is the maximum number of accesses to hard registers and memory, and
  // 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.

holds for real instructions, but not for artificial instructions.
Since we don't have any new justification for a limit less than 32 bits,
I think we'll just have to grow the structure.
  • [Bug rtl-optimization/108086] [... rsandifo at gcc dot gnu.org via Gcc-bugs

Reply via email to