On Tue, Sep 14, 2010 at 04:30:09PM +0200, tbp wrote:
> Hello,
> I could really use -Wdouble-promotion but, atm, it appears quite impractical,
> $ cat double.cc
> #include <cstdio>
> void foo(...);
> int main() {
>       float f = 1;
>       foo(f);
>       printf("%f", f);
> }
> $ /usr/local/gcc-4.6-20100913/bin/g++ -Wdouble-promotion double.cc
> double.cc: In function 'int main()':
> double.cc:5:7: warning: implicit conversion from 'float' to 'double'
> when passing argument to function [-Wdouble-promotion]
> double.cc:6:16: warning: implicit conversion from 'float' to 'double'
> when passing argument to function [-Wdouble-promotion]
> 
> ... and the interesting bits are lost in the noise. I can't think of a
> workaround.
> So i have to ask: Is that how it's meant to be, or simply a temporary
> shortcoming? Have i missed an obvious kludge?

My two cents, but that looks exactly right to me.  Passing the float
to printf is going to convert it to a double and it will be printed as
a double, so you're unexpectedly adding double-precision operations to
the program.

Does printf("%f", (double) f) suppress the warning?  That's an
explicit conversion instead of an implicit one.

-- 
Daniel Jacobowitz
CodeSourcery

Reply via email to