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