[Bug target/54461] New: [avr] add configure option for better AVR-Libc integration

gjl at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Sep 2 19:32:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54461

             Bug #: 54461
           Summary: [avr] add configure option for better AVR-Libc
                    integration
    Classification: Unclassified
           Product: gcc
           Version: 4.7.1
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: gjl@gcc.gnu.org
        ReportedBy: gjl@gcc.gnu.org
            Target: avr


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



More information about the Gcc-bugs mailing list