[Bug middle-end/10396] Constraint alternatives cause error " `asm' operand requires impossible reload"

rearnsha at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Wed Aug 25 17:02:00 GMT 2004


------- Additional Comments From rearnsha at gcc dot gnu dot org  2004-08-25 17:02 -------
>  asm("# %0 %1 %2 %3"
>  : "=&r"(result), "=&r"(temp) // outputs
>    : "%r"(*mantissaA), "01r"(*mantissaB - *mantissaA)  // inputs
>  );

This shorter example is bogus.  You can't tie a single output operand to
multiple input operands.

I think the underlying problem here is that we don't really support alternatives
in asm constraints (see, for example asm_operand_ok, which basically ignores ','
-- hence the reason the bogus example produces the same behaviour).

Maybe we should just document this as a limitation of inline assembly and change
the compiler to reject asm patterns that have multiple alternatives.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|rtl-optimization            |middle-end
 GCC target triplet|arm-arm-elf                 |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10396



More information about the Gcc-bugs mailing list