This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug inline-asm/11819] rejects-valid: GCC inline assembler rejects valid MMX constraints


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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



------- Additional Comments From pinskia at physics dot uc dot edu  2003-08-06 14:11 -------
But the problem is that in and out can be still be register allocated with the same register. Use this 
instead: "=&y".
>From http://gcc.gnu.org/onlinedocs/gcc/Modifiers.html#Modifiers:
&      
Means (in a particular alternative) that this operand is an earlyclobber operand, which is modified 
before the instruction is finished using the input operands.  Therefore, this operand may not lie in 
a register that is used as an input operand or as part of any memory address.       

& applies only to the alternative in which it is written.  In constraints with multiple alternatives, 
sometimes one alternative requires & while others do not.  See, for example, the movdf insn of the 
68000.       

An input operand can be tied to an earlyclobber operand if its only use as an input occurs before 
the early result is written.  Adding alternatives of this form often allows GCC to produce better 
code when only some of the inputs can be affected by the earlyclobber.  See, for example, the 
mulsi3 insn of the ARM.       

& does not obviate the need to write =.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]