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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Georg-Johann Lay from comment #1)
> All I can find is TARGET_C_BITINT_TYPE_INFO.
> 
> * Where to specify that addition should be implemented by a libgcc function
> like addbitint3?

Nowhere, the _BitInt lowering code has no support of library calls except for
multiplication, division and conversions to/from floating point (including
decimal floating point).

> * There are libgcc modules like _mulbitint3.o but they are empty. How to add
> them to, say LIB1ASMFUNCS?

They shouldn't be empty if __BITINT_MAXWIDTH__ etc. macros are predefined.
And those macros are predefined when
targetm.c.bitint_type_info (WIDE_INT_MAX_PRECISION - 1, &info)
is true.

> * Where to specify the limb size for libgcc functions?

Just in the bitint_type_info hook.

(In reply to Georg-Johann Lay from comment #2)
> ...what I currently have for trying is this addition to avr.cc:
> 
> static bool
> avr_c_bitint_type_info (int n, struct bitint_info *info)
> {
>   info->abi_limb_mode = QImode;
>   info->limb_mode = QImode;
>   info->big_endian = false;
>   info->extended = false;
> 
>   return n <= 1024;

Why?  If you just return true; here, it should work (at least perhaps with some
minor libgcc Makefile fragment tweaks so that all the needed routines are
built).

Reply via email to