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

--- Comment #10 from Qing Zhao <qing.zhao at oracle dot com> ---
> On Nov 4, 2020, at 9:45 AM, ubizjak at gmail dot com 
> <gcc-bugzi...@gcc.gnu.org> wrote:
>> fixed registers should already be excluded from zeroing. 
>> are ST registers considered FIXED registers when -mno-80387 is specified?
> 
> They used to be,

I used the following in middle end to exclude fixed registers from being
zeroed:
      if (fixed_regs[regno])
        continue;
So, looks like that ST registers are not included in fixed_regs when
!TARGET_80387. 
Is this a bug in gcc?

> but now they are cleared from accessible_reg_set.
> 
>  /* If the FPU is disabled, disable the registers.  */
>  if (! (TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387))
>    accessible_reg_set &= ~reg_class_contents[FLOAT_REGS];

The above means that ST registers are excluded from the accessible_reg_set,
i.e, they cannot be used in the function body anymore? Then, no need to zero
them?

Is this information available to middle end?
Or I have to delete them from the register set in i386 backend?

Reply via email to