https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97715
--- Comment #17 from Qing Zhao <qing.zhao at oracle dot com> --- > On Nov 4, 2020, at 10:08 AM, ubizjak at gmail dot com > <gcc-bugzi...@gcc.gnu.org> wrote: >> >> 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? > > fixed_regs members are only set with -ffixed-REG, in addition to members, > initialized by the target-dependent initializer. It is not a bug. Yes. Then, we need to check whether the register is in “accessible_reg_set” to exclude it from being Zeroed as Jacub suggested in Comment #14. That looks like a better fix.