tag 418795 + moreinfo
thanks

please recheck with gcc-4.2 and gcc-4.3/gcc-snapshot

Wouter Koolen-Wijkstra writes:
> Package: gcc-4.1
> Version: 4.1.1-21
> Severity: normal
> 
> 
> I am profiling an application that performs a lot of log2(.) operations. I 
> wanted to use
> -funsafe-math-optimizations to have log2 executed by the FPU directly, 
> instead of using
> a function call to the c library. Strangely enough, although wall-clock time 
> and CPU time
> go down, the number of seconds that gprof reports now roughly quadruples, 
> exceeding the
> total CPU time by a factor of two.
> 
> The attached c++ file reproduces the problem. I get
> 
> ** run without -funsafe-math-optimizations **
> g++ -pg test.cpp && time ./a.out && gprof ./a.out
> 8.01531e+09
> 
> real    0m42.432s
> user    0m42.143s
> sys     0m0.148s
> Flat profile:
> 
> Each sample counts as 0.01 seconds.
>   %   cumulative   self              self     total
>  time   seconds   seconds    calls  Ts/call  Ts/call  name
> 100.00     13.11    13.11                             main
>   0.00     13.11     0.00        1     0.00     0.00  global constructors 
> keyed to main
>   0.00     13.11     0.00        1     0.00     0.00  
> __static_initialization_and_destruction_0(int, int)          
> 
> ** run with -funsafe-math-optimizations **
> g++ -funsafe-math-optimizations -pg test.cpp && time ./a.out && gprof ./a.out
> 8.01531e+09
> 
> real    0m30.165s
> user    0m29.898s
> sys     0m0.060s
> Flat profile:
> 
> Each sample counts as 0.01 seconds.
>   %   cumulative   self              self     total
>  time   seconds   seconds    calls  Ts/call  Ts/call  name
> 100.00     74.87    74.87                             main
>   0.00     74.87     0.00        1     0.00     0.00  global constructors 
> keyed to main
>   0.00     74.87     0.00        1     0.00     0.00  
> __static_initialization_and_destruction_0(int, int)          
> 
> 
> Notice that when enabling -funsafe-math-optimizations
> - wall clock time goes down from 43 to 31 sec.
> - gprof time goes up from 14 to 75 sec.
> - it is strange that 
>  * without -funsafe-math-optimizations the gprof time (14 sec) is much lower  
> than wall clock time (43 sec)
>  * with    -funsafe-math-optimizations the gprof time (75 sec) is much higher 
> than wall clock time (31 sec)
> 
> the first (*) can be explained by samples that occur in the log2 system call.
> the second (*) can not be correct. I suspect that the instrumentation code 
> that gcc inserts into the 
> compiled program expects the FPU to be in a specific IEEE/ansi state, which 
> it is not when the
> -funsafe-math-optimizations flag is used.
> 
> With kind regards,
> 
> Wouter Koolen-Wijkstra
> 
> 
> -- System Information:
> Debian Release: lenny/sid
>   APT prefers testing
>   APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable')
> Architecture: i386 (i686)
> 
> Kernel: Linux 2.6.18v10 (SMP w/2 CPU cores; PREEMPT)
> Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)
> Shell: /bin/sh linked to /bin/bash
> 
> Versions of packages gcc-4.1 depends on:
> ii  binutils                    2.17-3       The GNU assembler, linker and 
> bina
> ii  cpp-4.1                     4.1.1-21     The GNU C preprocessor
> ii  gcc-4.1-base                4.1.1-21     The GNU Compiler Collection 
> (base 
> ii  libc6                       2.3.6.ds1-13 GNU C Library: Shared libraries
> ii  libgcc1                     1:4.1.1-21   GCC support library
> ii  libssp0                     4.1.1-21     GCC stack smashing protection 
> libr
> 
> Versions of packages gcc-4.1 recommends:
> ii  libc6-dev                   2.3.6.ds1-13 GNU C Library: Development 
> Librari
> pn  libmudflap0-dev             <none>       (no description available)
> 
> -- no debconf information
> #include <cmath>
> #include <iostream>
> using namespace std;
> 
> int main(int argc, const char ** argv) {
>   // do something that takes noticeable time (~30 sec)
>   // and that does many floating point operations
>   double d = 0;
>   for (int i = 1; i < 300000000; i++) {
>     d += log2(i);
>   }
>   cout << d << endl;
>   return 0;
> }



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to