On Mon, Sep 3, 2012 at 1:46 PM, Georg-Johann Lay <a...@gjlay.de> wrote:
> Gabriel Dos Reis schrieb:
>
>> On Mon, Sep 3, 2012 at 11:29 AM, Georg-Johann Lay <a...@gjlay.de> wrote:
>>>
>>> AVR-Libc comes with hand-optimized float support functions written
>>> in assembler.  These functions use the same naming conventions like
>>> libgcc.  There are situations where this name clashed lead to performance
>>> regression because the functions from libgcc are linked.  One example
>>> are the new fixed-point support that convert fixed-point to/from float
>>> and reference float/int conversion functions from within libgcc.
>>>
>>> The float implementation in libm.a have been discussed several times
>>> with the only result that it is very unlikely that the code will
>>> ever be integrated into libgcc because the original authors are no
>>> more around.  And is is much less work to add a new configure switch
>>> than to port and integrate the code, given there were no license issues.
>>> One point against such an extension was that such change to the compiler
>>> establishes a dependency between the compiler and AVR-Libc, but this
>>> decision has been made long ago by accepting code that actually should
>>> had been added to libgcc -- but was not for whatever reason.
>>>
>>> This patch removes that performance regressions by removing the
>>> doubly implemented functions from libgcc by means of a new configure
>>> option --with-avrlibc.
>>
>>
>> Johann,
>>
>> as I stated yesterday, I do not understand why there needs to be yet
>> another
>> configure option. The NATURAL libc for ARV targets is ARV-libc.  We
>> should not need a switch for that.
>
>
> There is also newlib that is used with avr-gcc.  I know this because
> some bugs are only triggered for newlib.  If there are users that
> report bugs if avr-gcc is build for newlib, I'd guess these users are
> actually interested in using newlib.

I did not say there was no other libc library.  I said
that the *natural* libc appears to be AVR-libc.

We don't configure GCC/g++ saying --with-libstdc++.

-- Gaby

>
> It's clear that the proposed changes do *not* work with newlib
> because newlib does not mimic parts of libgcc.
>
> Johann
>
>
>>> Moreover, some specs are adjusted so that -lm is treated very much like
>>> -lgcc so that the user need not specify -lm by hand for core float
>>> support like int/float conversions.
>>>
>>> Without this patch, LTO compilations also lead to performance regression
>>> because lto adds -plugin-opt=-pass-through=-lgcc etc. prior to the -lm
>>> specified by the user.
>>>
>>> Other cases where code is improved are C++ programs, see PR28718 for a
>>> discussion.
>>>
>>>
>>> There are less fails in gcc.dg/fixed-point, presumably because the
>>> rounding
>>> is as expected by the test cases, i.e. there are no rounding errors as
>>> mentioned in the review for PR54222:
>>> http://gcc.gnu.org/ml/gcc-patches/2012-08/msg01586.html
>>>
>>> Ok to install?
>>>
>>>
>>> Johann
>>>
>>>
>>>         PR target/54461
>>>         * configure.ac (noconfigdirs,target=avr-*-*): Add target-newlib,
>>>         target-libgloss if configured --with-avrlibc.
>>>         * configure: Regenerate.
>>>
>>> libgcc/
>>>         PR target/54461
>>>         * config.host (tmake_file,host=avr-*-*): Add avr/t-avrlibc if
>>>         configured --with-avrlibc.
>>>         * config/avr/t-avrlibc: New file.
>>>
>>> gcc/
>>>         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.
>>
>>
>

Reply via email to