gcc/libgcc/config/h8300
Jan Dubiec 898f22d158 [PATCH] H8/300, libgcc: PR target/114222 For HImode call internal ffs() implementation instead of an external one
When INT_TYPE_SIZE < BITS_PER_WORD gcc emits a call to an external ffs()
implementation instead of a call to "__builtin_ffs()" – see function
init_optabs() in <SRCROOT>/gcc/optabs-libfuncs.cc. External ffs()
(which is usually the one from newlib) in turn calls __builtin_ffs()
what causes infinite recursion and stack overflow. This patch overrides
default gcc bahaviour for H8/300H (and newer) and provides a generic
ffs() implementation for HImode.

	PR target/114222
gcc/ChangeLog:

	* config/h8300/h8300.cc (h8300_init_libfuncs): For HImode override
	calls to external ffs() (from newlib) with calls to __ffshi2() from
	libgcc. The implementation of ffs() in newlib calls __builtin_ffs()
	what causes infinite recursion and finally a stack overflow.

libgcc/ChangeLog:

	* config/h8300/t-h8300: Add __ffshi2().
	* config/h8300/ffshi2.c: New file.
2025-03-01 08:21:16 -07:00
..
clzhi2.c Update copyright years. 2025-01-02 11:59:57 +01:00
crti.S Update copyright years. 2025-01-02 11:59:57 +01:00
crtn.S Update copyright years. 2025-01-02 11:59:57 +01:00
ctzhi2.c Update copyright years. 2025-01-02 11:59:57 +01:00
ffshi2.c [PATCH] H8/300, libgcc: PR target/114222 For HImode call internal ffs() implementation instead of an external one 2025-03-01 08:21:16 -07:00
fixunssfsi.c Update copyright years. 2025-01-02 11:59:57 +01:00
h8300-lib.h
lib1funcs.S Update copyright years. 2025-01-02 11:59:57 +01:00
parityhi2.c Update copyright years. 2025-01-02 11:59:57 +01:00
popcounthi2.c Update copyright years. 2025-01-02 11:59:57 +01:00
sfp-machine.h Update copyright years. 2025-01-02 11:59:57 +01:00
t-h8300 [PATCH] H8/300, libgcc: PR target/114222 For HImode call internal ffs() implementation instead of an external one 2025-03-01 08:21:16 -07:00
t-linux