> manu at gcc dot gnu dot org wrote: > > ------- Comment #4 from manu at gcc dot gnu dot org 2007-01-23 00:01 > > ------- > > The testcase given is not valid any more. Could you think in any other > > testcase? > > > > In stmt.c (expand_asm_operands) there is: > > > > warning (0, "use of memory input without lvalue in " > > "asm operand %d is deprecated", i + noutputs); > > > > > > Hang on, hang on... > > WTF?! Using an rvalue in an assembly input that may contain "m" is > something that is highly useful, and it will break metric tons of code. > -Wno-deprecated or no -Wno-deprecated, deprecating this particular > construct is a major mistake.
This has been true since 3.3.3 and in fact, this was made an error in 4.0.0, even though the warning remains. Also what is deprecated/removed is not may contain a memory constraint but an input which only contains memory constraints. So: float f(float a) { asm(""::"mo"((double)a)); return a; } Fails but: float f(float a) { asm(""::"mr"((double)a)); return a; } Works. -- Pinski