on Linux 2.6.18-164.11.1.el5 #1 SMP Wed Jan 20 12:36:24 CET 2010 x86_64 x86_64 x86_64 GNU/Linux gcc version 4.6.0 20100408 (experimental) (GCC) and GNU C++ (GCC) version 4.5.0 (x86_64-unknown-linux-gnu)
#include<cmath> float sqr(float x) { return std::pow(x,2);} produces 0000000000000020 <sqr(float)>: 20: 0f 14 c0 unpcklps %xmm0,%xmm0 23: 0f 5a c0 cvtps2pd %xmm0,%xmm0 26: f2 0f 59 c0 mulsd %xmm0,%xmm0 2a: 66 0f 14 c0 unpcklpd %xmm0,%xmm0 2e: 66 0f 5a c0 cvtpd2ps %xmm0,%xmm0 32: c3 retq 33: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 39: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) when compiled with c++ -O2 -std=gnu++0x while c++ -O2 emits (as expected) 0000000000000020 <sqr(float)>: 20: f3 0f 59 c0 mulss %xmm0,%xmm0 24: c3 retq 25: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) compilation step details c++ -O2 -std=gnu++0x -c -v assocMath.cpp Using built-in specs. COLLECT_GCC=c++ COLLECT_LTO_WRAPPER=/afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: /build/LCG/work/gcc-4.5.0_20100409/configure --prefix=/afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt --with-mpfr=/afs/cern.ch/sw/lcg/external/mpfr/2.4.2/x86_64-slc5-gcc43-opt --with-gmp=/afs/cern.ch/sw/lcg/external/gmp/4.3.2/x86_64-slc5-gcc43-opt --with-mpc=/afs/cern.ch/sw/lcg/external/mpc/0.8.1/x86_64-slc5-gcc43-opt --enable-lto --with-libelf=/afs/cern.ch/sw/lcg/external/libelf/0.8.13/x86_64-slc5-gcc43-opt --with-ppl=/afs/cern.ch/sw/lcg/external/ppl/0.10.2/x86_64-slc5-gcc43-opt --with-cloog=/afs/cern.ch/sw/lcg/external/cloog-ppl/0.15.7/x86_64-slc5-gcc43-opt --enable-languages=c,c++,fortran --disable-werror Thread model: posix gcc version 4.6.0 20100408 (experimental) (GCC) COLLECT_GCC_OPTIONS='-O2' '-std=gnu++0x' '-c' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' /afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/cc1plus -quiet -v -D_GNU_SOURCE assocMath.cpp -quiet -dumpbase assocMath.cpp -mtune=generic -march=x86-64 -auxbase assocMath -O2 -std=gnu++0x -version -o /tmp/innocent/ccQs7YW8.s GNU C++ (GCC) version 4.6.0 20100408 (experimental) (x86_64-unknown-linux-gnu) compiled by GNU C version 4.6.0 20100408 (experimental), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 ignoring nonexistent directory "/afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../x86_64-unknown-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../include/c++/4.6.0 /afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../include/c++/4.6.0/x86_64-unknown-linux-gnu /afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../include/c++/4.6.0/backward /usr/local/include /afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/include /afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/include /afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/include-fixed /usr/include End of search list. GNU C++ (GCC) version 4.6.0 20100408 (experimental) (x86_64-unknown-linux-gnu) compiled by GNU C version 4.6.0 20100408 (experimental), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 Compiler executable checksum: c599e68b8adba71320a274af3bca4ed6 COLLECT_GCC_OPTIONS='-O2' '-std=gnu++0x' '-c' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' as -V -Qy --64 -o assocMath.o /tmp/innocent/ccQs7YW8.s GNU assembler version 2.17.50.0.6-12.el5 (x86_64-redhat-linux) using BFD version 2.17.50.0.6-12.el5 20061020 COMPILER_PATH=/afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/:/afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/:/afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/libexec/gcc/x86_64-unknown-linux-gnu/:/afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/:/afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/lib/gcc/x86_64-unknown-linux-gnu/ LIBRARY_PATH=/afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/:/afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/afs/cern.ch/sw/lcg/contrib/gcc/4.5.0_20100409/x86_64-slc5-gcc43-opt/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-O2' '-std=gnu++0x' '-c' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' same with GNU C++ (GCC) version 4.5.0 (x86_64-unknown-linux-gnu) compiled by GNU C version 4.5.0, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1 if fixed please backport to 4.5.x -- Summary: std::pow(float) converts to double when compiled with - std=gnu++0x Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: vincenzo dot innocente at cern dot ch GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45542