Dear all,

we have an ARM Cortex-A8 board where we are running our application. I am in 
charge of maintaining the Linux on it and the toolchain/SDK setup. So far we've 
been running Poky/OpenEmbedded and using the cross compiler that came about 
during the compilation.

For easier maintenance, we are now switching to Linaro. The image is set up and 
I can compile, however I notice a peculiar fact: the binary distribution of 
Linaro's gcc 
(https://launchpad.net/linaro-toolchain-binaries/trunk/2012.10/+download/gcc-linaro-arm-linux-gnueabihf-4.7-2012.10-20121022_linux.tar.bz2)
 has a significantly larger compilation speed than a version of 
arm-linux-gnueabihf-gcc that is shipping with Ubuntu. In our particular case, 
using Ubuntu's version it takes less than 6 minutes to compile our software, 
but 10 minutes when we use Linaro's version. The makefiles and source are 
exactly the same, only the compiler is different. I also tried an older version 
(4.6) of Linaro's gcc to match the Ubuntu one (tested the 12.04 shipped 
version), with no significant difference.

Compiler flags for the system are -march=armv7-a -mtune=cortex-a8 -mfpu=neon 
-mfloat-abi=hard

Running with -ftime-report, most of the additional time seems to be spent in 
the parser. Adding -fno-graphite-identity -fno-graphite for Linaro's gcc did 
not make a difference.

I believe I tried to use crosstool-ng to make my own version, but I don't 
remember the results as this was over 7 weeks ago. I also did not have a chance 
to compare performance of the binaries. I do notice a difference in compilation 
sizes (4.8 MB for Ubuntu's 4.6 version, 4.1 MB for Linaro's 4.7 versions - 
can't test anything other right now).

I would like to use Linaro's gcc as the crosscompiler for our project, as it is 
an easy setup. Repackaging Ubuntu's version is an option, though (some of the 
team do not use Ubuntu, plus I'd like everybody to use EXACTLY the same version 
of the crosscompiler). So there is no real "problem" for me, per se, but I am 
extremely curious as to what is going on here. It seems that Linaro's gcc has 
additional patches or maybe just different default settings that cause 
additional time to be spent in the parser. It would be interesting to know what 
exactly this is and whether/how it can be disabled in those cases where time of 
compilation is more important than e.g. performance gain.

TIA for replying.

Best

Frank

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to