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

--- Comment #2 from Richard Earnshaw <rearnsha at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #1)
> I've looked for constraints that include [ijnIJKLMNO] together with [mo] and
> couldn't find any.  So, not really sure what note_invalid_constants is
> supposed to handle (why would reload let a constant get through as constant
> if it required only memory).

GCC simply doesn't know how to deal with architectures that don't have
unlimited offsets from the PC for the constant pool without generating stupidly
bad code.  So we run an additional pass late on to fix up constants that aren't
valid by dumping them into 'minipools' that get inlined within the function
code.  We do this by using special constraints to handle this, knowing that the
final pass will deal with them.

All *real* patterns in the back-end can deal with this; but this artificial asm
is confusing things.  Perhaps for ASM insns we should just skip them entirely
and assume that the user knows what they are doing, but I'm worried that users
might somehow be relying on the existing behaviour.

Reply via email to