https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122041

--- Comment #10 from Petr Sumbera <sumbera at volny dot cz> ---
Adding -flto and -O3 also for test.c does seem make the difference.

I also had to modify test.c to use calculated crc value like this. Otherwise
call  to crc32_update_no_xor() was probably completely optimized out (and the
test ended immediately).

--- test.c
+++ test.c
@@ -29,6 +29,7 @@
     }

     free(buf);
+    printf("Last crc was %x\n", crc);
     return 0;
 }

==

PATH=/usr/gcc/15/bin/:/usr/bin/ gmake test
gcc -flto -O3 -o test.o -c test.c                                               
gcc -flto -O3 -funroll-loops -mcpu=niagara4 -mtune=niagara4 -o crc-gcc.o -c
crc.c
gcc -flto -o test-gcc test.o crc-gcc.o                                          
/opt/developerstudio12.6/bin/cc -m64 -xO4 -xtarget=generic -xarch=sparcvis
-xchip=generic -xregs=no%appl -xmemalign=16s -o crc-studio.o -c crc.c
gcc -o test-studio test.o crc-studio.o                                          
time ./test-gcc              
Last crc was 6d0c33d0                                                           

real       10.8                                                                 
user       10.8              
sys         0.0                                                                 
time ./test-studio           
Last crc was 6d0c33d0                                                           

real       14.6                                                                 
user       14.6              
sys         0.0      

==

Note that this is the original crc.c with memcpy.

Reply via email to