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.