https://gcc.gnu.org/g:5a259d4045bfc25589074364733750b547653e31

commit r17-3201-g5a259d4045bfc25589074364733750b547653e31
Author: Georg-Johann Lay <[email protected]>
Date:   Tue Aug 11 12:37:01 2026 +0200

    AVR: Reduce the number or unused libgcc modules.
    
    This patch adds more modules to LIB2FUNCS_EXCLUDE:
    - Modules for modes that we don't support: [U]TQ, [U]TI, DF.
    - Generic libgcc modules superseded by avr-specific modules.
    
    This reduces the number of modules from more than 1400 to
    less than 1200 for each of the 57 multilib variants.
    
    libgcc/
            * config/avr/t-avr (conv_YX): New variable.
            (LIB2FUNCS_EXCLUDE): Add more modules that handle modes which
            we don't support, or which are handled by avr-specific modules.

Diff:
---
 libgcc/config/avr/t-avr | 50 ++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 41 insertions(+), 9 deletions(-)

diff --git a/libgcc/config/avr/t-avr b/libgcc/config/avr/t-avr
index 56e26870c0df..0b5dd42506e4 100644
--- a/libgcc/config/avr/t-avr
+++ b/libgcc/config/avr/t-avr
@@ -157,6 +157,7 @@ endif
 ###
 
 conv_XY=$(conv)$(mode1)$(mode2)
+conv_YX=$(conv)$(mode2)$(mode1)
 func_X=$(func)$(mode)
 
 # Compile C functions from lib2funcs.c and add them to libgcc.a.
@@ -285,22 +286,28 @@ LIB2FUNCS_EXCLUDE += \
        $(foreach mode,$(usat_modes),$(func_X)))
 
 
-smul_modes =  QQ  HQ  HA  SA
-umul_modes = UQQ UHQ UHA USA
-sdiv_modes =  QQ  HQ  HA  SA
-udiv_modes = UQQ UHQ UHA USA
+smul_modes =  QQ  HQ  HA  SA  DA  DQ  TA
+umul_modes = UQQ UHQ UHA USA UDA UDQ UTA
+sdiv_modes =  QQ  HQ  HA  SA  DA  DQ  TA
+udiv_modes = UQQ UHQ UHA USA UDA UDQ UTA
 
 LIB2FUNCS_EXCLUDE += \
-       $(foreach func,_mul,\
+       $(foreach func,_mul _mulhelper,\
        $(foreach mode,$(smul_modes) $(umul_modes),$(func_X)))
 
 LIB2FUNCS_EXCLUDE += \
-       $(foreach func,_div,\
-       $(foreach mode,$(sdiv_modes) $(udiv_modes),$(func_X)))
+       $(foreach func,_div _divhelper,\
+       $(foreach mode,$(sdiv_modes),$(func_X)))
+
+LIB2FUNCS_EXCLUDE += \
+       $(foreach func,_udiv,\
+       $(foreach mode,$(udiv_modes),$(func_X)))
 
 
-ssmul_modes =  HA  SA
-usmul_modes = UHA USA
+ssmul_modes =  HA  SA  DA  DQ  TA
+usmul_modes = UHA USA UDA UDQ UTA
+ssdiv_modes =  DA  DQ  TA
+usdiv_modes = UDA UDQ UTA
 
 LIB2FUNCS_EXCLUDE += \
        $(foreach func,_usmul,\
@@ -309,3 +316,28 @@ LIB2FUNCS_EXCLUDE += \
 LIB2FUNCS_EXCLUDE += \
        $(foreach func,_ssmul,\
        $(foreach mode,$(ssmul_modes),$(func_X)))
+
+LIB2FUNCS_EXCLUDE += \
+       $(foreach func,_usdiv,\
+       $(foreach mode,$(usdiv_modes),$(func_X)))
+
+LIB2FUNCS_EXCLUDE += \
+       $(foreach func,_ssdiv,\
+       $(foreach mode,$(ssdiv_modes),$(func_X)))
+
+# Remove modes we don't support.
+
+dont_modes = TQ UTQ TI UTI DF
+
+LIB2FUNCS_EXCLUDE += \
+       $(foreach conv,_satfract _satfractuns _fract,\
+       $(foreach mode1,$(dont_modes),\
+       $(foreach mode2,$(convf_modes) SF DF,$(conv_XY) $(conv_YX))))
+
+dont_func  = _mul _mulhelper _ssmul _usmul
+dont_func += _div _divhelper _ssdiv _usdiv _udiv
+dont_func += _saturate1 _saturate2 _ssashl _usashl _ashlhelper _neg
+
+LIB2FUNCS_EXCLUDE += \
+       $(foreach func,$(dont_func),\
+       $(foreach mode,$(dont_modes),$(func_X)))

Reply via email to