[Bug target/96173] double to _Decimal64 or _Decimal128 conversion with BID generates 3 MB of code

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Jul 12 00:58:22 GMT 2020


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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |WONTFIX
             Status|UNCONFIRMED                 |RESOLVED

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
_Decimal128 and _Decimal64 are all software based so there are functions which
implement everything.  The main thing which is actually taking up the space is
the functions for the conversions.

The functions for the conversions are all stored in one .o file:
 .text          0x00000000004005d0    0x10567
/home/apinski/upstream-gcc/lib/gcc/x86_64-pc-linux-gnu/11.0.0/libgcc.a(bid_binarydecimal.o)
                0x00000000004005d0                __bid32_to_binary32
                0x0000000000400bf0                __bid64_to_binary32
                0x0000000000401460                __bid128_to_binary32
                0x0000000000401f10                __bid32_to_binary64
                0x0000000000402460                __bid64_to_binary64
                0x0000000000402b60                __bid128_to_binary64
                0x0000000000403680                __bid32_to_binary80
                0x0000000000403e30                __bid64_to_binary80
                0x0000000000404870                __bid128_to_binary80
                0x0000000000405640                __bid32_to_binary128
                0x0000000000405c10                __bid64_to_binary128
                0x0000000000406430                __bid128_to_binary128
                0x0000000000406fc0                __binary32_to_bid32
                0x0000000000407650                __binary64_to_bid32
                0x0000000000408100                __binary80_to_bid32
                0x0000000000408be0                __binary128_to_bid32
                0x0000000000409990                __binary32_to_bid64
                0x0000000000409fb0                __binary64_to_bid64
                0x000000000040a730                __binary80_to_bid64
                0x000000000040b280                __binary128_to_bid64
                0x000000000040c040                __binary32_to_bid128
                0x000000000040cfa0                __binary64_to_bid128
                0x000000000040e160                __binary80_to_bid128
                0x000000000040f330                __binary128_to_bid128

Since most of the time when using _Decimal128/_Decimal64, you will be using
many of these files, it won't change the size overall to have these functions
in different .o file.


More information about the Gcc-bugs mailing list