For historical reasons, AVR-Libc implements functions that GCC expects to live in libgcc, namely float functions like __fixsfsi. Currently, avr-gcc is not configurable to accommodate that situation which leads to performance loss if the float support functions from libgcc are used. This happens at least in the following situations: * The user does not specify -lm. -lm should only be needed if function from math.h are used, not for language core features like int i = (int) float. * The application is LTO compiled, i.e. linked with -flto. The plugin machinery passes lgcc -lc lgcc through to the linker by means of -plugin-opt=-pass-through=-lgcc etc. so that -lgcc is linked prior to -lm. * The user uses fixed <-> float conversion routines from libgcc. These routines refer float functions, and the linker resolves these function in libgcc if they are there. * avr-g++ is used as linker driver. See also PR28718 and http://lists.gnu.org/archive/html/avr-gcc-list/2012-08/msg00070.html
Author: gjl Date: Wed Sep 5 08:47:50 2012 New Revision: 190967 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=190967 Log: PR target/54461 * configure.ac (noconfigdirs,target=avr-*-*): Add target-newlib, target-libgloss if not configured --with-avrlibc=no. * configure: Regenerate. libgcc/ PR target/54461 * config.host (tmake_file,host=avr-*-*): Add avr/t-avrlibc if not configured --with-avrlibc=no. * config/avr/t-avrlibc: New file. * Makefile.in (FPBIT_FUNCS): filter-out LIB2FUNCS_EXCLUDE. (DPBIT_FUNCS): Ditto. (TPBIT_FUNCS): Ditto. gcc/ PR target/54461 * config.gcc (tm_file,target=avr-*-*): Add avr/avrlibc.h if not configured --with-avrlibc=no. (tm_defines,target=avr-*-*): Add WITH_AVRLIBC if not configured --with-avrlibc=no. * config/avr/avrlibc.h: New file. * config/avr/avr-c.c: Build-in define __WITH_AVRLIBC__ if not configured --with-avrlibc=no. * doc/invoke.texi (AVR Built-in Macros): Document __WITH_AVRLIBC__ Added: trunk/gcc/config/avr/avrlibc.h trunk/libgcc/config/avr/t-avrlibc Modified: trunk/ChangeLog trunk/configure trunk/configure.ac trunk/gcc/ChangeLog trunk/gcc/config.gcc trunk/gcc/config/avr/avr-c.c trunk/gcc/doc/invoke.texi trunk/libgcc/ChangeLog trunk/libgcc/Makefile.in trunk/libgcc/config.host
Author: gjl Date: Wed Sep 5 12:19:47 2012 New Revision: 190973 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=190973 Log: Backport from 2012-09-05 mainline r190697. PR target/54461 * configure.ac (noconfigdirs,target=avr-*-*): Add target-newlib, target-libgloss if configured --with-avrlibc. * configure: Regenerate. libgcc/ Backport from 2012-09-05 mainline r190697. PR target/54461 * config.host (tmake_file,host=avr-*-*): Add avr/t-avrlibc if configured --with-avrlibc. * Makefile.in (FPBIT_FUNCS): filter-out LIB2FUNCS_EXCLUDE. (DPBIT_FUNCS): Ditto. (TPBIT_FUNCS): Ditto. * config/avr/t-avrlibc: New file. gcc/ Backport from 2012-09-05 mainline r190697. PR target/54461 * config.gcc (tm_file,target=avr-*-*): Add avr/avrlibc.h if configured --with-avrlibc. (tm_defines,target=avr-*-*): Add WITH_AVRLIBC if configured --with-avrlibc. * config/avr/avrlibc.h: New file. * config/avr/avr-c.c: Build-in define __WITH_AVRLIBC__ if configured --with-avrlibc. * doc/invoke.texi (AVR Built-in Macros): Document __WITH_AVRLIBC__ Added: branches/gcc-4_7-branch/gcc/config/avr/avrlibc.h branches/gcc-4_7-branch/libgcc/config/avr/t-avrlibc Modified: branches/gcc-4_7-branch/ChangeLog branches/gcc-4_7-branch/configure branches/gcc-4_7-branch/configure.ac branches/gcc-4_7-branch/gcc/ChangeLog branches/gcc-4_7-branch/gcc/config.gcc branches/gcc-4_7-branch/gcc/config/avr/avr-c.c branches/gcc-4_7-branch/gcc/doc/invoke.texi branches/gcc-4_7-branch/libgcc/ChangeLog branches/gcc-4_7-branch/libgcc/Makefile.in branches/gcc-4_7-branch/libgcc/config.host
Fixed in 4.7.2
*** Bug 28718 has been marked as a duplicate of this bug. ***
Author: gjl Date: Mon Jan 7 16:22:59 2013 New Revision: 194981 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194981 Log: Backport from 2013-01-07 trunk r194978. PR target/54461 * doc/install.texi (Cross-Compiler-Specific Options): Document --with-avrlibc. Modified: branches/gcc-4_7-branch/gcc/ChangeLog branches/gcc-4_7-branch/gcc/doc/install.texi