inline-asm/10396: Constraint alternatives cause error " `asm' operand requires impossible reload"
Pete Gonzalez
gonz@ratloop.com
Tue May 6 01:45:00 GMT 2003
I tried the example again with the GCC 3.3 prerelease (20030428),
but the "impossible reload" error is still being generated.
For reference, here is the section from gcc/reload1.c which produces
the error message:
/* Substitute the chosen reload regs from reload_reg_rtx
into the insn's body (or perhaps into the bodies of other
load and store insn that we just made for reloading
and that we moved the structure into). */
subst_reloads (insn);
/* If this was an ASM, make sure that all the reload insns
we have generated are valid. If not, give an error
and delete them. */
if (asm_noperands (PATTERN (insn)) >= 0)
for (p = NEXT_INSN (prev); p != next; p = NEXT_INSN (p))
if (p != insn && INSN_P (p)
&& GET_CODE (PATTERN (p)) != USE
&& (recog_memoized (p) < 0
|| (extract_insn (p), ! constrain_operands (1))))
{
error_for_asm (insn,
"`asm' operand requires impossible reload");
delete_insn (p);
}
Once again, each of the constraint alternatives works fine by itself;
it is only the combination of three alternatives that introduces the
error.
More information about the Gcc-bugs
mailing list