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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|x86_64-unknown-linux-gnu    |x86
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #5 from Uroš Bizjak <ubizjak at gmail dot com> ---
Fixed for 9.0, no backport planned.
(In reply to Jakub Jelinek from comment #3)
> void foo (void)
> {
>   register int r19 asm ("19");
> }
> 
> ICEs with -g too.
> Similar effects with "16", "argp" or "frame".
> Guess it would be nice to reject these regs somewhere early, but there
> doesn't seem to be a target hook for that.  There is accessible_reg_set
> which only mips uses, wonder if we could make them unaccessible and what
> effect that would have.
> I think it removes those registers from operand_reg_set and thus they
> wouldn't be general_operand though.

It looks to me that accesible_reg_set is intended to disable registers when
certain ISA is not available. x86 disables registers by clearing their names,
in addition to setting fixed_reg flag on the register.

The registers that are now marked as IGNORED_DWARF_REGNUM can sneak to dwarf2
processing via invalid code paths, so they should be marked as ignored
nevertheless.

I'll play a bit with accessible_reg_set, maybe we can also disable unavailable
reg in a more elegant way than currently implemented. This is something to
consider after the release branch is branched, though.

Reply via email to