------- Comment #8 from pinskia at physics dot uc dot edu 2007-01-23 00:29
-------
Subject: Re: -Wno-deprecated needed also for C
> 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
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11051